indexing API

An API — most commonly IndexNow (Bing/Yandex) or Google's Indexing API — that pushes URL changes to a search index in real time instead of waiting for crawlers.

The short answer

An indexing API pushes URL changes straight to a search index instead of waiting for a crawler to rediscover them. Two matter in practice: IndexNow, an open protocol operated by Bing and Yandex that accepts any URL, and Google's Indexing API, which is documented only for JobPosting and BroadcastEvent pages.

IndexNow and Google's Indexing API are not interchangeable

An indexing API inverts discovery. The default model is crawl-pull: a search engine decides when to revisit your site, and a page you changed this morning may not be re-fetched for days. Push means you send an HTTP request naming the URLs that changed, and the index queues a fetch immediately. Nothing about ranking or eligibility changes — you are only removing the waiting, which matters most when the whole point of a deploy was to change what a machine reads.

The two are confused constantly and they have almost nothing in common besides the category. IndexNow is an open protocol operated by Bing and Yandex, accepts any content type, requires only a key file hosted at your domain root, and is implemented natively by several CDNs and CMSes. Google's Indexing API is a Google-specific service with OAuth service-account authentication, and its documentation scopes it to two structured types: JobPosting and BroadcastEvent. Using it for general content is not a clever hack, it is outside the documented surface.

The third thing in this space is the sitemap ping, and it belongs in a different tier. A sitemap tells an engine which URLs exist and roughly when they changed; pinging it says the file has been updated. That is a hint about a list, not a request to fetch a specific page, and the engine schedules whatever it wants afterwards. Sitemaps remain the correct mechanism for breadth and discovery. Indexing APIs are the mechanism for latency on pages you just changed.

How push indexing is measured

The metric is latency, measured end to end: the wall-clock gap between a successful submission and the engine's crawler actually re-fetching the URL. You read it from your own server logs, which is the only place the truth lives — an accepted submission is a receipt, not a fetch. Measure it per engine and per URL type, because a page the engine considers low-value gets queued behind everything else regardless of how you submitted it.

Two secondary numbers are worth watching. Acceptance rate is the share of submissions returning success rather than an authentication or validation failure, and a rate below total almost always means a key file has drifted rather than that the URLs were rejected on merit. Change ratio is the share of submitted URLs whose content actually differed from the previously crawled version; submitting unchanged pages trains an engine to deprioritise your endpoint, so this number wants to stay near total.

Where the ceiling is

Push indexing compresses the crawl half of the loop only. The model-side half still moves on each platform's own schedule, and AIRank re-queries the four answer engines every six hours — so six hours is the floor on how quickly you can observe an effect, no matter how fast the fetch was.

A worked example: an IndexNow submission

IndexNow needs two things: a key you invent, published as a plain text file at your domain root whose filename is the key itself and whose body is the key repeated. That file is the proof of ownership — no OAuth, no console verification, no service account. Once it resolves, a single POST submits a batch of changed URLs, all of which must belong to the host named in the payload.

GET https://www.example.com/6a1f3c9d2b4e47f8a0c5d7e9b1234567.txt
6a1f3c9d2b4e47f8a0c5d7e9b1234567

POST https://api.indexnow.org/indexnow
Content-Type: application/json; charset=utf-8

{
  "host": "www.example.com",
  "key": "6a1f3c9d2b4e47f8a0c5d7e9b1234567",
  "keyLocation": "https://www.example.com/6a1f3c9d2b4e47f8a0c5d7e9b1234567.txt",
  "urlList": [
    "https://www.example.com/pricing",
    "https://www.example.com/docs/getting-started",
    "https://www.example.com/compare/alternatives"
  ]
}
Key file at the root, then a batch submission of three changed URLs

The keyLocation field is the part most implementations get wrong. It exists so the key file can live somewhere other than the exact root path, and if it points at a URL that 404s or redirects, the whole submission is rejected even though the URLs themselves were fine. The host field must match the URLs in urlList — a batch mixing apex and www hostnames fails as a unit. Fetch the key file yourself with a plain HTTP client before you debug anything else.

