Search Console API historical data reaches back exactly as far as the interface does, and no further. This surprises people, because the API is more capable in every other respect and it feels like the raw source. It isn't. It's the same 16-month window with better throughput.

Pass a start date older than the window and you don't get an error. You get fewer rows, or none, with nothing in the response explaining why. A script that quietly returns empty results for old dates is the usual first encounter with the limit.

Get early access Free during early access. No card required.

What the API does give you

More rows, and better ones. A single Search Analytics request returns up to 25,000 rows against roughly 50,000 a day per property per search type, versus the 1,000 the interface displays. You can combine dimensions, which the UI won't do, and pull daily granularity instead of a report's aggregate.

All of that is throughput. None of it is history. The API and the UI read the same store, and Google deletes from that store on the same rolling schedule for both.

The script everybody ends up writing

The logic is straightforward and the operations are not. A working archiver has to refresh OAuth tokens before they expire, handle the two-to-three-day reporting lag so it doesn't store a day too early and then never revisit it, page through results, retry on quota errors, deduplicate re-fetched days, and write everything somewhere durable.

Then it has to run every single day for years without anybody watching. The failure mode isn't a crash, it's silence: a credential expires in month seven, nothing alerts, and the gap is only discovered later when the data is needed and the dates it covers are already past recovery.

What Month17 does instead

Month17 is that script, operated as a service. Connect a property with Google and it backfills everything Search Console still holds, then pulls daily and keeps every row with no retention limit. The daily copy is the entire product.

Being precise about the interface, becuase it matters if you came here looking for an API: Month17 does not expose a REST endpoint over your archive. Access is through an MCP server, which Claude, Cursor, and other MCP clients query directly. If what you need is raw HTTP feeding your own pipline, keep your script for the fetch, or use the BigQuery bulk export, and treat Month17 as the copy that outlives the window rather than as a drop-in API.

Either way the timing argument is the same one as always. The API can only hand over what Google still holds, and that set shrinks evey night. The data loss calculator shows what today's version of it looks like.