Find decaying pages or queries
The tool finds pages or queries whose decline has held across several whole periods. A drop from one window to the window before it is not enough. That drop cannot separate a decline from a bad month. Two shapes are reported, and they call for different checks. sustained means the series is still falling from period to period. stepped means one drop that has held since. A lost ranking, a redirect, or a page removed from the index looks like a step. For a step, decliningPeriods is 0, because the series is flat at the lower level. changepoint names the period the level changed, and the two levels on either side. Read the two engines differently. A Google period with no row arrives as 0. A Bing period with no row arrives as null, because Bing's feeds are a limited top list, and a missing row there is not a fall. The Google zero is what the row limit undermines. On a period Google cut, that zero is a missing row. A run of those missing rows looks like the decline this tool looks for. 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_content_decayThe tool finds pages or queries whose decline has held across several whole periods.
A drop from one window to the window before it is not enough. That drop cannot separate a decline from a bad month.
Two shapes are reported, and they call for different checks. sustained means the series is still falling from period to period. stepped means one drop that has held since. A lost ranking, a redirect, or a page removed from the index looks like a step. For a step, decliningPeriods is 0, because the series is flat at the lower level. changepoint names the period the level changed, and the two levels on either side.
Read the two engines differently. A Google period with no row arrives as 0. A Bing period with no row arrives as null, because Bing's feeds are a limited top list, and a missing row there is not a fall.
The Google zero is what the row limit undermines. On a period Google cut, that zero is a missing row. A run of those missing rows looks like the decline this tool looks for.
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 | Decay pages (the usual question) or queries. Defaults to "page". |
granularity | "weekly" | "monthly" | No | Length of one period in the series: weekly or monthly. Daily is not offered. These tools ask whether a change held across periods, and a one-day period would measure weekday patterns instead. Defaults to "monthly". |
periods | integer | No | How many whole periods to read. If the period that contains the end date is still in progress, the tool leaves it out. The response names that period in periodWindow.excludedPartialPeriod. Defaults to 6. |
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 over the whole window for an entity to be read at all. This floor is on the whole range. A floor on each period would delete the quiet periods a decline ends in. Defaults to 50. |
minDecliningPeriods | integer | No | Consecutive falling periods required for sustained. Defaults to 3. |
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": "page", "description": "Decay pages (the usual question) or queries.", "type": "string", "enum": [ "query", "page" ] }, "granularity": { "default": "monthly", "description": "Length of one period in the series: weekly or monthly. Daily is not offered. These tools ask whether a change held across periods, and a one-day period would measure weekday patterns instead.", "type": "string", "enum": [ "weekly", "monthly" ] }, "periods": { "default": 6, "type": "integer", "minimum": 2, "maximum": 104, "description": "How many whole periods to read. If the period that contains the end date is still in progress, the tool leaves it out. The response names that period in periodWindow.excludedPartialPeriod." }, "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": 50, "description": "Minimum impressions over the whole window for an entity to be read at all. This floor is on the whole range. A floor on each period would delete the quiet periods a decline ends in.", "type": "integer", "minimum": 0, "maximum": 9007199254740991 }, "minDecliningPeriods": { "default": 3, "description": "Consecutive falling periods required for `sustained`.", "type": "integer", "minimum": 2, "maximum": 12 }, "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" }, "periodWindow": { "type": "object", "properties": { "granularity": { "type": "string" }, "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "window": { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": [ "start", "end" ], "additionalProperties": false }, "periodStarts": { "type": "array", "items": { "type": "string" } }, "excludedPartialPeriod": { "anyOf": [ { "type": "object", "properties": { "start": { "type": "string" }, "end": { "type": "string" } }, "required": [ "start", "end" ], "additionalProperties": false }, { "type": "null" } ] } }, "required": [ "granularity", "periods", "window", "periodStarts", "excludedPartialPeriod" ], "additionalProperties": {} }, "rows": { "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "google": { "anyOf": [ { "type": "object", "properties": { "pattern": { "type": "string" }, "metric": { "type": "string" }, "decliningPeriods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "dropFromPeak": { "type": "number" }, "estimatedClicksLost": { "type": "number" }, "changepoint": { "anyOf": [ { "type": "object", "properties": { "periodStart": { "type": "string" }, "before": { "type": "object", "properties": { "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ctr": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "clicksPerPeriod": { "type": "number" }, "impressionsPerPeriod": { "type": "number" } }, "required": [ "periods", "clicks", "impressions", "position", "ctr", "clicksPerPeriod", "impressionsPerPeriod" ], "additionalProperties": {} }, "after": { "type": "object", "properties": { "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ctr": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "clicksPerPeriod": { "type": "number" }, "impressionsPerPeriod": { "type": "number" } }, "required": [ "periods", "clicks", "impressions", "position", "ctr", "clicksPerPeriod", "impressionsPerPeriod" ], "additionalProperties": {} } }, "required": [ "periodStart", "before", "after" ], "additionalProperties": {} }, { "type": "null" } ] }, "series": { "type": "array", "items": { "type": "object", "properties": { "periodStart": { "type": "string" }, "clicks": { "anyOf": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" } ] }, "impressions": { "anyOf": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" } ] }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "periodStart", "clicks", "impressions", "position" ], "additionalProperties": {} } } }, "required": [ "pattern", "metric", "decliningPeriods", "dropFromPeak", "estimatedClicksLost", "changepoint", "series" ], "additionalProperties": {} }, { "type": "null" } ] }, "bing": { "anyOf": [ { "type": "object", "properties": { "pattern": { "type": "string" }, "metric": { "type": "string" }, "decliningPeriods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "dropFromPeak": { "type": "number" }, "estimatedClicksLost": { "type": "number" }, "changepoint": { "anyOf": [ { "type": "object", "properties": { "periodStart": { "type": "string" }, "before": { "type": "object", "properties": { "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ctr": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "clicksPerPeriod": { "type": "number" }, "impressionsPerPeriod": { "type": "number" } }, "required": [ "periods", "clicks", "impressions", "position", "ctr", "clicksPerPeriod", "impressionsPerPeriod" ], "additionalProperties": {} }, "after": { "type": "object", "properties": { "periods": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "clicks": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "impressions": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "ctr": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "clicksPerPeriod": { "type": "number" }, "impressionsPerPeriod": { "type": "number" } }, "required": [ "periods", "clicks", "impressions", "position", "ctr", "clicksPerPeriod", "impressionsPerPeriod" ], "additionalProperties": {} } }, "required": [ "periodStart", "before", "after" ], "additionalProperties": {} }, { "type": "null" } ] }, "series": { "type": "array", "items": { "type": "object", "properties": { "periodStart": { "type": "string" }, "clicks": { "anyOf": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" } ] }, "impressions": { "anyOf": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" } ] }, "position": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "periodStart", "clicks", "impressions", "position" ], "additionalProperties": {} } } }, "required": [ "pattern", "metric", "decliningPeriods", "dropFromPeak", "estimatedClicksLost", "changepoint", "series" ], "additionalProperties": {} }, { "type": "null" } ] }, "totalEstimatedClicksLost": { "type": "number" } }, "required": [ "label", "google", "bing", "totalEstimatedClicksLost" ], "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", "periodWindow", "rows", "unsupportedInputs" ], "additionalProperties": false}