TechnicalAI Search

IndexNow: Setup, API Example and Real Limits

IndexNow is a free, open protocol that lets a website tell search engines instantly when a URL is added, updated or deleted. You send one request with the URL and a key to any participating endpoint, and it is shared with every engine in the network: Bing, Yandex, Naver, Seznam.cz, Yep and Amazon. Google does not take part.

This page is for site owners and developers deciding whether to set it up and how. It covers the key file, a working API call, the plugins that do it for you, what we run on this site, and what the protocol will never do.

On this page

What is IndexNow?

IndexNow is a push notification for crawlers. Instead of a search engine discovering a change days later through a scheduled crawl, your site tells it the moment the change happens. The IndexNow FAQ puts the problem plainly: crawler discovery “can be slow, taking days or even weeks.”

The protocol is deliberately small. There is a key that proves you own the host, a text file that publishes the key, and an HTTP request that lists changed URLs. Nothing else: no account, no dashboard, no fee.

Microsoft Bing and Yandex announced it in October 2021. When Cloudflare added support through Crawler Hints, it explained the motive in numbers: after a year of watching how often search crawlers revisit pages that had not changed, it estimated that 53% of that crawler traffic was wasted. A push signal is cheaper for everyone than polling.

Bing, the protocol’s main backer, now treats it as a first-class discovery signal. Its webmaster guidelines list IndexNow first among the ways Bing discovers URLs, ahead of XML sitemaps and links, and ask sites to notify it when URLs are added, updated or removed so Copilot and grounding results do not cite outdated pages. Adoption is large: in August 2022 Bing reported more than 16 million websites publishing over 1.2 billion URLs per day and credited the protocol with 7% of all new URLs clicked in its web results, and by December 2024 it counted over 3.5 billion URLs submitted per day.

Which search engines use IndexNow?

Six engines accept submissions today, and a URL sent to any one of them is shared with the rest. The protocol’s FAQ lists these endpoints alongside the global api.indexnow.org address:

EngineEndpoint
Global (any engine)https://api.indexnow.org/indexnow
Microsoft Binghttps://www.bing.com/indexnow
Yandexhttps://yandex.com/indexnow
Naverhttps://searchadvisor.naver.com/indexnow
Seznam.czhttps://search.seznam.cz/indexnow
Yephttps://indexnow.yep.com/indexnow
Amazonhttps://indexnow.amazonbot.amazon/indexnow

The sharing is a condition of membership. The search engine documentation says participating engines “MUST also agree to share URLs received by its /indexnow endpoint with other search engines participating in the protocol in a timely manner.” So you pick one endpoint and stop there. Sending the same URL to all six is wasted effort.

Google is not on the list. That shapes the value: for Google you still depend on sitemaps, internal links and Search Console. The diagram shows how one ping travels.

One IndexNow ping reaches every participating engine, but not Google On the left, your site sends one request with a URL list and key. It goes to a single endpoint, for example api.indexnow.org or bing.com/indexnow. That endpoint shares the notification with all participating engines: Microsoft Bing, Yandex, Naver, Seznam.cz, Yep and Amazon. Each engine then decides for itself whether to crawl. Google sits outside the network, shown with a dashed border, and still relies on sitemaps, links and Search Console. One ping, shared across the network Send to one endpoint; participating engines are required to share it Your site POST urlList + key + host One endpoint api.indexnow.org or any engine below Microsoft Bing Yandex Naver Seznam.cz Yep Amazon Google: not in the network Sitemaps, internal links and Search Console instead Each engine still decides whether to crawl and index

Scroll the diagram sideways to see all of it.

Source: Ambeltek diagram based on the IndexNow FAQ endpoint list and the IndexNow documentation for search engines.

How to set up IndexNow in three steps

If your CMS or CDN supports the protocol, turn it on and skip this section. If not, manual setup takes three steps, all from the IndexNow documentation:

  1. Generate a key. The key must be 8 to 128 characters, using only lowercase and uppercase letters, digits and dashes. A UUID or a random hex string works.
  2. Host the key file. Save a UTF-8 text file named {your-key}.txt whose only content is the key, and publish it at your site root, for example https://example.com/7b3877a610d2421e90e3109e54f9cd0b.txt. You can host it elsewhere on the same host and pass its address as keyLocation, but then the key only covers URLs under that folder. The documentation “strongly” recommends the root.
  3. Submit URLs when they change. Send a GET request for one URL or a JSON POST for many. Engines fetch the key file to verify ownership the first time and reuse it until you change the key.

To rotate a key later, replace the file and start submitting with the new key. Engines re-verify automatically on the next submission.

The API call, with a real example

A batch submission is one POST with four fields. This is the shape from the documentation, with placeholder values:

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

