The Search Console Performance report looks complete until you hit Export. The download stops around 1,000 rows. Chart totals can sit above the table. Summing the spreadsheet and matching it to the headline fails. That is not a bug in your property — it is how Google ships the UI.
If you need to export more than 1,000 rows from Search Console, you have five practical paths: stay in the UI with the chart as source of truth, pull via Search Analytics for Sheets or Excel, raise the Search Analytics API rowLimit, turn on BigQuery bulk export, or use a hosted archive. This guide covers each path honestly — including what SiteLine stores and what it does not.
Related: Search Console's 1,000-row limit is a UI cap, not the size of your site.
What the UI export actually returns
Google's export help is plain: the download matches what the report shows, truncated to about 1,000 representative rows. On a small property those may be every named query or page. On a large one they are a sample of the head of the list.
Three facts before you pick a workaround:
- Chart totals include data the table does not list. Anonymised rare queries stay in the headline and out of named rows. Raising any row limit does not name them.
- The export is not a site total. Adding CSV clicks and expecting the chart number is the wrong object.
- Dimensions without query or URL are small. Country, device, and search appearance often export in full. Query, page, and query-plus-page are where the search console export limit bites.
Use the UI export for a working list — top queries for a deck, a quick page check. Do not treat it as every named row Google still has for that day.
Sheets, Excel, CSV, and the API
"I exported to Sheets" is not the same as "I used the API."
| Path | Typical row shape | Notes |
|---|---|---|
| UI → CSV / Google Sheets / Excel | ~1,000 representative rows | Same table you see. Chart totals in the file can include truncated data. |
| Search Analytics for Sheets | Depends on the add-on's rowLimit |
Can call the API. Default 1,000 recreates the UI cap. Raise it (up to 25,000 per request) for a real API pull. |
| Excel / custom scripts | Same as the API you call | Auth, quotas, and pagination are on you. Default rowLimit is still 1,000 unless you set it. |
| Raw Search Analytics API | 1–25,000 per request; optional second page | Highest control. You own scheduling, storage, and the 16-month window Google still serves. |
Search Analytics for Sheets is a solid bridge when you want a spreadsheet without a pipeline. Check dimensions, date range, and especially rowLimit. A multi-day query pull can spend the entire row budget on day one and look empty afterward — prefer one day at a time for breakdowns.
CSV from the UI is the fastest snapshot. It is not how you export more than 1,000 named rows.
API rowLimit 25k and the 50k/day ceiling
The GSC API row limit has two layers people conflate:
- Per request:
rowLimitaccepts 1–25,000 (default 1,000). Non-date groupings sort by clicks, descending. - Google's daily ceiling: at most about 50,000 rows per day per search type. A second request with
startRow25,000 androwLimit25,000 asks for rows 25,001–50,000.
"Use the API" is not automatically "get everything." Leaving rowLimit at default leaves you at 1,000. Raising it to 25,000 gets one page. Paging to 50,000 gets Google's named-row ceiling for that day — still not anonymised queries, still not site totals.
SiteLine's import: up to 25,000 rows per day per report — one API page. Google can expose up to 50,000; SiteLine does not request rows 25,001–50,000. Site totals are stored separately. Breakdowns (query, page, query+page, country, device, search appearance) are fetched per day so the cap means "this day," not "sixteen months in one call."
If you self-host: set rowLimit to 25000, page with startRow only if you need the second page, pull breakdowns one day at a time, and keep site totals (group by date) for headlines.
BigQuery bulk export (no backfill past connect)
Google's bulk data export sends daily Search Console performance data into your BigQuery project. It is the official path for the performance data Search Console has for the property (aside from anonymised queries), and it is not bound by the same daily API row ceiling that caps interactive Search Analytics queries.
Trade-offs:
- Forward-only. Exports start from setup (first export up to ~48 hours). There is no backfill of the 16 months already in Search Console. Need last spring? Pull it with the API or a backfilling archive before Google ages it out.
- You operate Cloud. Billing-enabled project, BigQuery API, service-account permissions, dataset location, and storage/query costs above free tiers.
- SQL, not a product UI. Strong for warehouses; heavy if you only wanted a longer query list in a browser.
BigQuery fits when you need maximum row completeness going forward and already live in GCP. It is the wrong first click if you still need history Google has today and have not started exporting yet.
Hosted archive (SiteLine)
A hosted archive connects with Google's read-only Search Console scope, backfills up to 16 months on connect, then keeps importing new days while you subscribe. You get a product UI, CSV when you need a file, and — on SiteLine — cookieless analytics plus MCP servers for agents on the same account.
What SiteLine does (accurate, not aspirational):
- Imports via the Search Analytics API up to 25,000 rows per day per report
- Does not request the second API page (rows 25,001–50,000)
- Stores site totals separately so headlines are not invented by summing query rows
- Keeps imported history while you subscribe (Google's live report still rolls off at ~16 months)
- Plans from $4.99/mo; 7-day trial, no card to start
MCP responses include coverage dates (data_through) and the same rule as the UI: breakdown rows do not sum to the property.
Want the 16-month backfill and a daily archive without BigQuery or scripts? Create a SiteLine account — trial starts without a card. Prefer agent access first? Sign up with MCP intent.
When each path is enough
| Need | Enough path |
|---|---|
| Top queries for a slide; site under ~1,000 named rows | UI export (CSV / Sheets / Excel) |
Spreadsheet workflow; willing to set rowLimit |
Search Analytics for Sheets (or Excel + API), rowLimit up to 25,000; daily pulls for breakdowns |
| Custom pipeline; optional second page to ~50k/day | Search Analytics API you own |
| Maximum forward completeness; SQL warehouse; GCP OK | BigQuery bulk export (start now; no past backfill) |
| 16-month backfill today + retention while subscribed + UI / MCP | Hosted archive (SiteLine) |
Many teams run two paths: BigQuery for maximum rows forward, plus an API or hosted backfill so months already in Search Console are not lost when the live report ages out.
Mistakes: summing query rows
The most common error after any export — UI or API — is treating named rows as the site.
- Do not sum query (or page) clicks to rebuild the chart. Anonymised queries are omitted on purpose. Rows past 1,000 or 25,000 are a second gap on large days. Believe site totals for headlines.
- Do not average position or CTR across rows without weights. Report average position is impression-weighted; site CTR is clicks ÷ impressions on totals.
AVG(position)in a sheet is a different number. - Do not assume "API" means "complete." Default
rowLimitis 1,000. SiteLine stops at one 25k page by design. Google's ~50k ceiling still excludes anonymised strings. - Do not pull sixteen months of queries in one API call. The row limit applies to the response. One wide request can burn 25,000 rows on day one and return nothing useful for the rest, with no error. Site totals can span the window; breakdowns should be day-scoped.
Longer arithmetic and Google's anonymisation illustration: 1,000-row limit guide.
FAQ
Why does the Search Console export stop at 1,000 rows?
The Performance table is a truncated list of representative examples. Google's export matches that table. Chart totals can include truncated and anonymised data the file never lists. The search console export limit is a UI product choice, not proof that your site only has 1,000 queries.
Does Search Analytics for Sheets bypass the limit?
It can, if the add-on requests a higher API rowLimit (up to 25,000 per call) and you schedule correctly. If rowLimit stays at 1,000, you get the UI shape inside Sheets.
What is the GSC API row limit — 25,000 or 50,000?
25,000 is the maximum per request. About 50,000 is Google's documented ceiling per day per search type if you send a second page with startRow 25,000. SiteLine stores one page (25,000) per day per report and does not fetch the second.
Will BigQuery give me my last 16 months?
No. Bulk export is forward-only from the day you connect. For history Google still has, use the API or a hosted archive that backfills on connect.
Can query rows ever match site totals?
Not reliably. Anonymised queries never appear as rows. Caps at 1,000, 25,000, or 50,000 remove more named rows on large days. Quote totals from site totals; quote named lists as "of the rows we can see."