Three ways push indexing gets misused

  • The firehose submit. Someone wires the endpoint to a nightly job that resubmits the entire sitemap, so ten thousand unchanged URLs arrive every day. The protocol accepts them, because acceptance is cheap, and the engine quietly learns that your signal carries no information. The fix is to submit only on actual content change — hook the publish and update events in your CMS rather than a cron schedule, and let the URL count per day look as small as your real change rate.
  • The unverified key. The key file was created once during setup, then a hosting migration, a trailing-slash redirect rule or a new CDN cache rule made it 404 or return HTML. Every submission after that fails silently in the background, and nobody notices for months because the receipts were never checked. The fix is to log the response status of every submission and alert on the first failure, plus a scheduled fetch of the key file itself as a canary.
  • The push without a change. A team submits URLs after a deploy that only touched CSS or a shared component, so the engine re-fetches and finds byte-identical content. Do this often enough and the crawl budget you were trying to spend efficiently gets allocated elsewhere. The fix is to diff the rendered output before submitting and skip URLs whose extractable content is unchanged — a deploy is not the same event as a content change, even when they arrive together.

Indexing APIs against the other discovery mechanisms

MechanismWhat it optimisesHow you measure itWhere it lives
IndexNowRe-crawl latency on pages you just changedSubmission-to-fetch gap in your server logsA POST endpoint plus a key file at your root
Google Indexing APIImmediate pickup for two structured content typesAcceptance and fetch latency for those types onlyAn authenticated Google API, JobPosting and BroadcastEvent
sitemap.xmlDiscovery of every indexable URL on the siteSubmitted, discovered and indexed URL countsXML at the root, referenced from robots.txt
llms.txtWhat a model should read, and in what priorityWell-formed structure and link resolution rateMarkdown at the domain root
Four mechanisms for telling a machine about your pages

The ordering the table implies is real: these mechanisms are sequential, not alternative. robots.txt decides whether any of them get read, the sitemap handles breadth, llms.txt handles priority among what was discovered, and an indexing API handles speed on the subset that just changed. Pushing a URL that your robots.txt blocks accomplishes nothing, and pushing a page whose content is unchanged accomplishes less than nothing. Push last, on the pages where the delta is the whole point.

In AIRank

AIRank can be configured to automatically submit updated pages to IndexNow after fix deployment, compressing the usual days-long crawl-recrawl cycle down to minutes. This is one of the largest reasons our fix-to-citation-lift curve is steeper than doing the same fixes manually.

Frequently asked · Indexing API

Can I use Google's Indexing API for regular blog posts?

Not within its documented scope. Google's Indexing API documentation covers JobPosting and BroadcastEvent, and general content is outside that surface regardless of what the endpoint accepts. For ordinary pages the supported routes are a submitted sitemap and, for one-off urgency, Search Console's URL Inspection tool. IndexNow is the mechanism that actually accepts arbitrary content types, which is why it does the work in most stacks.

Does IndexNow help with ChatGPT citations?

Indirectly, and only on one half of the loop. IndexNow submits to Bing and Yandex, and Bing's index is a grounding source for browsing-mode retrieval, so a changed page reaching that index sooner can be retrieved sooner. What it does not do is change how a model weighs your page once it has it. Treat it as latency reduction on the crawl side, not as a citation lever in its own right.

How many URLs should I submit at once?

Only the ones that actually changed. The protocol accepts batches, so the technical limit is rarely the constraint — the practical constraint is signal quality. Submitting unchanged URLs teaches the engine that your endpoint carries no information, and the effect is a quieter response to the submissions that do matter. Hook the submission to publish and update events in your CMS rather than to a schedule, and let the daily count reflect your real change rate.

How do I know an IndexNow submission actually worked?

Check two things, in order. First the response status of the submission itself, which tells you the key file resolved and the payload validated — log it, because failures here are silent and persist for months. Then your own server logs for the crawler re-fetching the URL, which is the only evidence that anything happened downstream. An accepted submission is a receipt, not a fetch, and confusing the two is the usual reason a broken setup goes unnoticed.

Do I still need a sitemap if I'm pushing URLs?

Yes. They solve different problems. A sitemap is how an engine discovers that a URL exists at all, including every page you have never thought to push, and it stays the backbone of breadth coverage. An indexing API only accelerates pages you explicitly name, which by definition excludes anything you forgot. Run both: the sitemap for completeness, the push for latency on the pages you just changed.

Signals · sourced
2 typesthe only content types Google documents for its Indexing API: JobPosting and BroadcastEventGoogle · Indexing API quickstart
6 hcadence at which AIRank re-queries all four answer engines after a pushAIRank · Platforms we track
2 ptsfor a robots.txt that admits AI crawlers — the precondition for any push to matterAIRank · Technical readiness rubric

Written by

The AIRank Editorial Team

Research & editorial, AIRank

The AIRank editorial team runs the 47-point scanner, the Observer pings, and the GEO research programme every week. Writing is reviewed by the core engineers who build the Injector, Blaster, and Surgeon agents.

Last reviewed

About the team →