Find cross-engine performance gaps
The tool finds queries or pages where Google and Bing differ by a wide margin in the current window. Both engines must be connected for this site. If one is not connected, that is not a gap. The tool returns no rows and says why in unsupportedInputs. The tool cannot compare image or video search. Bing has no image or video split, so set searchVertical to web. Bing updates position about once a week, so read a position gap as a weekly change. 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_cross_engine_gapsThe tool finds queries or pages where Google and Bing differ by a wide margin in the current window.
Both engines must be connected for this site. If one is not connected, that is not a gap. The tool returns no rows and says why in unsupportedInputs.
The tool cannot compare image or video search. Bing has no image or video split, so set searchVertical to web. Bing updates position about once a week, so read a position gap as a weekly change.
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
| Parameter | Type | Required | Notes |
|---|---|---|---|
site | string | Yes | 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 | "query" | "page" | No | Group the rows by query or by page. Defaults to "query". |
windowDays | integer | No | Length of the current window, in days. Defaults to 28. |
to | string | No | Last day of the current window (YYYY-MM-DD). Defaults to the most recent date either engine has data for. |
minImpressions | integer | No | Minimum impressions on the leading engine to consider a row. Defaults to 10. |
minGapRatio | number | No | Minimum (larger / smaller) ratio, on clicks or impressions, to flag a row as a gap. Defaults to 2. |
limit | integer | No | Maximum rows to return, sorted by relevance. Defaults to 50. |
searchVertical | "web" | "image" | "video" | No | 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. Defaults to "web". |
Full input JSON SchemaTypes, defaults and validation rules
{ "$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 impressions on the leading engine to consider a row.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "minGapRatio": { "default": 2, "description": "Minimum (larger / smaller) ratio, on clicks or impressions, to flag a row as a gap.", "type": "number", "exclusiveMinimum": 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
{ "$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": { "type": "object", "properties": { "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "clicks", "impressions", "position" ], "additionalProperties": {} }, "bing": { "type": "object", "properties": { "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "clicks", "impressions", "position" ], "additionalProperties": {} }, "leadingEngine": { "type": "string", "enum": [ "google", "bing" ] }, "clicksGapRatio": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "impressionsGapRatio": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "label", "google", "bing", "leadingEngine", "clicksGapRatio", "impressionsGapRatio" ], "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}