Search Console’s API surface splits into two separate methods that answer different questions: the Search Analytics API for query and page performance, and the URL Inspection API for a single URL’s index and crawl status. Windsor’s connector uses the Search Analytics API for reporting, and most of the friction that shows up in real usage traces back to filter and date syntax, not the API itself.
The canonical pull, API and no-code
The most common pull, query, clicks, impressions, ctr, and position together, is a single Search Analytics request:
POST https://www.googleapis.com/webmasters/v3/sites/{siteUrl}/searchAnalytics/query
{
"startDate": "2026-08-01",
"endDate": "2026-08-30",
"dimensions": ["query", "date"],
"rowLimit": 25000
}
The same pull through Windsor.ai, once Search Console is connected, is a plain-language prompt to ChatGPT, Claude, or Copilot:
Pull query, clicks, impressions, ctr, and position for my Search Console
property over the last 30 days, sorted by clicks.
Most-requested fields, mapped to the API
The fields teams pull most through Windsor map directly to Search Analytics dimensions and metrics: clicks, impressions, ctr, and position are the API’s own metrics, while query, page, device, and date are dimensions you group by in the same request. branded_vs_nonbranded, pathlevel1 through pathlevel4, words_in_query, and position_page are computed by Windsor on top of the raw API response; none of them exist as API dimensions, so they’re not available unless you build the logic yourself or pull through a connector that already has.
Row limits and pagination
A single Search Analytics request returns at most 25,000 rows (the default is 1,000), and pulling more of a large property’s data means paging through with the startRow parameter rather than raising the limit further. Google also enforces per-site and per-user quotas of 1,200 queries per minute, and a per-project ceiling of 40,000 queries per minute and 30,000,000 per day, load most sites will never come close to hitting on their own.
What actually breaks pulls, from real usage
Windsor’s own connector logs show a consistent error pattern, and it isn’t the row limit: it’s filter and date syntax. The largest single error family is an invalid date preset, teams passing a date string the connector doesn’t recognize instead of one of its supported presets. The second largest is filter syntax: passing operators like equals, =, icontains, or and that the connector’s own filter syntax doesn’t accept, most often when filtering by account_id. A smaller, separate error family comes from the raw Google API itself rejecting a malformed or incorrectly encoded site URL in the request path. All three are fixable by matching the exact syntax the connector or the API documents, not by requesting more data or a higher quota.
Fresh data and the 16-month window
Search Console’s own Performance numbers typically take 2 to 3 days to settle, so a report built on the most recent couple of days can still shift under you. The include_fresh_data option pulls that most recent, not-yet-finalized data anyway, useful for a same-day check but not for a report you’re about to compare against a stable baseline. Search Console’s own data retention is 16 months; a request for a date range older than that returns nothing, confirmed directly by the connector’s own error message on an out-of-range pull.
Crawl date needs a different API
The Search Analytics API has no crawl-date field: Performance data tells you what happened, not when a page was last crawled. That’s a separate method, the URL Inspection API, which returns a lastCrawlTime timestamp along with coverageState, indexingState, and robotsTxtState, but only for one URL per request; there’s no bulk version. The Search Console UI shows the same data one URL at a time for the same reason. For the redirect-and-merge decision this feeds into, How I Catch Keyword Cannibalization with Search Console and Claude checks crawl date before comparing any before/after numbers.
Search Console API without code
Everything above uses the real Search Analytics dimensions and metrics without writing any code or handling OAuth. Connect your Search Console property to Windsor.ai once, and ChatGPT, Claude, or Copilot can query it directly through plain-language prompts.

