Skip to content
Enjoy 20% off for 12 months on all plans. Use promo code: HYPERGROWTHClaim it

Check Keyword Rankings Free With Google API (The Real Way)

SearchBlueprint · · 13 min read · scored 95/100

Close-up of the Google homepage on a screen showing search options.

You can check keyword rankings free with Google API access, but only through one door: the Search Console API. It returns queries, clicks, impressions, CTR, and average position for sites you own, at no charge. Google offers no public API for checking any domain's rank, and the old Custom Search JSON API retires for existing customers on January 1, 2027.

Key takeaways

  • The Search Console API is the only official, free Google source of keyword ranking data, and it works solely for properties you have verified.
  • Average position is an average across impressions, not the number you see in one live search, so the two will rarely match.
  • A Google Sheet plus a short Apps Script gives you a free daily ranking log with up to 25,000 query rows per request.
  • Search Console data typically finalizes after 2 to 3 days, so pull yesterday's numbers with a lag or they will look wrong.
  • Competitor rank tracking is the hard boundary: for that you need a third-party SERP source, free or paid.

This guide is for site owners, marketers, and developers who want ranking data for their own verified sites without paying for a tracker. It covers the no-code route, the spreadsheet automation, the limits Google itself documents, and the point where free genuinely stops working.

Does Google have a free keyword ranking API?

Yes and no, and the distinction decides everything you build next.

Close-up of a tablet displaying Google's search screen, emphasizing technology and internet browsing.

The API that works: Search Console

The Search Console API exposes the same data as the Performance report: which queries triggered your site, which pages appeared, clicks, impressions, CTR, and average position. Every bit of it is free of charge; Google's own API documentation confirms the API carries no usage fees. The catch is scope. It requires OAuth 2.0 authentication and permission on the property, which means it only answers questions about sites you control.

The API people find first: Custom Search JSON

Most searches for a "Google ranking API" land on the Custom Search JSON API instead. It queries a Programmable Search Engine, not the live google.com results, so positions do not match what real searchers see. Its free tier was capped at 100 queries a day. Google has since closed it to new customers and set January 1, 2027 as the deadline for existing customers to transition off it. Do not build a rank checker on it.

This question is not new. A Google AJAX Search API forum thread asking for exactly this script dates back to February 2015 and has been viewed more than 4,000 times. The answers then are the answers now: the Custom Search route is a dead end for rank checking, and third-party SERP providers such as DataForSEO are the workaround for domains you do not own.

What the free Search Console API gives you (and what it never will)

Knowing the boundaries up front saves hours of confused debugging later.

A close-up shot of a laptop displaying a Google search page with related searches visible.

The data you can pull

Through the Search Analytics query method you can request queries, pages, countries, devices, dates, and, since Google added it in 2026, hourly breakdowns. Each row carries clicks, impressions, CTR, and average position. You can filter by search type (web, image, video, news, Discover, and Google News) and filter queries with operators like equals, contains, notContains, includingRegex, and excludingRegex. Google's Search Analytics API reference documents a rowLimit of up to 25,000 rows per request, with a startRow parameter for paging beyond that.

The 2026 change worth knowing: AI surfaces now count. Clicks, impressions, and position for AI Mode follow standard methodology, and an AI Overview occupies a single position, with every link inside that overview assigned the same position.

The four things it cannot do

Capability Search Console API (free) Paid rank tracker
Track your own site's keywords Yes, for every verified property, from Google's own logs Yes, for any site you add
Track competitor rankings No, the API refuses domains you cannot verify Yes, third-party SERP data covers any domain
Report real clicks and impressions Yes, these are measured values, not estimates No, traffic figures are modeled estimates
Show city-level SERP snapshots No, country and device are the finest cuts available Yes, most trackers go down to city or ZIP level
Cost Free, per Google's own documentation Entry plans are commonly listed at around $100 or more a month

There is a second, quieter limit: privacy filtering. Search Console withholds rare, anonymized queries, so your reported long tail is always an undercount of the real one.

How Google calculates average position

This is the part that trips up almost everyone who starts to check keyword rankings free with Google's data, so it deserves its own section.

A MacBook Pro displaying Google Search on a wooden table outdoors, next to a smartphone.

Google defines average position as the topmost position a link to your property occupied in results, averaged across all the impressions where it appeared. The definition, along with the warning that live results vary by time, place, device, and search history, sits in Google's own documentation at Google Search Central.

Three practical consequences follow:

  • Position is a distribution, not a number. If you appear at #3 on some impressions and #8 on others, the report might read something like 5.4, a position no single searcher ever saw.
  • The topmost result wins. When two of your pages rank for the same query, only the higher one feeds the average.
  • AI features share one slot. Every link cited inside an AI Overview is assigned that overview's single position.

Treat one manual search as an anecdote and the Search Console figure as the dataset. For decisions, the dataset wins.

Check keyword rankings free without writing code

Before automating anything, get the answer the fast way. The Performance report in Search Console is a complete free rank checker for your own site:

  1. Open Search results under Performance in Search Console.
  2. Toggle on average position, impressions, and clicks at the top of the chart.
  3. Switch to the Queries tab to see rankings per keyword.
  4. Filter by page, country, device, or query text to isolate what you care about.
  5. Compare date ranges to see movement rather than a snapshot.
Close-up of notebook with SEO terms and keywords, highlighting digital marketing strategy.

Two caveats bite here. The Queries table in the interface shows up to 1,000 top queries, with rare ones hidden for privacy. And the default view is the past 3 months, so a change from last week is invisible until you set the date range yourself.

To isolate a single keyword, add a query filter set to "equals" with the exact phrase. That one filter turns the whole report into a tracker for that term across countries, devices, and dates. If you want more manual approaches beyond Search Console, this walkthrough of five free ways to track your Google rankings compares them honestly.

Which free method fits your site

Method Setup effort What you get Best fit
Search Console UI None, you sign in and read Top queries (capped at 1,000 in the table) with position, clicks, and CTR Quick checks and monthly reviews on smaller sites
Google Sheets + Apps Script One script pasted once, then a daily trigger Up to 25,000 query rows per day, appended into a permanent history Ongoing free tracking your team can open and share
Python + the same API Developer setup with OAuth or a service account Identical data at scale, flowing into any database or dashboard Large sites and data teams
Free web rank checkers None A live SERP snapshot for a handful of keywords, including competitors Spot checks the Search Console data cannot answer

The free setup: Google Sheets plus Apps Script

This is the sweet spot for most sites. It costs nothing, runs on a schedule, produces a shareable sheet, and builds the one thing Search Console's interface does not hand you cleanly: your own permanent ranking history.

What you need first

  • A Google account with access to the property in Search Console.
  • The property identifier, either sc-domain:example.com or the full URL prefix such as https://www.example.com/.
  • Permission for Apps Script to use Sheets, external requests, and the Search Console read-only scope.

The script

Google notes that performance data is typically available after 2 to 3 days, so the script pulls a single day from 3 days back. That lag is not a bug; it is how you avoid logging incomplete numbers.

function logDailyRankings() {
  const site = 'sc-domain:example.com'; // or 'https://www.example.com/'

  // Search Console data usually finalizes after 2-3 days.
  const d = new Date();
  d.setDate(d.getDate() - 3);
  const day = Utilities.formatDate(d, 'Etc/UTC', 'yyyy-MM-dd');

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Rankings') || ss.insertSheet('Rankings');
  if (sheet.getLastRow() === 0) {
    sheet.appendRow(['date', 'query', 'clicks', 'impressions', 'ctr', 'position']);
  }

  const url = 'https://www.googleapis.com/webmasters/v3/sites/' +
    encodeURIComponent(site) + '/searchAnalytics/query';

  const res = UrlFetchApp.fetch(url, {
    method: 'post',
    contentType: 'application/json',
    headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
    payload: JSON.stringify({
      startDate: day,
      endDate: day,
      dimensions: ['query'],
      rowLimit: 25000
    })
  });

  const rows = (JSON.parse(res.getContentText()).rows || []).map(function (r) {
    return [day, r.keys[0], r.clicks, r.impressions, r.ctr, r.position];
  });

  if (rows.length) {
    sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, 6).setValues(rows);
  }
}

If you declare scopes explicitly in appsscript.json, include spreadsheets, script.external_request, and webmasters.readonly. Sites with more than 25,000 daily queries can page further using startRow.

Schedule it and forget it

In the Apps Script editor, add a time-driven trigger that runs logDailyRankings once a day. From that point the sheet grows by one day of history every morning, and after a few weeks you can chart any keyword's position over time with a pivot table. That is a functioning free rank tracker built entirely on Google's official data, with nothing scraped and nothing estimated.

A Python route for bigger sites

The same Search Analytics endpoint works from Python through Google's API client libraries. Authenticate with OAuth or a service account that has been added as a user on the Search Console property, request the same dimensions and filters, and write the rows wherever your reporting lives. The data is identical to the Sheets version; the only reason to choose Python is scale, joining rankings to other datasets, or feeding a dashboard your spreadsheet cannot serve.

Why free rank checking looks broken (and when it actually is)

Half the complaints about free ranking data come from misreading it. The other half are real limits. Knowing which is which keeps you from abandoning a setup that is working.

Mistakes that make good data look wrong

  • Checking manually while signed in. Google personalizes results by account, history, location, and device. SEO Review Tools' guidance for manual checks is blunt about it: use incognito, stay signed out, and even then expect variation.
  • Comparing one live search to an average. Your browser shows one impression; Search Console shows thousands averaged. A mismatch is expected, not evidence of a broken tracker.
  • Judging the newest days. The last 2 to 3 days of data are typically incomplete. A "crash" in yesterday's positions usually fills back in.
  • Trusting the default date range. The 3-month default flattens recent movement. Set the range explicitly when you are hunting a specific change.

Limits that are genuinely baked in

No amount of configuration gets you competitor data, city-level snapshots, or the anonymized rare queries Google withholds. That hidden long tail matters more than it sounds: the queries you cannot see are often the easiest ones to win more of. A free keyword suggestions tool rebuilds that missing map from the outside, surfacing long-tail phrasings your Search Console export will never list.

Competitor rankings: where the free Google road ends

The Search Console API answers one question perfectly: how does my verified site perform in Google's own logs? It structurally cannot answer the next question every site owner asks: where do my competitors rank for the same terms?

For occasional checks, a free Google rank checker that accepts any domain covers the gap without a subscription: enter a competitor's site and a keyword, and read their live position the same way you would read your own. For continuous competitor tracking at volume, the market moves to paid tools and SERP APIs. Here is what the vendors themselves list:

Tool Listed pricing What the listing includes Trial or limit
SE Ranking Core listed from $103.20/mo, Growth from $223.20/mo on its pricing page Daily top-100 tracking by location and device; an API add-on is listed from $149.00/mo, with 300k API credits on Growth 14 days free, no credit card
Keyword.com API access included on every plan rather than sold separately A REST API returning position, search volume, CPC, and competition, with no per-call charges 14-day trial listed with 100 keywords and 20 credits
SEO Review Tools rank checker Free Real-time first-page checks for your domain or a competitor's, across 14 country versions of Google 10 keywords per run

Pay-as-you-go SERP APIs such as DataForSEO sit between these: you pay per request for live position data on any domain, which suits developers who want competitor checks inside their own scripts.

Turn the ranking data into SEO wins

A sheet full of positions is only worth the actions it triggers. Three moves extract most of the value.

Find the striking-distance keywords

Filter your log for queries sitting at positions 4 through 10 with meaningful impressions. These are the terms Google already half-trusts you for, and the payoff for moving up is steep: SEO Review Tools cites a click-through rate of roughly 28% for the number one result against about 1% for position ten. The same content, three positions higher, can multiply its clicks.

Fix high-impression, low-CTR pages

When a query shows strong impressions and a decent position but almost no clicks, the ranking is fine and the snippet is failing. Rewrite the title and meta description against the intent the query reveals. Before investing, run the term through a free keyword checker to confirm its volume, difficulty, and intent justify the effort.

Group queries so pages stop fighting each other

Export your query list and cluster it by topic with a free keyword grouping tool. Two patterns jump out immediately: topics where no page clearly owns the cluster, which need new content, and queries where two of your URLs alternate, which need consolidating before they suppress each other's average position.

FAQs

Does Google have a free API to check keyword rankings?

Yes, for your own site only. The Search Console API returns queries, clicks, impressions, CTR, and average position for any property you have verified, free of charge. Google offers no API that reports rankings for arbitrary domains, and the Custom Search JSON API is closed to new customers with a transition deadline of January 1, 2027.

Is the Google Search Console API really free?

Yes. Google's documentation states that use of the Search Console API is free of charge. The practical constraints are access, since it requires OAuth 2.0 and permission on the property, and volume, with up to 25,000 rows per request and pagination beyond that.

Why doesn't my Search Console position match what I see when I search?

Because they measure different things. Search Console reports the topmost position your site occupied, averaged across all impressions from many locations, devices, and users. Your manual search is a single personalized impression, shaped by your history, location, and login state. A gap between the two is normal.

Can I track competitor keyword rankings with the Search Console API?

No. The API only serves properties you can verify, so competitor domains are off limits by design. For competitors you need SERP-based tools: a free rank checker for spot checks, or a paid tracker or SERP API for daily monitoring at scale.

How fresh is the ranking data from the Search Console API?

Google notes that performance data is typically available after 2 to 3 days, which is why automated setups pull with a lag rather than requesting yesterday. In 2026 Google also added hourly granularity, and AI Mode and AI Overviews now appear in the data, with every link in an overview sharing that overview's single position.

Talk to the team about your rankings

A ranking log tells you where you stand, not what to fix first. Once you check keyword rankings free with Google API data and the spreadsheet raises more questions than it answers, the next layer is an audit that turns those positions into a prioritized work plan. Talk to the team, and look through a sample SEO report first so you can see exactly what you would be getting.

See what this looks like on your own sitePaste a URL and SearchBlueprint scores it on the same content engine that scored this article, then names the fixes in the order they pay off.Get your free plan

Resources / References

  1. Google's own API documentation
  2. Search Analytics API reference
  3. Google Search Central

Sources

Disclaimer: This article is general legal information, not legal advice, and does not create a solicitor-client relationship. The law changes and its application depends on your particular facts. Speak to a qualified lawyer in the relevant jurisdiction before acting — some rights and claims are subject to strict time limits.

About the author

SearchBlueprint researched, wrote and scored this article with the content pipeline our customers run on their own sites. The score in the byline is what our content engine gave this page before it published. Nothing here is reviewed by hand, which is the point: it is the product's output, published where anyone can check it.