Composway Docs
Tool reference

Find low-hanging keywords

High-impression queries ranking just off page one, with an estimated click uplift if promoted to the site's own page-one (`pos1_3`) CTR - built from the site's own current-window rows, not an industry benchmark.

Tool name: find_low_hanging_keywords

Cost: Free - not billed, and does not draw on a plan quota.

Read-only

This tool only reads. It never creates or changes anything, so an assistant may call it without asking you first.

High-impression queries ranking just off page one, with an estimated click uplift if promoted to the site's own page-one (pos1_3) CTR - built from the site's own current-window rows, not an industry benchmark. estimatedUpliftClicks is null where the site has too little page-one data of its own to project from. Branded queries are excluded by default - you cannot optimize your way up your own brand's SERP, and their outlier CTR would inflate the page-one target every other row is measured against. Set excludeBranded=false to see them; if the workspace has no brand terms configured, that is reported in unsupportedInputs rather than silently ignored. Google stores only about 5,000 rows per day per single-dimension breakdown once a day is more than roughly three days old, so on a large site these rows are a top-N by impressions rather than a complete list. When that applies to the window you asked for, the response says so in unsupportedInputs with the dates - there is nothing to fetch, so read a missing row as 'not in the top ~5,000', never as 'zero'.

Parameters

ParameterTypeRequiredNotes
sitestringYesThe site to look up, as a bare domain ("example.com") or a URL - scheme, www., path and trailing slash are all stripped. Must resolve to a workspace the caller owns; call list_sites first if unsure of the exact domain.
windowDaysintegerNoLength of the current window, in days. Defaults to 28.
tostringNoLast day of the current window (YYYY-MM-DD). Defaults to the most recent date either engine has data for.
positionMinnumberNoLower bound (inclusive) of the 'close to page one' band. Defaults to 4.
positionMaxnumberNoUpper bound (inclusive) of the 'close to page one' band. Defaults to 20.
minImpressionsintegerNoMinimum current-window impressions to consider a query. Defaults to 10.
excludeBrandedbooleanNoDrop queries containing the workspace's brand terms. Inspect or change those with get/set_workspace_brand_terms. Defaults to true.
limitintegerNoMaximum rows to return, sorted by relevance. Defaults to 50.
searchVertical"web" | "image" | "video"NoWhich Google search vertical to read: web (default), image, or video. Google-only - Bing Webmaster Tools does not split verticals on any traffic endpoint, so anything other than 'web' returns Google alone, with Bing excluded and declared in unsupportedInputs. A null or absent Bing figure then means 'not measurable', never 'zero'. Defaults to "web".
Full input JSON Schema
{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"type": "object",
	"properties": {
		"site": {
			"type": "string",
			"minLength": 1,
			"description": "The site to look up, as a bare domain (\"example.com\") or a URL - scheme, www., path and trailing slash are all stripped. Must resolve to a workspace the caller owns; call list_sites first if unsure of the exact domain."
		},
		"windowDays": {
			"default": 28,
			"description": "Length of the current window, in days.",
			"type": "integer",
			"exclusiveMinimum": 0,
			"maximum": 365
		},
		"to": {
			"description": "Last day of the current window (YYYY-MM-DD). Defaults to the most recent date either engine has data for.",
			"type": "string"
		},
		"positionMin": {
			"default": 4,
			"description": "Lower bound (inclusive) of the 'close to page one' band.",
			"type": "number",
			"minimum": 1
		},
		"positionMax": {
			"default": 20,
			"description": "Upper bound (inclusive) of the 'close to page one' band.",
			"type": "number",
			"minimum": 1
		},
		"minImpressions": {
			"default": 10,
			"description": "Minimum current-window impressions to consider a query.",
			"type": "integer",
			"minimum": 0,
			"maximum": 9007199254740991
		},
		"excludeBranded": {
			"default": true,
			"description": "Drop queries containing the workspace's brand terms. Inspect or change those with get/set_workspace_brand_terms.",
			"type": "boolean"
		},
		"limit": {
			"default": 50,
			"description": "Maximum rows to return, sorted by relevance.",
			"type": "integer",
			"exclusiveMinimum": 0,
			"maximum": 500
		},
		"searchVertical": {
			"default": "web",
			"description": "Which Google search vertical to read: web (default), image, or video. Google-only - Bing Webmaster Tools does not split verticals on any traffic endpoint, so anything other than 'web' returns Google alone, with Bing excluded and declared in `unsupportedInputs`. A null or absent Bing figure then means 'not measurable', never 'zero'.",
			"type": "string",
			"enum": ["web", "image", "video"]
		}
	},
	"required": ["site"]
}

Response

Full output JSON Schema
{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"type": "object",
	"properties": {
		"site": {
			"type": "string"
		},
		"workspaceId": {
			"type": "string",
			"format": "uuid",
			"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
		},
		"searchVertical": {
			"type": "string",
			"enum": ["web", "image", "video"]
		},
		"currentWindow": {
			"type": "object",
			"properties": {
				"start": {
					"type": "string"
				},
				"end": {
					"type": "string"
				}
			},
			"required": ["start", "end"],
			"additionalProperties": false
		},
		"rows": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"label": {
						"type": "string"
					},
					"google": {
						"anyOf": [
							{
								"type": "object",
								"properties": {
									"position": {
										"type": "number"
									},
									"impressions": {
										"type": "integer",
										"minimum": -9007199254740991,
										"maximum": 9007199254740991
									},
									"clicks": {
										"type": "integer",
										"minimum": -9007199254740991,
										"maximum": 9007199254740991
									},
									"ctr": {
										"type": "number"
									},
									"estimatedUpliftClicks": {
										"anyOf": [
											{
												"type": "number"
											},
											{
												"type": "null"
											}
										]
									}
								},
								"required": [
									"position",
									"impressions",
									"clicks",
									"ctr",
									"estimatedUpliftClicks"
								],
								"additionalProperties": {}
							},
							{
								"type": "null"
							}
						]
					},
					"bing": {
						"anyOf": [
							{
								"type": "object",
								"properties": {
									"position": {
										"type": "number"
									},
									"impressions": {
										"type": "integer",
										"minimum": -9007199254740991,
										"maximum": 9007199254740991
									},
									"clicks": {
										"type": "integer",
										"minimum": -9007199254740991,
										"maximum": 9007199254740991
									},
									"ctr": {
										"type": "number"
									},
									"estimatedUpliftClicks": {
										"anyOf": [
											{
												"type": "number"
											},
											{
												"type": "null"
											}
										]
									}
								},
								"required": [
									"position",
									"impressions",
									"clicks",
									"ctr",
									"estimatedUpliftClicks"
								],
								"additionalProperties": {}
							},
							{
								"type": "null"
							}
						]
					}
				},
				"required": ["label", "google", "bing"],
				"additionalProperties": {}
			}
		},
		"unsupportedInputs": {
			"type": "array",
			"items": {
				"type": "object",
				"properties": {
					"field": {
						"type": "string"
					},
					"engine": {
						"anyOf": [
							{
								"type": "string"
							},
							{
								"type": "null"
							}
						]
					},
					"reason": {
						"type": "string"
					}
				},
				"required": ["field", "reason"],
				"additionalProperties": {}
			}
		},
		"lastSyncedAt": {
			"anyOf": [
				{
					"type": "string"
				},
				{
					"type": "null"
				}
			]
		}
	},
	"required": [
		"site",
		"workspaceId",
		"searchVertical",
		"currentWindow",
		"rows",
		"unsupportedInputs"
	],
	"additionalProperties": false
}

On this page