/v1/brands/{brand_id}/search-console/performance Read Search Console performance
What the brand's site earned in Google: clicks, impressions, CTR and average position, split by dimension (query, page, country, device or date). totals is the site-wide total for the window (totals.key says whether it is the site's own figure or the sum of the rows). CTR is a percentage. dimension=query reads every query Search Console exposes for the window live from Google (kept five minutes), most clicks first, paged with limit (1-1000, default 1000) and offset; total counts them all and has_more says another page follows. On a very large site the first read of a window can take a minute or more; calls for the same window share that read, and it finishes even when the caller gives up, so a retry a minute later is served from the kept copy. The other dimensions come whole from the stored snapshot: the top 1000 pages, 300 countries, every device, one row per day. Pass query with dimension=date to get one query's history day by day, read live from Google; totals stays the site's, not that query's.
With dimension=query: search keeps the queries holding that text (case and spacing ignored) and order_by (query, clicks, impressions, ctr or position) with order_dir (asc or desc, default desc) sorts them, ties broken by the query. country (the full English name, e.g. United States) reads dimension=query or dimension=page in that country only, live from Google and kept five minutes per window and country like the queries; totals stays the site's.
engine=bing reads the same numbers from the brand's Bing Webmaster Tools site instead (connected in the app): dimension query, page or date, every query paged with limit and offset, every page whole; query, search, order_by and country are Google only. Bing is read again every six hours. Without a Bing site the call answers integration_not_connected with the page to connect it.
start_date and end_date are YYYY-MM-DD; they default to the last 28 days up to today. Search Console lags two to three days: data_through says how far it is complete.
Path parameters
-
Brand UUID.
Query parameters
-
google(Search Console, the default) orbing(Bing Webmaster Tools).one of google, bing · default: google
-
What each row stands for.
one of query, page, country, device, date · default: query
-
With
dimension=date, the query whose history to return. -
With
dimension=query, only queries holding this text. -
With
dimension=query, the column to sort by. -
Sort direction. Default
desc.one of asc, desc · default: desc
-
With
dimension=queryorpage, only searches from this country (full English name). -
First day of the window (YYYY-MM-DD).
-
Last day of the window (YYYY-MM-DD).
-
With
dimension=query, or a country, rows per page.default: 1000
-
With
dimension=query, or a country, rows to skip.default: 0
-
Preview the call without executing it. Runs auth, scope, eligibility and body validation, then returns
200with adry_runobject reporting the request-unit and credit cost plus a non-consuming quota snapshot. Nothing is debited, reserved, dispatched or mutated. An invalid body still returns422.default: false
Responses
-
Rows for the dimension, most clicks first (by day for
date).queryis every query Search Console exposes for the window, a page at a time; the other dimensions come whole from the stored snapshot: the top 1000 pages, 300 countries, every device, one row per day. -
What each row stands for.
-
Rows the dimension holds for the window, across every page.
- data_through string (nullable) nullable
Last day Search Console has complete data for; it lags two to three days.
- date_range_end string (nullable) nullable
- date_range_start string (nullable) nullable
- engine enum
google(Search Console) orbing(Bing Webmaster Tools), as asked. - has_more boolean
With
dimension=query, true when more queries follow: raiseoffset. - last_sync_at string (nullable) nullable
When Google was last read for this window; null when nothing is stored for it. Refresh when it is null or old.
- object string
- query string (nullable) nullable
Set when the rows are one query's history by date.
- site_url string (nullable) nullable
The connected Search Console site, or the Bing Webmaster Tools site with
bing. - totals SearchRow (nullable) nullable
Totals for the window.
keyissitewhen they come from a site-wide query, andsum_of_rowswhen only the rows were stored. Withquerythey stay the site's, not that query's.
-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "validation_error",
"message": "Request validation failed"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid credentials"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "forbidden",
"message": "You do not have permission to access this resource"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "not_found",
"message": "Resource not found"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "conflict",
"message": "Resource conflict"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "rate_limit_exceeded",
"message": "Per-minute rate limit exceeded"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}-
Show fields
-
Stable machine-readable error code from the catalog.
-
Human-readable description suitable for logging.
- details object
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
-
- request_id string
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "service_unavailable",
"message": "Service temporarily unavailable, please retry"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}