{
  "host": "www.example.com",
  "key": "7b3877a610d2421e90e3109e54f9cd0b",
  "keyLocation": "https://www.example.com/7b3877a610d2421e90e3109e54f9cd0b.txt",
  "urlList": [
    "https://www.example.com/url1",
    "https://www.example.com/folder/url2"
  ]
}

One POST can carry up to 10,000 URLs. For a single URL, a GET is enough: https://api.indexnow.org/indexnow?url=https://www.example.com/product.html&key=YOUR_KEY. Read the response code before you assume anything worked:

CodeMeaningWhat to do
200URL submitted successfullyNothing. It means “received,” not “indexed.”
202Received, key validation pendingWait; the engine has not fetched your key file yet.
400Bad requestCheck the JSON and URL encoding.
403Key not validThe key file is missing or does not contain the key.
422URLs do not belong to the host, or key does not match the schemaRemove off-host URLs; check the key characters.
429Too many requestsYou are submitting too often; slow down.

The figure below annotates each part of the request.

Anatomy of an IndexNow POST request and the key file it depends on A request body with four fields, each annotated. host: the hostname every URL must belong to, or you get a 422. key: 8 to 128 characters, letters, digits and dashes. keyLocation: where the UTF-8 key file lives, ideally the site root. urlList: up to 10,000 URLs per POST, for pages added, updated or deleted. Below, the key file at example.com slash key dot txt contains only the key; the engine fetches it to verify ownership, and a missing file returns 403. Anatomy of an IndexNow request Four fields, one file, and the error you get when each is wrong { "host": "example.com", "key": "7b3877a6...", "keyLocation": ".../key.txt", "urlList": [ ... ] } host every URL must be on it, or 422 key 8 to 128 chars: a-z, A-Z, 0-9, dash keyLocation UTF-8 file, root preferred urlList up to 10,000 URLs per POST Key file: example.com/{key}.txt contains only the key The engine fetches it to verify ownership. Missing file or wrong contents returns 403.

Scroll the diagram sideways to see all of it.

Source: Ambeltek diagram based on the IndexNow documentation (request format, key rules, response codes).

How we run IndexNow on this site

This site is a static Astro build, so there is no CMS plugin to switch on. We use a short Node script, scripts/submit-indexnow.mjs, run by hand after each deploy. It does four things in order:

  1. Reads the live sitemap index, not the local build folder, so it submits what is actually deployed. Astro’s sitemap integration writes sitemap-index.xml, and the script follows it to every URL.
  2. Refuses off-host URLs. If any URL is not on ambeltek.com, it stops before sending. That prevents the 422 error and avoids submitting a staging address by mistake.
  3. Checks the key file is live and contains the exact key. If the file is missing or wrong, the script exits and tells you to deploy it first. That is the 403 case caught locally.
  4. Posts the batch to api.indexnow.org with host, key, keyLocation and urlList, prints the status, and treats 200 and 202 as success.

Every run is logged in submissions/SUBMISSION-LOG.md with the date, URL count and response. The log exists so a later audit can tell “submitted” from “staged.” The chart shows the four runs logged so far.

URLs submitted to IndexNow per run on ambeltek.com, September 2026 Horizontal bars for four logged runs, each returning 200 OK. September 1, 2026: 63 URLs. September 4: 68 URLs. September 15: 78 URLs. September 18: 79 URLs. Axis from 0 to 80 URLs. A note says the first run was logged when Bing had 0 pages of the site indexed. Our IndexNow submission log URLs per run, each one answered 200 OK (from submissions/SUBMISSION-LOG.md) 1 Sep 2026 63 4 Sep 2026 68 15 Sep 2026 78 18 Sep 2026 79 020406080 First run: Bing had 0 of our pages indexed at the time of submission.

Scroll the diagram sideways to see all of it.

Source: Ambeltek's own IndexNow submission log for ambeltek.com, September 2026. Submission counts only; not an indexing or traffic result.

An honest caveat about our own setup: it submits the whole sitemap each time, which suits a site our size: the latest build’s sitemap lists 189 pages. Bing’s guidelines prefer “streaming submissions” of individual changes over batches, and the protocol’s FAQ says every submitted URL counts toward your crawl quota. On a site with thousands of pages, submit only what changed. The script’s details are specific to how this site is built, which we describe in our Astro SEO write-up.

What IndexNow does not do

The protocol speeds up discovery. It does not change what a search engine thinks of the page. The FAQ is explicit: “Submitting a URL does not guarantee immediate indexing.” After a ping, each engine still checks crawl quota, scheduling and quality before it fetches anything. Four things people expect and do not get:

  • Google coverage. Google is not a participant. Nothing you submit this way reaches it.
  • Rankings. A thin page crawled faster is still a thin page. Bing’s guidelines warn that “thin, ad heavy, or affiliate-only URLs may lose ranking eligibility.”
  • Free crawl capacity. Submitted URLs count toward your crawl quota. Pinging unchanged pages spends it for nothing. Our crawl budget guide explains why that matters on larger sites.
  • Unlimited throughput. Each engine sets its own daily threshold per site and does not publish it. A 429 means you hit it.

