---
title: "Google Search Console keyword position history · GSC PAP"
source: https://gscpap.com/guides/track-keyword-rankings-over-years
updated: 2026-09-18
---

[All guides](https://gscpap.com/guides)

Guide · about 6 minutes

# Track keyword rankings in Google Search Console, past the 16-month limit

By the [GSC PAP team](https://gscpap.com/about) · Updated September 18, 2026

Google Search Console does track keyword rankings, in its own way. For every query your site shows up for, it records an average position for each day, and you can chart that number for a single keyword. Two things catch people out: the number is an average over real searches, not a daily rank check, and Google deletes it after 16 months.

This guide answers the common questions first: what Search Console's position means, how to pull up a keyword's position history, how far back it goes, and how to keep that history for years. Then it walks through charting one keyword's full history with Claude and GSC PAP.

## Can Google Search Console track keyword rankings?

Yes, for any property you can open in Search Console. The Performance report lists every query your pages appeared for, with clicks, impressions, CTR and average position, and it can show each of those day by day. For the keywords that actually earn you impressions, that is a free ranking history.

The catch is what "position" means. Each time your site appears for a query, Search Console notes where your highest-ranking result sat. The number it reports is the average of those positions across every impression in the date range. A rank tracker works differently: it runs the search once a day from one location and device and records a single rank.

So the two numbers rarely match, and neither one is wrong. Search Console's figure blends every country, device and results layout your real searchers saw. A rank tracker's figure is easier to read day to day, and it can follow competitors and keywords you don't appear for yet, which Search Console can't.

-   No impressions, no position. If your site wasn't shown for a query on a given day, that day has no position at all. It doesn't mean you ranked 100th.
-   Low-volume keywords swing. With only a few impressions a day, one search can move the average by several places.
-   Very rare searches are anonymized. Google leaves them out of the query list entirely, so they can't be tracked.
-   The data lags. A day's complete numbers usually take two to three days to arrive.

## How to see a keyword's position history in Search Console

The Performance report can chart one keyword on its own. The same series is also available through the Search Analytics API: filter on the query and group by date.

-   Open Performance, then Search results, for the property.
-   Turn on the Average position card above the chart. Leave Impressions on as well, so you can see how much data sits behind each point.
-   Set the date range. Last 16 months is the longest option Google offers.
-   Add a filter: Query, then Exact query, and type the keyword. The chart now shows that keyword's average position day by day.
-   Open the Pages tab under the chart to see which of your URLs ranked for it. If the ranking page changed, that often explains a jump.
-   Use Compare in the date picker to put two periods side by side, for example the last three months against the same months a year earlier.

[![Search Console Performance report for one query over the last 16 months, with impressions and average position charted](https://gscpap.com/images/guides/track-keyword-rankings-over-years.webp)](https://gscpap.com/images/guides/track-keyword-rankings-over-years.webp)

Set the date range to Last 16 months (1), filter on the query (2) and turn on Average position (3). The dip in September 2025 is the kind of move to line up with a change on the site. Recreated with example data for a made-up site.

## How to use Search Console to identify ranking trends

One day's position is rarely worth acting on. Trends show up when you look at longer windows and read position next to the other metrics.

-   Compare averages, not single days. A week or a month against the same stretch earlier tells you far more than one data point.
-   Weigh position by impressions. A two-place drop on 20 impressions is noise; the same drop on 20,000 is worth a look.
-   Read clicks and impressions alongside it. If position and impressions hold steady but clicks fall, look at the results page itself: something new may be taking the clicks above you.
-   Check the ranking URL, not only the query. Two of your pages trading places for one keyword shows up as a jumpy position line.
-   Look across queries at once. The Compare view lists each query's metrics for both periods, which surfaces your biggest risers and fallers.

## How far back does Search Console keyword history go?

16 months. Search Console keeps 16 months of performance data on a rolling basis, so every day the oldest day in the window is deleted. No setting or API call brings it back.

That is enough to compare the last four months with the same four months a year earlier, and not much more. You can't set this spring against the spring two years ago, and once a site migration or a big content change is more than 16 months old, the rankings from before it are gone.

## How to keep keyword ranking history beyond 16 months

Google won't keep it, so the only fix is to copy the data before it ages out. None of the options below can recover days Google deleted before you set them up; they protect you from losing more.

In GSC PAP, the historical_position_trend tool reads one keyword's daily clicks, impressions, CTR and position from your archive, over any range the archive covers, without spending Google API quota. The worked example below uses it.

-   Manual exports. Download the Performance report every month and store the files. It works, but each export stops at 1,000 rows, and it only lasts as long as someone keeps doing it.
-   BigQuery bulk export. Google's official option sends daily data to your own BigQuery dataset. It needs a Google Cloud project with billing, you query it with SQL, and it starts on the day you set it up, with no backfill.
-   The GSC PAP archive. When you sign in with Google, GSC PAP automatically copies the 16 months Google still holds for every property your account can read. A daily job then adds each new day, about four days behind today while Google's data settles. Days that Google deletes stay in your archive, so your history keeps growing past 16 months.

## Charting one keyword's position history with Claude

The prompt works in any client connected to GSC PAP. Not set up in Claude yet? [Connect GSC PAP to Claude](https://gscpap.com/integrations/claude-ai-connectors)

### The scenario

A keyword you used to rank around #2 for now averages about #6 in Search Console. You want to know when it started slipping, and whether that lines up with something you shipped (a redesign, a URL change) or with a Google update. The slide may have started more than 16 months ago, further back than Search Console can show.

### The prompt

```prompt
Use the gsc-pap MCP. For https://example.com, first run archive_status to see how far back my archive goes. Then call historical_position_trend for the query 'customer interview templates' over the full archived range. Roll the daily rows up to a weekly average position, weighted by impressions. Flag every week where position moved 3 or more places from the week before, and list those weeks with the position before and after and that week's impressions. Overlay these dates: site redesign 2025-03-10, URL migration 2025-09-01.
```

### What happens

1.  #### Claude checks how far back the archive goes
    
    archive_status returns the earliest and latest archived date for the property. On the day you connect, that span is the 16 months Google still had; from then on it grows by a day at a time. Claude uses those dates as the range for the next call, so it never asks for days that aren't there.
    
2.  #### Claude pulls the keyword's daily series
    
    historical_position_trend returns one row per day with clicks, impressions, CTR and position for that exact query. Wrap the keyword in % signs (for example %interview template%) and it matches every query containing the phrase, combined into one daily series. The rows come from your archive, so the call uses no Google API quota however far back it reaches.
    
3.  #### Claude smooths the noise and flags real moves
    
    Daily positions for a mid-volume keyword bounce around, so Claude rolls them up to weekly averages weighted by impressions, computes the change from one week to the next, and flags the weeks that moved 3 places or more. Weeks with very few impressions are marked as low confidence rather than reported as drops.
    
4.  #### Claude lines the moves up with your dates
    
    Claude marks the redesign and migration dates on the series and says which flagged weeks fall near them. Paste in the dates of Google updates you care about and it does the same for those. A match is a lead to investigate, not proof of cause.
    

### What the answer looks like

Claude with GSC PAP connected

Show the weekly position history for 'customer interview templates' over my whole archive, flag weeks that moved 3 places or more, and mark the redesign (2025-03-10) and the URL migration (2025-09-01).

`historical_position_trend` full archived range, rolled up to weeks

| Week of | Position | Week before | Impressions | Lines up with |
| --- | --- | --- | --- | --- |
| 2025-03-10 | 13.9 | 9.7 | 380 | Redesign |
| 2025-03-31 | 10.2 | 13.6 | 410 | Recovery |
| 2025-09-01 | 15.8 | 10.4 | 290 | URL migration |
| 2025-09-29 | 11.1 | 14.9 | 350 | Recovery |

Both big drops fall in the weeks of your own changes, and both recovered within a month, so they look like Google re-evaluating the changed pages rather than lasting losses. Impressions fell with the position each time. Since October 2025 the keyword has held between 9 and 11, with no week moving 3 places.

Illustrative answer for a made-up example.com. Your queries and numbers will differ.

### Outcome

You get a dated answer instead of a hunch: the week the keyword started slipping, how far it fell, whether impressions fell with it, and whether any of your own changes landed that week. If nothing lines up, you are most likely looking at normal movement and can stop worrying about it.

### Where to take it next

-   Ask search_analytics_archive for the same query and window grouped by page, to see whether Google switched which of your URLs ranks for it.
-   Run the same check on your top 20 queries to tell whether one keyword slipped or the whole site did.
-   Use compare_periods to see the change in clicks, impressions and position across all queries between two recent windows.

## Frequently asked questions

### Is Search Console's average position the same as my Google ranking?

Not exactly. Search Console averages the position of your highest result over every real impression, across all locations and devices. A rank checker records one search from one place. Expect the two to differ, most of all for keywords whose results vary by location.

### Why does Search Console show no position for a keyword I rank for?

It only reports a position when your site got an impression, so a keyword nobody searched in the date range has nothing to average. Very rare searches are also anonymized and left out of the query list, and the report's table shows at most 1,000 rows, so long-tail keywords on bigger sites can fall off it.

### How often does Search Console update keyword positions?

Daily, with a delay. A day's data typically becomes available two to three days later, and the newest days in the chart can still be incomplete, so don't read much into them yet.

### Can I get keyword ranking data older than 16 months?

Not from Google. Once a day passes the 16-month mark, Search Console deletes it and no tool can bring it back. What you can do is start keeping it now, either with BigQuery bulk export or by connecting GSC PAP, which copies the 16 months Google still has and keeps every day after that.

### Can Search Console track competitors' keyword rankings?

No. It only reports on properties you own or have been given access to. To follow a competitor's positions you need a rank tracker or an SEO tool with its own ranking data.

## Other guides

[All guides](https://gscpap.com/guides)

[

### AI queries in Google Search Console: how to tell people, AI Mode and agents apart

Search Console mixes AI Mode follow-ups, AI agent searches and scripts into your query report. How to spot each one, with regex filters and real data.

14 min read

](https://gscpap.com/guides/ai-queries-in-google-search-console)[

### Good position, no clicks: find the SERP features eating your CTR

Ranking third and getting no clicks usually means something sits above you: an AI Overview, a featured snippet or a map pack. How to check which, query by query.

7 min read

](https://gscpap.com/guides/low-ctr-at-good-position-serp-features)[

### Find the pages quietly losing organic traffic, before the rankings go

Content decay is slow enough to miss on a dashboard. How to find the pages whose clicks keep sliding, tell decay from seasonality, and decide what to refresh.

7 min read

](https://gscpap.com/guides/find-pages-losing-organic-traffic)[

### Traffic changed: how to compare two Search Console periods and find out why

Clicks are down 18% and nobody knows why. How to compare two periods properly, avoid the three traps that fake a drop, and find the queries and pages behind it.

7 min read

](https://gscpap.com/guides/compare-search-console-date-ranges)[

### Google Search Console anonymized queries: measure the traffic you can't see

Search Console hides anonymized queries from query rows but counts them in totals. Learn what they are, why no tool reveals them, and how to measure them.

6 min read

](https://gscpap.com/guides/google-search-console-anonymized-queries)[

### GSC clicks vs GA4 sessions: why they differ and how to tie clicks to conversions

A Search Console click and a GA4 session measure different things. Why the numbers never match, what gap is normal, and how to compare and combine them page by page.

11 min read

](https://gscpap.com/guides/correlate-organic-clicks-to-ga4-conversions)[

### Audit Core Web Vitals across your site with AI

Audit Core Web Vitals with Claude through a hosted PageSpeed Insights MCP server: Lighthouse lab data and real-user CrUX field data for your top pages.

7 min read

](https://gscpap.com/guides/audit-core-web-vitals-with-ai)[

### Google Search Console historical data: how to keep it past 16 months

Google Search Console keeps 16 months of historical data, then deletes it. Here is what it includes and how to keep it longer, from BigQuery to an archive.

8 min read

](https://gscpap.com/guides/recover-search-console-history-past-16-months)[

### Build a weekly SEO health report with Claude

Automate a weekly SEO report with Claude: one saved prompt pulls Search Console changes, quick wins, decaying pages, GA4 conversions and Core Web Vitals.

8 min read

](https://gscpap.com/guides/weekly-seo-health-report-via-claude)[

### Bulk URL inspection in Google Search Console: diagnose indexing issues at scale

Search Console inspects one URL at a time. The URL Inspection API allows 2,000 checks a day per property. How to inspect in bulk and find indexing issues.

8 min read

](https://gscpap.com/guides/diagnose-indexing-issues-bulk-url-inspection)[

### How to find striking distance keywords in Google Search Console

Striking distance keywords rank just off page one of Google. Find them in Search Console, pick the ones worth fixing, and learn what to change on the page.

8 min read

](https://gscpap.com/guides/find-seo-quick-wins)[

### How to find keyword cannibalization in Google Search Console

Check for keyword cannibalization in Google Search Console: find queries where your pages compete, judge whether it hurts, and fix the cases that do.

8 min read

](https://gscpap.com/guides/detect-keyword-cannibalization)

### Tools that automate this workflow

The MCP exposes 36 tools across 9 categories. These are the ones most relevant to this page:

-   [historical_position_trend](https://gscpap.com/tools#historical_position_trend) · Plot a query's position over the last N days to see whether you're trending up, down, or volatile.
-   [search_analytics_archive](https://gscpap.com/tools#search_analytics_archive) · Query your full GSC history beyond the 16-month limit. Same dimensions and filters as the live API, but unlocked for long-term trend analysis.
-   [archive_status](https://gscpap.com/tools#archive_status) · Check archive coverage per site: earliest date, latest date, row count, last successful run.
-   [compare_periods](https://gscpap.com/tools#compare_periods) · Diff any two date ranges (e.g. last 28 days vs prior 28) to spot wins and losses across queries, pages, or countries.

[Browse all 36 tools](https://gscpap.com/tools)

### Skip the GCP project. Just sign in.

GSC PAP is hosted, free, and read-only. No service account JSON, no Python venv, no API keys. Sign in with Google, mint a bearer token, paste it into Claude / Cursor / Claude Code. About 60 seconds end to end.

[Sign in with Google](https://app.gscpap.com/login) Read-only Search Console scope, revoke anytime

Want a guide for a workflow we have not covered? Email [support@gscpap.com](mailto:support@gscpap.com).
