Export from the Performance report in 4 clicks
- Open Search Console, pick your property, and click Performance > Search results.
- Set the filters you want first: date range, search type (Web, Image, Video, News), and any query or page filter. The export follows what you see on screen.
- Click Export in the top right corner.
- Choose Export to Google Sheets, Download Excel or Download CSV.
Google says most Search Console reports can be exported this way, and the download holds "the data currently shown in the report" (Google Search Console Help, Export data). The same Export button also sits on the Page indexing report and other reports, so you can pull a list of non-indexed URLs the same way.
What is in the file
A Performance export is one file with a tab (or a CSV) per table:
| Tab | What it holds |
|---|---|
| Queries | Top search queries with clicks, impressions, CTR and position |
| Pages | Top URLs with the same four numbers |
| Countries | Clicks and impressions by country |
| Devices | Desktop, mobile and tablet |
| Search appearance | Rich results and other result types, when your site has them |
| Dates | One row per day, the numbers behind the chart |
| Filters | The filters you had on, so you remember what the file shows |
If you turned on a date comparison before exporting, the table you see has a column per date range, and the export follows the table.
Two notes from Google's export help page:
- Totals are real totals. Google writes that "totals shown are actual totals, not totals with any row limits applied." So the total at the top of the report can be higher than the sum of your 1,000 rows.
- "~" and "-" turn into zeros. Values the report shows as "~" or "-" (not available) are zeros in the file. Treat a zero as "no data", not as a fall to nothing.
Why the export stops at 1,000 rows
The web export is "truncated to 1,000 rows of representative examples of your data" (Google). On a small site that may be almost everything. On a site with thousands of pages or queries, it is only the top slice.
A second gap has nothing to do with rows. Search Console leaves out queries that very few people searched, to protect their privacy. Those clicks still count in your totals, but the query rows never show them (Google Search Central Blog, performance data deep dive, October 2022). So even a perfect export of every query row adds up to less than the total.
Quick test: add up the Clicks column on the Pages tab and divide by the total clicks at the top of the report. If you get well under 90%, the 1,000-row cap is cutting your data short and you need one of the methods below.
Three free ways past 1,000 rows
| Method | Row limit | History | Skill needed | Best for |
|---|---|---|---|---|
| Looker Studio connector | 50,000 rows per day per site per search type | Up to 16 months | Low: point and click | A live dashboard, or downloading a bigger table to Sheets |
| Search Console API | Up to 25,000 rows per request, page with startRow; same 50,000 per day cap | Up to 16 months | Medium: a script or a Sheets add-on | Regular pulls into a spreadsheet or database |
| Bulk data export to BigQuery | No row cap (anonymized queries are left out) | Only from the day you set it up | Medium to high: a Google Cloud project and SQL | Large sites that want every row, kept forever |
The 50,000 rows per day figure comes from Google's own explainer on data limits (Google Search Central Blog, October 2022). The API returns 1,000 rows by default, and rowLimit goes up to 25,000 per request (API reference).
Bulk export has two catches worth knowing before you start (Google Search Console Help, set up a bulk data export):
- It does not fill in the past. The first export holds data for the day you set it up. For older data, use the API or the report.
- It can cost money. BigQuery has a free tier, but data piles up forever unless you set an expiration time. Google suggests a partition expiration of at least 14 days if you want to cap storage.
So turn bulk export on early. A site that set it up a year ago has a year of full data; a site that sets it up today starts from today.
Export a month vs the month before
For a monthly report you want both periods side by side:
- In Performance, click the date filter and open the Compare tab.
- Choose Custom and set, for example, 2026-09-01 to 2026-09-30 against 2026-08-01 to 2026-08-31.
- Click Apply, then Export.
Google explains how comparison works in the report on its filtering and comparison help page. Wait until about the 3rd of the month before you export: Search Console dates follow Pacific Time, and the newest days can still be preliminary (Google, Performance report dimensions).
Excel or Google Sheets?
| Item | Excel (.xlsx) | Google Sheets | CSV |
|---|---|---|---|
| Opens offline | Yes | No | Yes |
| One file with all tabs | Yes | Yes | No, a zip with one file per table |
| Easy to share with a client | As an attachment | With a link | Rarely |
| Best when | You keep monthly files on your drive | Several people edit the report | You load the data into another tool |
Whichever you pick, save every export with the month in the file name, like gsc-2026-09.xlsx. Search Console keeps 16 months of performance data (Google, debugging search traffic drops). Anything older is gone unless you saved it.
What to do with the export
Raw rows do not tell anyone what happened. Turn them into a report that answers four questions: did search traffic go up or down, why, what did we do, and what will we do next. The free SEO report template has a sheet for the Pages tab and one for the Queries tab: paste the rows as values, and the formulas fill in month-over-month change, the top 5 gains and drops, and a draft client summary. For a finished version, see the SEO report example.
How to use this with an AI assistant
Connect SEOmatic at https://seomatic.ai/mcp and ask: "Use gsc_performance with action top_pages and then action top_queries on mysite.com for last month, and give me both as tables I can paste into Excel, with clicks, impressions, CTR and position." It reads your own Search Console data after a free sign-in with connect_seomatic.


