Search Console data warehouse: keep every day past 16 months
By GEO Search Console Published
This Search Console data warehouse keeps every day of your Google Search Console data on your own hosting, so nothing drops off when Google's 16 months run out. It is a small PHP app you upload once. A cron job pulls each day's clicks, impressions, CTR and position by query and page, by page, by country and device, and by search appearance, and a password-protected viewer lets you filter, compare and export all of it.
It is free, it needs no account with us, and your data never leaves your server. The download is below, followed by the setup steps, what the viewer does, how to get GSC data into Excel and Google Sheets, and how it compares with Google's own BigQuery export.
Why Search Console data needs a warehouse
Search Console data needs a warehouse because Google keeps only the last 16 months and shows you only part of each day.
The Performance report shows at most 1,000 rows in its tables and exports, so a site with thousands of queries sees the top of the list and nothing else.
The Search Console API goes much further: up to 50,000 rows per day for each search type, 25,000 at a time. But it still stops at 16 months. Anything you want to compare against later, like the month before AI Overviews reached your queries or the week a core update landed, has to be saved before Google lets it go.
A warehouse does that saving every day. Once a day is stored, it stays, and the comparisons that matter most, year over year and before and after an update, keep working long after the Performance report has forgotten them.
What is GSC data?
GSC data is what Google Search Console records about your site in Google Search: clicks, impressions, click-through rate (CTR) and average position, broken down by query, page, country, device, search appearance and date.
When people say "GSC data" they almost always mean these Performance report numbers, though Search Console also reports on indexing, Core Web Vitals and links (our Google Search Console FAQ covers the rest, from logging in to sharing access). The four numbers work like this:
- Clicks count the times a searcher clicked through to your site from a Google result.
- Impressions count the times a link to your site appeared in someone's results.
- CTR is clicks divided by impressions.
- Average position is where your site's highest link sat in the results on average, with 1 at the top.
Search Console keeps 16 months of it, counts each day in Pacific time, and reports Web, Image, Video and News searches separately, with Discover and Google News in reports of their own. Google's guide to the report's dimensions lists every grouping.
Download the Search Console data warehouse
Download the Search Console data warehouse below as one ZIP.
It holds the whole app, about 20 files of plain PHP, CSS and JavaScript that you can read before you upload anything.
5 MeasurePHP 8, any cPanel host
GSC Warehouse
Every day of Search Console data, kept on your server
Pulls each day's queries, pages, countries, devices and search appearance from the Search Console API by cron, keeps them past 16 months, and opens them in a password-protected viewer with regex filters, comparisons and CSV and JSON exports. Connect Claude to ask questions of it in plain English.
- .htaccess
- INSTALL.md
- config.sample.php
- cron.php
- export.php
- index.php
- markers.json
- mcp.php
- setup.php
- assets/ (2 files)
- data/ (2 files)
- lib/ (9 files)
Get a reminder before Google deletes your Search Console data
Get a reminder before Google deletes your Search Console data: one email on the 1st of each month names the month Google drops that month, so you can save it first.
Google takes one more day off the far end of your 16 months every day, and no tool can bring a deleted day back, the warehouse included, since its first runs save only what Google still has.
Google keeps the last 16 months of your Search Console data. Every day, the oldest day is gone.
Or add it to your calendar: Google CalendarApple Calendar or Outlook (.ics)
Each email says which month is going, how to keep it with the warehouse, how to check a warehouse you already run, and how to export that month by hand if you have no hosting. You confirm your address once, and every email has a link that stops it and deletes the address. The calendar links set the same reminder for the 1st of each month without an email.
GSC data the warehouse stores
The GSC data the warehouse stores comes in five parts for every Search Console property it can read, for every day.
Google returns these separately, so the warehouse keeps them apart too:
- Daily totals. The property's clicks, impressions, CTR and average position for each day, the same numbers as the Performance report's chart.
- Queries and pages. Every query and page pair Google returns for the day, up to the API's 50,000 rows.
- Pages. Every page on its own, which counts the clicks from anonymized queries that the query rows leave out.
- Countries and devices. Each country and device pair for the day.
- Search appearance. Each search appearance the property had that day, such as translated results, review snippets and videos, and for each one its queries by country. Google counts these by page, so they can add up to more than the daily totals.
The first runs reach back as far as Google allows, 16 months, a few hundred days at a time. After that, each run fetches the newest days and fetches the last five again once a day, because Google keeps revising them for a few days. Discover and Google News get the page and country tables only, since Google gives no query data for them.
How to set up the Search Console data warehouse
To set up the Search Console data warehouse you need hosting that runs PHP 8 and allows cron jobs, which almost every cPanel host does.
It takes about 15 minutes:
- Unzip the download and upload the
gsc-warehousefolder to your hosting, for example insidepublic_html. - Copy
config.sample.phptoconfig.phpand set a viewer password. - Open
setup.phpin your browser. It checks the server, tests that the data folder is closed to the web, and walks you through the rest. - Create a free service account in Google Cloud, turn on the Search Console API, and download the account's JSON key. The setup page lists each click.
- Add the service account's email as a Restricted user on each Search Console property you want kept.
- Add the cron job the setup page shows you, every 15 minutes.
A service account is a login for software, not a person. It reads your Search Console data through the API with read-only access, and you can remove it from a property at any time. Google Cloud's documentation explains how they work.
The viewer: filters, comparisons and Google updates
The viewer reads your stored data with regex filters, comparisons and Google updates marked on a daily chart, for any date range you have stored, including ranges older than 16 months.
- Regex filters for queries and pages, to include and to exclude, the way you would in the keyword rank checker. Click any query to see its pages, or any page to see its queries.
- Comparisons with the previous period or the same dates last year, shown on every row and as dashed lines on the chart.
- Winners and losers. Sort by the change in clicks, impressions or position to put the biggest drops first, including queries that disappeared and now show as gone.
- Striking distance. One click lists the queries sitting at positions 8 to 20, just off page one, sorted by impressions. Any position range works.
- Cannibalization. A view of the queries where two or more of your pages compete, with each query's pages side by side.
- Brand and non-brand. Write your brand names once as a pattern in the settings, and every view splits into brand and non-brand searches.
- Search appearance. Pick translated results, review snippets, videos or any other appearance your site has, and see its queries, its countries, or both together: which query showed as a translated result in which country. One click opens translated results.
- Google updates on the chart. Lines mark the AI Overviews launches, core updates, spam updates and the September 2025 change that cut impressions in most reports. Add your own lines for launches and site moves.
Exports: CSV and JSON
Exports come in CSV, which opens in Excel and Google Sheets, and JSON, for scripts and other tools.
Any view in the viewer exports in full, every row with its comparison columns, not just the rows on screen. The status page also exports everything stored for a property, table by table, search appearance included.
Once your history is in CSV, it drops straight into other tools. The AI performance report on this site, for example, reads Search Console's regular Performance export to show AI's share of your impressions, and our guide to the Bing AI Performance report covers the same kind of history on Bing's side.
GSC export and its 1,000-row limit
GSC export is the Export button at the top of the Performance report, and it hands you the data on screen as a Google Sheets file, an Excel file or a CSV, with a 1,000-row limit.
That cap is why larger sites outgrow it: a site with more queries or pages than that gets the top of each table and nothing below it, while the totals in the file still count everything, so the rows fall short of the totals.
The export takes the report as you set it, with its date range, search type and filters. Every table in the report comes out on its own sheet, or as its own CSV inside a ZIP: queries, pages, countries, devices, search appearance and dates. Google's export help has the details, and the next sections cover getting past the 1,000 rows.
GSC data to Excel
GSC data goes to Excel in one click for up to 1,000 rows: in the Performance report, choose Export, then Download Excel, and you get one .xlsx file with a sheet for each table.
For every row, export from the warehouse instead. Its CSV files hold the whole view, open in Excel with a double-click, and begin with the byte order mark Excel looks for, so accented and non-Latin queries, like the ones translated results bring in, show up as written instead of garbled. An Excel sheet holds 1,048,576 rows, far more than a typical view needs; for anything bigger, the JSON export suits a script better.
GSC data to Google Sheets
GSC data reaches Google Sheets two ways.
The quick one is Export, then Google Sheets, in the Performance report, which opens up to 1,000 rows as a new spreadsheet in your Google account. The full one is a CSV from the warehouse: in Sheets, choose File, then Import, then Upload, and every row of the view comes in.
A spreadsheet holds up to 10 million cells, so a view of a few hundred thousand rows fits with room to spare. Sheets add-ons that call the Search Console API can also fill a sheet past 1,000 rows, but they read only what Google still has, so they stop at the same 16 months the warehouse gets past.
How to export translated results in GSC
To export translated results in GSC, filter the Performance report to that search appearance, then export it.
Translated results are Google results shown in the searcher's own language when the page is written in another: Google translates the title and snippet, and a click opens a machine-translated copy of the page. Sites don't opt in, searchers in 21 languages see them, Hindi, Indonesian and Spanish among them, and a notranslate robots meta tag opts a page out.
The export takes about a minute:
- Open the Performance report for Search results and set the date range, up to the last 16 months.
- Add a filter, choose Search appearance, and pick Translated results. It only shows up if your site had translated-result impressions in that range.
- Click Export and pick Google Sheets, Excel or CSV.
The report keeps its 1,000-row cap, and it shows queries and countries in separate tables, so it can't tell you which query was translated for which country. The Search Console API can: group by query and country, filter searchAppearance to TRANSLATED_RESULT, and each row comes back with a query, a country and its clicks, impressions, CTR and position, up to 25,000 rows a request. In Google's bulk export, a field named is_translated_result marks the same rows. The warehouse makes those API calls for you every day: it keeps each search appearance's daily numbers and, for translated results and every other appearance your site has, its queries by country, past 16 months too. Its Translated results report shows which query was translated for which country, and its CSV export holds every row.
Ask Claude about your Search Console data
Ask Claude about your Search Console data by connecting the warehouse as an MCP server: an optional, read-only link you turn on with a private token in the settings.
Questions like "which queries lost the most clicks since the March core update?" or "what is in striking distance on the blog?" are then answered from your own stored history, older than 16 months included.
It works in Claude Code, in Claude on the web and desktop as a custom connector, and in other apps that speak MCP (Model Context Protocol). Claude gets six read-only tools: your properties, any report (search appearance included), striking distance, cannibalization, the biggest losers, and the impact of a Google update. The steps are in INSTALL.md inside the download.
GSC bulk export to BigQuery
GSC bulk export is Search Console's own daily export of your performance data to BigQuery, Google Cloud's data warehouse, and it has no row cap.
Setting it up takes four steps, all in Google's bulk export guide:
- In Google Cloud, use a project with billing on, and turn on the BigQuery API and the BigQuery Storage API.
- In IAM, add
search-console-data-export@system.gserviceaccount.comwith two roles: BigQuery Job User and BigQuery Data Editor. - In Search Console, open Settings, then Bulk data export, and enter the project ID, a dataset name that starts with "searchconsole", and a location. The location is hard to change later.
- Wait up to 48 hours for the first export, which starts with that day's data.
BigQuery bills storage and queries past its free tier, and the tables grow every day for as long as the export runs. Nothing from before the setup day is filled in, which is the main thing the warehouse does differently.
Search Console data warehouse vs BigQuery bulk export
The Search Console data warehouse and Google's BigQuery bulk export both keep data past 16 months, and the biggest difference is the start: Google's bulk export begins on the day you set it up and doesn't fill in earlier days, while the warehouse reaches back the full 16 months on its first runs.
| Search Console data warehouse | BigQuery bulk export | |
|---|---|---|
| Past data | The last 16 months, on the first runs | None: it starts on the day you turn it on |
| Where data lives | Your own hosting | Your Google Cloud project |
| Cost | Free on hosting you already pay for | BigQuery storage and query charges past Google's free tier |
| Reading it | The built-in viewer, CSV and JSON | SQL, or a dashboard tool connected to BigQuery |
| Anonymized queries | Left out of the query rows; counted in daily totals and pages | Included as rows with no query text |
| Search appearance | Each appearance's daily numbers, with its queries by country | A true or false field for each appearance on the page rows |
They work well together. Start the warehouse today to save your 16 months, and if your team already works in BigQuery, turn on the bulk export as well.
What the warehouse can't do
What the warehouse can't do is recover days Google has already dropped: it saves from 16 months ago forward, so the sooner it runs, the more history you keep.
- Query rows leave out the searches Google anonymizes, so they add up to less than the daily totals. The totals and the page table count everything.
- Queries can't be split by country or device, because Google returns those as a separate table.
- Search appearance, such as translated results, is kept with its queries and countries but not its pages or devices, because Google returns each appearance as another separate cut.
- It needs PHP hosting with cron. A computer that is off at night or a static-only host won't run it.
Search Console data warehouse FAQ
This Search Console data warehouse FAQ covers cost, privacy, hosting, size and the monthly reminder.
Is the Search Console data warehouse free?
Yes, the Search Console data warehouse is free to download and run, with no sign-up and no API charges. Google doesn't charge for the Search Console API, and the warehouse runs on hosting you already have.
Is my Search Console data sent to you?
No, your Search Console data stays on your server and nothing is sent to us. The app talks to Google, with the service account you create, and to Claude only if you connect it yourself. The viewer is locked with your own password.
Does the warehouse work on shared hosting?
Yes, the warehouse works on ordinary shared hosting: it was built and tested on a cPanel host. Each cron run stops after four minutes and the next run carries on, so it stays inside the time limits shared hosts set.
How big does the database get?
How big the database gets depends on how many queries your site has. A site with a few thousand queries a day stays under a few hundred megabytes for its first 16 months; a site that fills the API's 50,000 rows every day grows by a few gigabytes a year, and can use MySQL instead of the default SQLite.
Can I keep several sites or client sites?
Yes, you can keep several sites, client sites included, in one install: it keeps every Search Console property the service account can read, and the viewer switches between them. Add the service account as a user on each property, and it starts fetching on the next run.
Can I get a reminder before Google deletes my Search Console data?
Yes, you can get a reminder before Google deletes your Search Console data: sign up in the reminder box, and one email arrives on the 1st of each month naming the month that is going and how to keep it. If you'd rather not give an email, the calendar links there add the same reminder to Google Calendar, Apple Calendar or Outlook.
Free tools for this guide
2 Search On our server
Rank Report
Where you rank for every variation
Open the keyword rank checker
5 Measure In your browser
AI Performance
Google's and Bing's AI reports together
Open the AI performance report
References
- Getting all your data, Search Console API documentation. developers.google.com/
webmaster-tools/ v1/ how-tos/ all-your-data - Start a new bulk data export, Search Console Help. support.google.com/
webmasters/ answer/ 12917675 - Service accounts overview, Google Cloud documentation. cloud.google.com/
iam/ docs/ service-account-overview - Search Analytics: query, Search Console API reference. developers.google.com/
webmaster-tools/ v1/ searchanalytics/ query - Performance report (Search results): Dimensions and data groupings, Search Console Help. support.google.com/
webmasters/ answer/ 17011259 - Export data directly from a Search Console report, Search Console Help. support.google.com/
webmasters/ answer/ 12919797 - Translated results in Google Search, Google Search Central. developers.google.com/
search/ docs/ appearance/ translated-results - A deep dive into Search Console performance data filtering and limits, Google Search Central Blog. developers.google.com/
search/ blog/ 2022/ 10/ performance-data-deep-dive