How long does Search Console keep data? The 16-month rule
Search Console keeps 16 months of performance data, then drops it. How to archive it with exports, the API or BigQuery, and what it means for comparisons.
Google Search Console keeps 16 months of performance data. The window rolls forward every day, so as a new day arrives the oldest one drops off, and once it has gone you cannot get it back from Search Console. To keep a longer history you have to export it yourself, and Google’s own suggestion is the Search Analytics API or the bulk data export to BigQuery. The bulk export accumulates data from the day you set it up but does not backfill, so the sooner it is running, the more you keep.
What the 16 months covers
The limit applies to the performance data: clicks, impressions, CTR and average position, by query, page, country, device and date. In the Performance report’s date filter, “Last 16 months” is the longest preset, and custom ranges cannot reach further back. All dates are in Pacific Time.
The same ceiling follows the data wherever it goes. Google’s Analytics help says that “Search Console keeps data for the last 16 months”, and that the Search Console reports inside Google Analytics 4 therefore include a maximum of 16 months too. Third-party tools that read the API, ours included, see the same window. None of them is a way around it.
What 16 months means for comparisons
Sixteen months is a year plus four months, which is enough for a year-over-year comparison of recent months. The Compare tab in the date filter offers comparisons such as “Compare last 3 months year over year”, and that works because the previous year’s three months still fall inside the window.
The arithmetic sets a hard edge. A year-over-year comparison can cover roughly the most recent four months, and no more. Comparing this full year with last year needs 24 months of data, which Search Console never holds. If you report annually, or want to see whether a slow decline started before last summer, you need your own archive.
Google’s guide to debugging traffic drops uses the window this way: select “Last 16 months” to check whether a drop is seasonal, something that happens every year around a holiday or a trend. It also says what to do if that is not enough: “If you’d like to extend the 16 months, you could use the Search Analytics API or bulk data exports to pull data and store it in your systems.”
A caveat for year-over-year comparisons in 2026
Google’s Data anomalies page in Search Console Help records a logging error that prevented accurate reporting of impressions from 13 May 2025 until 27 April 2026. Google says the issue is resolved and that you may notice a decrease in impressions as a result. Impressions, CTR and average position were affected; clicks were not.
If your year-over-year comparison has one side inside that period, which in October 2026 it does, compare clicks. Treat impression, CTR and position deltas across that boundary with suspicion, and say so in any client report that uses them. Did a Google core update hit my site? has more on ruling out causes that are not about your site.
Three ways to keep more than 16 months
| Method | Effort | What you keep | Limits |
|---|---|---|---|
| Manual export from the report | A few minutes a month | Chart data plus up to 1,000 table rows per export | Easy to forget; long tail cut off |
| Search Analytics API to your own storage | A script and somewhere to put it | Up to 50,000 rows per day per search type | Quotas; you maintain the script |
| Bulk data export to BigQuery | One-off setup in Google Cloud and Search Console | All performance data, daily, except anonymised query text | Starts on the setup day; Google Cloud costs |
Manual export. The Performance report has an export button that downloads the chart and table data to Google Sheets, Excel or CSV. Tables are cut to 1,000 rows, though the totals in the file are actual totals. Export a 16-month range with the Dates tab selected and you get a daily total for every day in the window, roughly 490 rows and well under the limit. Do it on the same day each month and you have an archive of daily totals plus your top queries and pages. The 1,000-row limit explains what gets left out.
The API. A small script that requests yesterday’s data each day and writes it to a database or a spreadsheet builds an archive with far more rows than the interface allows. Run it once at the start to collect the 16 months still available.
The bulk data export. This is Google’s own answer for keeping everything, and the one to set up if the history matters to you.
How to set up the bulk data export
- In Google Cloud, create or pick a project with billing enabled, and enable BigQuery.
- In that project’s IAM settings, add the principal
[email protected]and grant it two roles: BigQuery Job User and BigQuery Data Editor. - In Search Console, open the property’s Settings, then Bulk data export, and enter the Cloud project ID (the ID, not the project number).
- Keep the default dataset name,
searchconsole, unless you are exporting several properties to one project. Choose the dataset location carefully: Google warns it cannot easily be changed once exports have started. - Wait. The first export arrives up to 48 hours after setup and runs daily from then on.
The export does not include anything from before the setup day; for that, Google points you to the API or the reports. So on the day you switch it on, also pull the 16 months still available through the API. Do not put that backfill off: every day you wait, another day ages out.
Two settings decide what it costs and how long it lasts. Google says the data accumulates indefinitely unless you set an expiration time, and that it is subject to Google Cloud storage and query costs, with a free usage level. Leave expiration unset if the point is a permanent archive, and set a budget alert either way. Google’s bulk export setup guide has the screens.
Where QueryWatch fits
QueryWatch reads the same Search Console API, so its history is Google’s 16 months and no longer; it is a reader, not an archive. On the free tier you get 7, 28 and 90-day presets with deltas against the previous period, and a CSV of whatever view you are looking at. Pro opens the full 16 months, with custom ranges and period comparison, plus a comparison CSV with the previous period’s numbers and the change on every row, ready to paste into a client report from a phone. For anything older than 16 months, the bulk export above is the right tool.
The free and Pro split is written out in full, and the QueryWatch page covers the rest. QueryWatch is an independent app, not affiliated with Google.
Questions
Can I get Search Console data that is older than 16 months?
Not from Search Console. Once a day passes the 16-month mark it is gone from the reports, and the bulk data export does not backfill. The older data you can use is whatever you, or a tool you set up, exported before it aged out.
Does Google Analytics keep Search Console data for longer?
No. When Search Console is linked to Google Analytics 4, Google's help says the Analytics reports also include a maximum of 16 months of Search Console data, because that is all Search Console keeps.
How much does the BigQuery bulk export cost?
Google says the exported data is subject to Google Cloud storage and query costs, with a free usage level. What you pay depends on how much traffic your site has and how you query the tables, so set a budget alert in Google Cloud when you turn it on.
Is the bulk export a complete copy?
Google describes it as all the performance data available to Search Console for the property, apart from anonymised queries, which arrive as flagged rows with an empty query field. Its data anomalies page also records 28 February and 1 March 2026 as missing from bulk exports for some properties.
Keep reading
Get QueryWatch
Free on iPhone and Android for every property you have, with no site limit. Open Demo Mode first if you want to look around before you connect a Google account.
iPhone needs iOS 26 or later; Android needs Android 12 or later. Free to download, with an optional Pro subscription. An independent app, not affiliated with Google.