For user-generated content, the FAQ suggests submitting incrementally: each of the first 20 reviews on a page, then every fifth up to 100, then every tenth up to 1,000. That pattern is a good model for any high-churn page.

IndexNow plugins and CMS support

Most sites never need to write code for this. Bing’s IndexNow getting started page lists platforms where it is built in (Wix, Duda, GoDaddy, XenForo) and plugins for the rest. The main options:

PlatformHow to enable
WordPressThe official IndexNow plugin, or the built-in setting in Yoast, Rank Math, AIOSEO or SEOPress
ShopifyThird-party app (InstaIndex is listed by Bing)
Wix, Duda, GoDaddyBuilt in; nothing to do
Drupal, Joomla, TYPO3, UmbracoCommunity modules and extensions
CloudflareTurn on Crawler Hints in your account
Static or custom sitesA deploy script like ours, or a CMS webhook

The official WordPress plugin is maintained by Microsoft, lists more than 100,000 active installations, generates and hosts the key for you, and checks the rendered HTML for a noindex robots tag before submitting, so pages you have excluded from search are not pushed. SEO plugins that bundle the feature work too; just do not run two of them at once.

Pick one mechanism. Running a plugin and a CDN integration together sends duplicate pings for the same change. If you are on WordPress, our WordPress SEO guide covers where this fits among the other settings.

Who should bother with IndexNow?

Almost every site should switch it on when it costs one click, and only some sites should spend developer time on it. A quick way to decide:

  • Worth building: sites that change often and where staleness costs money or trust. Ecommerce with price and stock changes, job boards, event listings, news, marketplaces with user reviews, and any business whose prices or hours get quoted by AI assistants.
  • Worth a toggle, not a project: brochure sites and blogs that publish a few times a month. If your CMS or CDN has it, enable it. If not, a sitemap that updates on publish is enough.
  • Not worth it: sites whose audience is almost entirely reached through Google, with no interest in Bing, Copilot or the smaller engines. The protocol does nothing for Google.

One more consideration pushes small sites toward yes. A new domain can sit unindexed in Bing for a long time; our own first submission, 63 pages on September 1, 2026, was logged while Bing had 0 pages of the site indexed. A push signal is the cheapest way to get a new site in front of the crawler at all.

Where IndexNow fits in an AI search setup

Instant indexing matters more for AI answers than for classic rankings, because the cost of a stale page is higher. When Copilot or another assistant grounds an answer on an outdated version of your pricing page, the error gets repeated with your name on it. Bing’s guidelines tie IndexNow directly to reducing “outdated or incorrect URL references in Copilot responses and grounding results.”

A sensible order of work:

  1. Verify your site in Bing Webmaster Tools, where you can confirm IndexNow submissions are arriving.
  2. Enable it through your CMS, CDN or a deploy script. Submit changed URLs only.
  3. Keep the XML sitemap accurate, since Google still depends on it.
  4. Watch the AI Performance report in Bing to see which updated pages start earning citations.

This is one small part of being findable and current in AI answers. The rest, from Bing SEO to how assistants pick sources, is what our GEO service works on.

Frequently asked questions

What does IndexNow do?

IndexNow lets a website tell search engines the moment a URL is added, updated or deleted, instead of waiting for a crawler to notice. You send the URL and a key to one participating endpoint, and the notification is shared with every other engine in the protocol.

Is IndexNow free?

Yes. It is a free, open protocol. There is no account, fee or API quota you pay for. Each participating search engine sets its own daily submission limits per site, and those limits are not published.

Does Google support IndexNow?

No. Google is not among the participating engines listed on indexnow.org. For Google you still rely on XML sitemaps, internal links and the URL Inspection tool in Search Console.

How to use Bing IndexNow?

Generate a key, host it as a UTF-8 text file named after the key at your site root, then send changed URLs to https://www.bing.com/indexnow or the global api.indexnow.org endpoint. If your CMS or CDN already supports the protocol, you only need to switch it on.

Does IndexNow guarantee indexing?

No. A 200 response only means the engine received your URL. Each engine still decides whether to crawl and index it based on its crawl quota, scheduling and quality checks. The protocol makes discovery faster; it does not make weak pages rank.

Does IndexNow use up crawl budget?

Yes. The official FAQ says every submitted URL counts toward your site's crawl quota. Submit real changes only, not every page on every deploy, or you spend crawl capacity on pages that did not change.

OK

Olga Kunger

Founder & Lead Strategist, Ambeltek

Olga leads Ambeltek's web development, AI SEO, and GEO work — helping brands rank on Google and get cited by AI engines. More about Olga →

Want structured data that engines trust?

We audit, design and ship connected JSON-LD for your whole site, validated and monitored.