Tutorial · search-console · Published 2026-08-16 · 3 min read
Exporting Search Console data at scale
Export Search Console data at scale: interface export limits, the Search Analytics API and row limits, and BigQuery bulk export.
The three tiers of "export"
Search Console performance data runs across three surfaces, and they differ in ceiling, not just ergonomics:
- The interface export (the Performance report's "Export" button). Cheap for a one-off, but it truncates long results: the dashboard keeps about 1,000 rows per view, so a query-heavy report silently misses the rest.
- The Search Console API (
searchanalytics.query): scriptable, filters and groups like the report, androwLimitsupports up to 25,000 rows per request, withstartRowpaging past that. Still subject to rate limits and to a top-rows model. - The BigQuery bulk export (Search Console settings, "Bulk data export"): a scheduled daily export of all of your performance data into a BigQuery dataset you control. No row ceiling for analysis; you pay Google Cloud storage and query costs, and the export lags by roughly 2 to 3 days.
Choose with the size of the problem: a quick CSV for the top queries is the interface; a data warehouse dashboard is the BigQuery route; anything scriptable in between is the API.
The API route (up to 25,000 rows per call)
Enable the Search Console API in your Google Cloud project, create an API key or service account, then call searchanalytics.query:
{
"startDate": "2026-07-01",
"endDate": "2026-07-31",
"dimensions": ["query"],
"rowLimit": 25000
}
rowLimitrange is 1 to 25,000; default 1,000.- To get more, paginate with
startRow(0-based): requeststartRow=0&rowLimit=25000, thenstartRow=25000, and so on, until a response returns fewer rows than the limit. dimensions(query, page, country, device, searchAppearance, date, etc.),dimensionFilterGroups,rowLimit, andstartRowmirror the report.
Rate and load limits matter more than classic API limits:
- Per-site and per-user: about 1,200 queries per minute.
- Per-project: 40,000 queries per minute and 30,000,000 queries per day.
- Load quota: measured over 10-minute and 1-day windows, heavier queries (more dimensions, wider ranges) consume more. If you get a generic "quota exceeded", back off with exponential delay instead of pushing the same query.
Date-ranges that are not yet final come through the dataState parameter (all includes interim data; final only finalized). For a report you are going to store, use final.
The BigQuery route (no row ceiling)
Search Console settings let you enable bulk data export to a BigQuery dataset. Google then writes daily exports:
- Complete query and page performance data for your property, with a privacy filter that drops low-volume queries.
- Drilling with SQL over years of history instead of the 16-month API window.
- The export is delayed 2 to 3 days, so pair it with the API for bleeding-edge numbers if needed.
Costs: BigQuery storage and query pricing apply. For a small-to-middle site, that is pennies a month; the value is the merge with your other data, not the storage.
What to export when
- A weekly catch-up: API
searchanalytics.querywithstartDate/endDate, dimension query and page,rowLimit 25000, paginate. Keep it idempotent and write to a date-partitioned table. - A first full picture: the BigQuery export backfills your history after you enable it.
- A sitemap-vs-queries merge: combine the export with crawl data: which crawled URLs have no query, and which queries point at no indexable URL.
The performance report explains what each column means before you build the pipeline, and the segmented report shows the grouping options the API mirrors.