Rank Tracking Without Paying for a Tool

A crossed-out price tag above a five-row table of query lines paired with rank-status badges degrading from solid filled circles to hollow rings to a dim X mark, representing free rank tracking without a paid tool

Written by

in

The free way to track keyword rankings without paying for a tool is Google Search Console’s Performance report, pulled by query and by date and kept in a spreadsheet or script rather than a dashboard screenshot. It reports a real average position for every query that has already shown your page in results at least once, with roughly 16 months of history and no row caps through the API. The catch: it can’t forecast a position for a keyword you haven’t ranked for yet. On this site, 137 days of that data add up to 879 impressions, 6 clicks, and a 0.683% click-through rate — the real, unflattering number this method exists to surface rather than hide.

Most “free rank tracking” results online are listicles comparing the free tiers of paid tools — capped keyword counts, limited history, an upsell a few clicks away. I checked the live search results for this exact phrase before writing anything here, and Search Console is the one option that keeps showing up as genuinely free with no row limit. So instead of comparing tools, this piece runs the method on this site’s own numbers and shows what the output actually looks like, including the parts that don’t flatter the site.

The method, step by step

Search Console’s Performance report is the source. You can read it in the UI, but the more reproducible path is the API, which returns the same rows as JSON with a date range and a set of dimensions you choose. I’ve laid out the daily-automation version of this pull before in Search Console API automation: a guide from daily use; the version used for this piece is a one-off rather than a scheduled job, but it’s the same endpoint and the same authentication.

Two separate pulls do the actual work. The first groups by date across a 90-day window, which is what shows whether a site has visibility at all on a given day and how that visibility moves over time. The second groups by query for the same window, which shows which specific search terms are producing impressions and at what position. Neither pull alone tells the full story — a by-date view can look healthy while a single query is carrying almost all of the volume, and a by-query view can’t show you the day-to-day noise that a by-date view makes obvious. I keep both pulls as raw JSON and run small scripts against them rather than eyeballing totals, for the same reason I’ve argued for building a proper pipeline instead of screenshots in build an SEO dashboard from APIs, not screenshots: numbers computed by a script are reproducible, and numbers read off a chart by eye usually aren’t.

The limitation is worth stating plainly rather than discovering later. Search Console only reports a position for a query that has already generated at least one impression. If a keyword hasn’t shown your page in results yet, there’s no row for it — the API can’t simulate a rank the way a paid rank-tracking tool does by running live searches against a target keyword list. This method answers “where do I actually rank for the queries already finding me,” not “where would I rank if I targeted this new keyword.” For most sites checking their existing visibility, that’s the question that matters anyway.

This site’s real numbers right now

The by-date pull covers May 31 through October 14, 2026 — 137 days. Across that window: 879 total impressions, 6 total clicks, a site-wide click-through rate of 0.683%, and an impression-weighted average position of 33.67. Thirty-nine of the 137 days — 28.5% of the window — show zero impressions at all. That’s the baseline most “is my SEO working” questions should be measured against, not a single good day pulled out of context.

The first impression in the window landed on June 23: one impression, position 10. The first click didn’t arrive until July 13 — three weeks later — one click on one impression at position 3. Across the full 137 days, only six days registered any click at all: July 13, July 17, September 1, September 9, September 16, and September 17. Impressions stayed low and uneven through most of the summer, then stepped up sharply on August 26 — 41 impressions, average position 46.51 — and held at that higher level for the following days rather than dropping back, which is what a genuine step change looks like rather than a one-day blip.

The most recent seven days in this pull show 71 impressions and zero clicks. Visibility is real and measurable; converting it into a click is a separate, harder problem that impressions alone don’t solve. I measured that specific gap directly in impressions but no clicks: what the data actually shows, and the same pattern shows up here: showing up in results and getting clicked are two different outcomes with two different causes.

The by-query pull, for the same general period, gives the other half of the baseline. The highest-impression query in the top 25 is api seo rest, with 11 impressions, 0 clicks, and an average position of 65.27 — well outside the range where clicks typically happen. No query in that list contains the terms “rank track” or “free rank,” which is the clean, checkable starting point for this piece’s own falsifiability test below. If you’re running this method on your own site, the by-query pull is also where you’ll notice whether your visibility is concentrated in one or two terms or spread thin across dozens, which changes how much a single ranking change can move your total numbers.

Reading results honestly

The most recent two or three days in any Search Console pull should be treated as provisional, not final. Search Console backfills and reclassifies recent data after the fact, so a dip at the very end of a date range is often an artifact of the pull timing rather than a real drop in visibility — I go into why this happens and how to work around it in why Search Console data lags and how to handle it. Re-running the same by-date pull a few days later and comparing is the only reliable way to tell a lag artifact from an actual decline.

A second check worth running alongside the Search Console numbers is Google Analytics, not because it should match — it won’t — but because a large mismatch is itself informative. For this site’s GA4 data over the same general period, one day stands out: July 18 shows 44 pageviews and a 1,198-second average session duration, figures far outside every neighboring day in the set. That’s not cited here as a real traffic event; it reads far more like a bot or crawler session than organic engagement, and treating it as a genuine spike would distort the baseline rather than describe it. Knowing which numbers to trust and which to flag is part of the method, and it’s the same discipline covered in SEO KPIs worth reporting (and three to drop).

None of this means the Search Console numbers are too noisy to use. It means the number you report should be a window-level aggregate, checked again after a few days have had time to settle, rather than a single day’s row read in isolation.

What would falsify the conclusion

This method is a claim that can be checked again, not a one-time snapshot. The pre-publish baseline above shows zero queries in this site’s top 25 containing “rank track” or “free rank.” If, 60 days after this page publishes, it still shows zero Search Console impressions for any query containing those terms — despite being indexed — the method described here didn’t work for this specific page, and that result should be reported rather than quietly dropped.

Three things are worth checking before concluding the method itself is broken:

  • Confirm the page is actually indexed before reading zero impressions as a ranking problem. A page that isn’t indexed yet will show zero rows for reasons that have nothing to do with where it would rank.
  • Separate “first impression” from “first click” from “steady volume.” On this site those three milestones landed on three different days, weeks apart — collapsing them into one moment hides the actual shape of the ramp.
  • Re-pull the same date range a few days later before trusting the most recent rows. The last two or three days in any pull are provisional until Search Console finishes backfilling them.

Shivaa Tripathi runs organic-os, an experiment in publishing SEO and AEO work with the research and verification shown rather than asserted.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *