Teams searching for a Google ranking API are usually looking for one specific thing: a call that returns where a page ranks for a keyword. Google does not publish that.
What Google publishes is a set of APIs that describe your own performance, your own index status, and your own crawl situation. They are genuinely useful, and they are all free. They are also structurally unable to answer the question most people bring to the search.
We spent a day measuring what those APIs actually return on a live property, including the parts that are easy to misread. Three findings stood out: the data arrives three days late, the position number is an average that does not reproduce against a live result, and the one API that sounds most like a ranking check returns a verdict that says nothing useful on its own.
What Google actually publishes
Four surfaces get confused with a ranking API. Here is what each is for, based on Google's own documentation.
The Search Analytics API returns clicks, impressions, CTR, and average position for a verified property. It is the closest thing to ranking data that Google offers, and it is the source of every "average position" number in Search Console.
The URL Inspection API returns index status for a single URL: whether Google knows about it, whether it is indexed, and if not, why.
The Indexing API sounds like it submits pages for indexing. Google's documentation restricts its supported types to JobPosting and BroadcastEvent structured data, which is a narrow use case, not general index submission.
The Custom Search JSON API returns web results for a query. It searches an index you configure, and it does not tell you where your site ranks in Google's main results.
None of them returns "your rank for this keyword." That job does not exist in Google's product line, and the absence is deliberate rather than an oversight. Google has no commercial reason to hand out competitor rank data at scale.
What we measured: the data is three days old
We pulled the daily breakdown for our own property on September 12, 2026. The most recent date with any data was September 9.
Date available | Rows returned |
|---|---|
2026-09-02 | yes |
2026-09-03 | yes |
2026-09-04 | yes |
2026-09-05 | yes |
2026-09-06 | yes |
2026-09-07 | yes |
2026-09-08 | yes |
2026-09-09 | yes, newest |
Three days of lag, consistently. The window parameter counts back from the newest available date rather than from today, which is a small trap: a request for seven days returns eight dates ending on September 9, not September 12.
For a monthly report this is irrelevant. For the question "did my page change break anything yesterday," it is disqualifying. No configuration fixes it. The lag is on Google's side of the wire.
What we measured: an average position is not a rank
This is the more important finding, and it is the one that makes people believe a Google ranking API exists and is being coy.
Average position is the mean position of your URL across every impression in the period, weighted across countries, devices, and query variants. A live rank check returns one number, from one location, on one device, at one moment. They are different measurements that share a name.
We tested the gap on 25 queries drawn from our own Search Console data, then checked the same 25 keywords against a live United States, English, desktop SERP at depth 100.
Result | Count |
|---|---|
Queries usable in both sets | 23 |
Appeared in the live top 100 | 14 (61%) |
Had Search Console impressions but no reproducible live result | 9 (39%) |
Median absolute gap where both existed | 7.4 positions |
Mean absolute gap | 8.5 positions |
Largest gap | 36.6 positions |
Within 3 positions of each other | 4 of 14 |
Off by more than 10 positions | 4 of 14 |

Where both measurements exist, they disagree by a median of 7.4 positions.
Two details matter more than the averages.
First, nine of 23 queries produced a Search Console position but no live result at all in a United States, English, desktop check. That is not a bug. Impressions accumulate from other countries, other languages, other devices, and image or video surfaces. A single geo-targeted check will not reproduce them, and a team that treats the two numbers as the same measurement will spend a week chasing a discrepancy that is an artifact of the method.
Second, the direction is not consistent. Most live positions sat below the Search Console average, which is what you would expect when the average includes better-performing surfaces. But one query moved 36.6 positions the other way, from 73.6 to 37. There is no correction factor to apply.

The gap runs in both directions, so there is no correction factor to apply.
The practical consequence for anyone shopping for a Google ranking API: the free data will not tell you a rank, and the paid data will not agree with it. Both are correct measurements of different things. Treating either as a substitute for the other is where the reporting goes wrong.
Where the first-party side is genuinely irreplaceable is coverage, which we measured separately in the SERP API alternatives comparison.
What the URL Inspection API returns instead
The URL Inspection API is the one Google surface that feels like a rank check, because you give it a keyword-free URL and get a status back. We tested two URLs.
URL state | Verdict | Coverage state | Last crawl time |
|---|---|---|---|
Published about one hour earlier | NEUTRAL | URL is unknown to Google | Unknown |
Published about nine hours earlier | NEUTRAL | Discovered, currently not indexed | Unknown |
Both returned the same verdict. The field that actually differentiates the two cases is the coverage state string, which is a sentence, not an enum. The verdict field says NEUTRAL for a URL Google has never seen and for a URL it has discovered but not indexed.
That is a usable API and a poor monitoring signal on its own. If you want an alert when a page is not indexed, parse the coverage state rather than the verdict, and expect the last crawl time to be absent for exactly the URLs you care about most.
The four surfaces, and the job none of them does
Question | Google surface | Answer |
|---|---|---|
How did I perform for this query last week | Search Analytics API | Yes, three days late, averaged |
Is this URL indexed | URL Inspection API | Yes, per URL, on request |
Where do I rank right now for any keyword | none | No |
Where do my competitors rank | none | No |
What does the SERP look like for a keyword I do not rank for | none | No |
The pattern is consistent. Google's APIs describe your property from the inside. A ranking question is asked from the outside, about a result page, and Google does not serve that.
How to cover the gap without overpaying
The practical setup is two sources with different jobs, not one source asked to do both.
Use Google's APIs for ground truth about your own property. Clicks, impressions, and index status are first-party facts you cannot get anywhere else, and they are free. Pull them on a schedule and treat the three-day lag as a property of the instrument.
Use a SERP source for the outside view. Live positions, competitor positions, and keywords you do not yet rank for. This is the paid part, and it is cheaper than most teams assume: in our test, checking 23 keywords at depth 100 cost $0.2975, which is $0.0129 per check.
Do not reconcile the two numbers. They measure different things. The useful move is to read them together: Search Console tells you what happened, and a live check tells you what is happening. When they disagree, look at the query's country and device mix before concluding anything.
The mechanics of running both from one script are in our two source tracker build, and the cost side of the live half is priced in the bulk check test.
FAQ
Does Google have an official ranking API? No. Google publishes APIs for your own search performance (Search Analytics), index status (URL Inspection), and two narrow submission types (Indexing). None returns a rank for a keyword.
Why does Search Console show a position if there is no ranking API? Because average position is a performance metric computed from your impressions, not a rank lookup. It is the mean position across all impressions in the period, averaged across countries, devices, and surfaces.
How far behind is Search Console data? Three days in our measurement on September 12, 2026, with the newest available date being September 9. The window parameter counts back from that date, so a seven-day request returns eight dates ending on the newest available day.
Can the URL Inspection API tell me if a page is indexed? Yes, and it is the right tool for that job. Read the coverage state string rather than the verdict field, because the verdict returns NEUTRAL for both an unknown URL and a discovered-but-not-indexed URL.
Is the Custom Search JSON API a ranking API? No. It returns results from a search engine you configure, not your position in Google's main results.
What is the cheapest way to get real rank data? Check the smallest set of keywords you actually act on, at the depth that matches where you rank. Depth 10 checks cost $0.002 per keyword in our testing and depth 100 checks cost $0.014, so the depth setting moves the bill seven times more than the keyword count does.
Auspia view: the honest answer to "is there a Google ranking API" is no, and the useful follow-up is to stop looking. Google's APIs answer first-party questions well and cannot answer rank questions at all. Budget a small amount for the outside view, and spend the rest of the effort on the part Google will not do for you, which is deciding what to change when the two numbers disagree.
Author: Gabriel Finch, Search Retrieval Researcher, 1,200+ AI Answers Reviewed at Auspia. Gabriel writes about search infrastructure, retrieval systems, and what each data source can actually see.




