Find CTR opportunities

The tool finds queries or pages whose click rate is well below the rate the site's own ranking curve predicts for that position. The curve is for the whole site. There is no curve by country or by device. The response says so in unsupportedInputs. Google keeps about 5,000 rows per day for each single breakdown once a day is more than about three days old. On a large site the tool is reading the top queries or pages by impressions. Google no longer stores the rest. If that applies to this window, the response names the dates in unsupportedInputs. A missing row means it was outside that list. Google no longer has the row, so there is nothing further to fetch.

find_ctr_opportunities

The tool finds queries or pages whose click rate is well below the rate the site's own ranking curve predicts for that position.

The curve is for the whole site. There is no curve by country or by device. The response says so in unsupportedInputs.

Google keeps about 5,000 rows per day for each single breakdown once a day is more than about three days old. On a large site the tool is reading the top queries or pages by impressions. Google no longer stores the rest.

If that applies to this window, the response names the dates in unsupportedInputs. A missing row means it was outside that list. Google no longer has the row, so there is nothing further to fetch.

Parameters

ParameterTypeRequiredNotes
sitestringYesThe site to look up, as a bare domain ("example.com") or a URL. The tool strips the scheme, www, path, and trailing slash. The site must belong to a workspace you own. Call list_sites first if you are not sure of the exact domain.
by"query" | "page"NoGroup the rows by query or by page. Defaults to "query".
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.
minImpressionsintegerNoMinimum current-window impressions to consider a row. Defaults to 10.
underperformanceRationumberNoHow far below the expected CTR (as a fraction of it) a row must fall to be flagged, e.g. 0.3 = at least 30% below. Defaults to 0.3.
limitintegerNoMaximum rows to return, sorted by relevance. Defaults to 50.
searchVertical"web" | "image" | "video"NoWhich Google search type to read: web (the default), image, or video. Bing Webmaster Tools does not split search types on any traffic report, so image and video return Google only. The response records that Bing was left out, in unsupportedInputs. A missing Bing number then means Bing was not measured. Defaults to "web".
Full input JSON SchemaTypes, defaults and validation rules
json
{  "$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. The tool strips the scheme, www, path, and trailing slash. The site must belong to a workspace you own. Call list_sites first if you are not sure of the exact domain."    },    "by": {      "default": "query",      "description": "Group the rows by query or by page.",      "type": "string",      "enum": [        "query",        "page"      ]    },    "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"    },    "minImpressions": {      "default": 10,      "description": "Minimum current-window impressions to consider a row.",      "type": "integer",      "minimum": 0,      "maximum": 9007199254740991    },    "underperformanceRatio": {      "default": 0.3,      "description": "How far below the expected CTR (as a fraction of it) a row must fall to be flagged, e.g. 0.3 = at least 30% below.",      "type": "number",      "exclusiveMinimum": 0,      "maximum": 1    },    "limit": {      "default": 50,      "description": "Maximum rows to return, sorted by relevance.",      "type": "integer",      "exclusiveMinimum": 0,      "maximum": 500    },    "searchVertical": {      "default": "web",      "description": "Which Google search type to read: web (the default), image, or video. Bing Webmaster Tools does not split search types on any traffic report, so image and video return Google only. The response records that Bing was left out, in unsupportedInputs. A missing Bing number then means Bing was not measured.",      "type": "string",      "enum": [        "web",        "image",        "video"      ]    }  },  "required": [    "site"  ]}

Response

Full output JSON SchemaEvery field the response can contain
json
{  "$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"      ]    },    "by": {      "type": "string"    },    "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"                  },                  "expectedCtr": {                    "type": "number"                  },                  "residual": {                    "type": "number"                  }                },                "required": [                  "position",                  "impressions",                  "clicks",                  "ctr",                  "expectedCtr",                  "residual"                ],                "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"                  },                  "expectedCtr": {                    "type": "number"                  },                  "residual": {                    "type": "number"                  }                },                "required": [                  "position",                  "impressions",                  "clicks",                  "ctr",                  "expectedCtr",                  "residual"                ],                "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",    "by",    "currentWindow",    "rows",    "unsupportedInputs"  ],  "additionalProperties": false}

On This Page