Search Console

Search Console time series (Growth+)

Changed on

Google Search Console series (impressions, clicks, ctr, position) bucketed by day, week or month, property-wide unless filters narrows it. Requires a connected Search Console property (Growth+). X-Search-Console-Backend identifies stored or live reads. Stored reads use synced data without contacting Google. Live reads return ERR_SEARCH_CONSOLE_ACCESS_REVOKED (403) for revoked Google access; reconnect the property in Preferences > Project Settings > Data Connections. They return ERR_SEARCH_CONSOLE_UPSTREAM (503) when Google Search Console is unavailable or over quota; wait for the number of seconds in Retry-After before retrying.

get/search_console/timeseries

Request

  • Base URL
    https://api.llmpulse.ai/api/v1
  • URL
    https://api.llmpulse.ai/api/v1/search_console/timeseries
  • Auth
    API key in header Authorization

Query parameters

project_idinteger required

Project ID

rangeinteger

Number of days to look back, today included (alternative to from/to). At most 487, Google's retention.

fromstring date

Start date (YYYY-MM-DD). Defaults to 30 days ago.

tostring date

End date (YYYY-MM-DD), inclusive. Defaults to today. Google publishes data with a 2-3 day lag, so data_through in the response says how far it reaches.

granularity'day' | 'week' | 'month'
output'flat' | 'csv'

Rectangular output for BI tools (Tableau, Excel, Sheets, ELT). Omit for the default nested JSON. 'flat' returns the same metadata plus 'columns' and 'rows'; 'csv' returns those rows as text/csv. Errors are always returned as JSON.

search_type'web' | 'image' | 'video' | 'news' | 'discover' | 'googleNews'

Which search surface to measure. Defaults to web. discover and googleNews carry no query dimension, so Google rejects /search_console/queries for them.

filtersstring

Narrow the query; every entry must match (AND). Send the whole list as one JSON value: filters=[{"dimension":"page","operator":"contains","expression":"/blog/"}] (URL-encoded). An array of objects has no query-parameter form a generated client can produce, so the string is what the official SDKs send; see the SearchConsoleFilters schema for the shape it encodes. includingRegex and excludingRegex take RE2 syntax. At most 10 entries, expression at most 500 characters. The bracket form filters[][dimension]=page&filters[][operator]=contains&filters[][expression]=/blog/ is also accepted.

data_state'final' | 'all'

final (default) counts only rows Google has finalized. all also counts the most recent days, which are still being filled in and will change.

aggregation_type'auto' | 'byPage' | 'byProperty'

How Google counts impressions. auto (default) is what Search Console shows (by page when page is grouped or filtered, else by property). Google rejects byProperty with a page dimension or filter.

propertystring

Which Search Console properties to read; /search_console/properties lists them. Omit it for the primary property, or pass one property id (e.g. sc-domain:example.com) to read that one; both answer with property. A comma-separated list of ids, or all, combines several and answers with properties, excluded_properties and property_errors instead: excluded_properties are left out because another selected property already counts them (a URL-prefix property under a domain property), so no click is counted twice; property_errors are properties Google refused, left out of the figures and also named in the X-Search-Console-Property-Errors header. When Google refuses every property, the request fails as a single-property read would.

Response

Search Console time series

project_idinteger
fromstring date
tostring date
data_throughstring date nullable

Latest date Google has published for the property, or for every combined property (it lags 2-3 days). Later days are missing, not zero.

granularitystring
request_idstring

Changes

    • info

      added the new optional query request parameter property

    • info

      added the new optional query request parameter aggregation_type

    • info

      added the non-success response with the status

    • info

      added the non-success response with the status