What Is IndexNow? The Protocol Explained, With Real Measurements From Our Server Logs (2026)

What Is IndexNow? The Protocol Explained, With Real Measurements From Our Server Logs (2026)

What is IndexNow? In short, IndexNow is an open protocol that lets you tell search engines that a page is new, has changed, or has been deleted. Instead of waiting for a crawler to wander by, you send a single HTTP request containing the address. Bing, Yandex, Seznam, Naver and a handful of other services take part. Google does not.

We have used IndexNow on getmind.io since August 1, 2026, and we ping every new article right after deployment. For this article we looked at what actually happens next. We analysed 32 days of server logs (September 19 to October 21, 2026) and ran a few targeted tests this morning, including some with deliberately fake keys. Two results up front: bingbot fetched 11 out of 12 new articles within 10 to 29 seconds. And: a 202 status code does not mean your key is valid. We submitted a made-up key and still got 202.

This guide covers how IndexNow works, which search engines participate, how to set it up in five minutes, what the status codes mean, where the limits are, and who should bother.

The Yoast video is from March 2025, a little older than our usual six-month limit. It is short and shows clearly how IndexNow works inside a WordPress plugin. The protocol itself has not changed since; only the list of participants has grown.

What Is IndexNow? The Short Version

IndexNow was announced by Microsoft Bing and Yandex in October 2021. The idea is simple and flips the traditional model around.

Without IndexNow, search works on a pull model. A crawler visits your pages every so often and checks whether anything changed. On most visits nothing has. That wastes resources on both sides, and new content is still often discovered hours or days later. An XML sitemap helps, but the crawler still has to come by on its own schedule.

With IndexNow, it works on a push model. You publish something and report the URL immediately. The search engine knows that exactly this address is new and can fetch it on purpose.

Push instead of pull: on the left a crawler checks many doors on spec, on the right a single door rings and the crawler goes straight to it

Three properties define IndexNow:

  1. It is open. The protocol is documented at indexnow.org. You need no account, no sign-up and no plugin.
  2. One ping covers everyone. Participating search engines have committed to sharing submitted URLs with each other. You notify one participant and the others hear about it.
  3. Ownership is proven with a key file. To stop anyone from submitting URLs for your domain, you place a text file containing a self-chosen key on your server.

What IndexNow is not: it is not a ranking factor, not an indexing guarantee and not a substitute for good content. It only speeds up discovery. Whether a page is added to the index is still the search engine’s decision.

Which Search Engines Support IndexNow?

The official list of participants is published as machine-readable JSON at indexnow.org/searchengines.json. We fetched it on October 21, 2026. It contains seven entries:

ParticipantEndpointNote
Microsoft Bingwww.bing.com/indexnowAlso powers Copilot, DuckDuckGo and Ecosia results
Yandexyandex.com/indexnowRussia, Turkey, CIS
Seznamsearch.seznam.cz/indexnowCzech Republic
Naversearchadvisor.naver.com/indexnowSouth Korea
Yepindexnow.yep.com/indexnowAhrefs’ search engine (its meta.json returned 403 when we checked)
Internet Archiveinternetarchive.indexnow.org/indexnowFor the Wayback Machine
Amazonbotindexnow.amazonbot.amazon/indexnowAmazon’s crawler, used for Alexa and AI services among others

There is also the neutral shared endpoint api.indexnow.org/indexnow, which most plugins use.

Google is missing. Google said in 2021 that it would test IndexNow, but it never joined. For Google you still rely on sitemaps, internal linking and URL Inspection in Search Console. How we handle that for our own articles is covered in the Google section below.

Why does Bing matter if Google dominates search? Because Bing is the index behind Microsoft Copilot and an important source for several AI assistants. If you want to show up in AI answers, you want to be indexed quickly and completely on Bing. We wrote about that in detail in our Bing SEO guide.

A central hub receives a single beam of light and splits it toward four different towers, illustrating one IndexNow ping being shared between search engines

How Does IndexNow Work Technically?

The protocol has exactly three building blocks: a key, a key file and an HTTP request.

The key

The key is a string you choose yourself. According to the documentation it must be 8 to 128 characters long and may only contain letters (a-z, A-Z), digits and dashes. The easiest way is a random hex string:

openssl rand -hex 16
# example: 4f8a2c91d7e60b35a1c4f9e28d7b063a

We tested what happens with a key that is too short. With key=abc, api.indexnow.org immediately returns 422 with the message “Given key is not valid. Your key should have a minimum of 8 and a maximum of 128 alphanumeric characters.” So this error is at least unambiguous.

The key file

To prove that you operate the domain, you place a text file in the root directory. The file name is the key plus .txt, and the content is the key.

echo -n "4f8a2c91d7e60b35a1c4f9e28d7b063a" > public/4f8a2c91d7e60b35a1c4f9e28d7b063a.txt

With Astro, Next.js, Hugo or any framework that has a public/ folder, the file ships automatically with every deployment. On WordPress, Shopware and similar systems a plugin usually takes care of it.

The documentation allows a second option: the file lives somewhere else on the host, and you pass its location in the keyLocation field with every submission. There is a catch. A file at /catalog/key.txt may only vouch for URLs that start with /catalog/. That is why the documentation explicitly recommends the root directory.

A glowing key lies on a card at the entrance of a website building while a distant robot scans it, illustrating ownership verification in IndexNow

The submission

For a single URL, a GET request is enough:

curl -s -o /dev/null -w "%{http_code}\n" \
  "https://api.indexnow.org/indexnow?url=https://your-domain.com/blog/new-article/&key=4f8a2c91d7e60b35a1c4f9e28d7b063a"

For multiple URLs you use POST with JSON. Up to 10,000 URLs per request are allowed:

curl -X POST https://api.indexnow.org/indexnow \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "host": "your-domain.com",
    "key": "4f8a2c91d7e60b35a1c4f9e28d7b063a",
    "keyLocation": "https://your-domain.com/4f8a2c91d7e60b35a1c4f9e28d7b063a.txt",
    "urlList": [
      "https://your-domain.com/blog/article-one/",
      "https://your-domain.com/blog/article-two/"
    ]
  }'

That is all there is to it. No OAuth, no registration, no library.

Setting Up IndexNow Step by Step

Depending on your platform, setup takes between one and ten minutes.

WordPress

The major SEO plugins have IndexNow built in. Rank Math has a dedicated IndexNow module you switch on in the settings. Yoast SEO sends pings automatically in its Premium version. All in One SEO supports it as well. Microsoft also publishes its own plugin called “IndexNow”. The one thing to watch: make sure only one plugin is submitting, otherwise every change gets reported twice. Which SEO plugin suits which use case is covered in our WordPress SEO plugin comparison.

Cloudflare

If your domain runs through Cloudflare, you can enable Crawler Hints under Caching → Configuration. Cloudflare then reports changed pages via IndexNow on its own. It is the most convenient option because you need neither a key nor code. You do, however, give up control over which URLs get submitted.

Shopify, Shopware and other shop systems

Shopify has apps in its app store, Shopware has plugins in its store. For shops, the key point is that not every stock level change should trigger a ping. Otherwise you report thousands of product pages a day even though nothing changed for searchers.

Static sites and custom systems

For a statically generated site like getmind.io, you hook a small script into your deployment. Ours boils down to this:

// scripts/indexnow.mjs
import { readFileSync } from 'node:fs';

const HOST = 'your-domain.com';
const key = readFileSync('.indexnow-key', 'utf8').trim();
const urlList = process.argv.slice(2);

const res = await fetch('https://api.indexnow.org/IndexNow', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json; charset=utf-8' },
  body: JSON.stringify({
    host: HOST,
    key,
    keyLocation: `https://${HOST}/${key}.txt`,
    urlList,
  }),
});

const ok = res.status === 200 || res.status === 202;
console.log(`${urlList.length} URL(s) -> HTTP ${res.status} ${ok ? 'OK' : 'ERROR'}`);
if (!ok) process.exit(1);

Run it after deployment:

node scripts/indexnow.mjs \
  "https://your-domain.com/de/blog/neuer-artikel/" \
  "https://your-domain.com/blog/new-article/"

Two practical details. First, we keep the key in a separate file rather than in the code, so it cannot slip into a public repository by accident. Second, the script treats both 200 and 202 as success. Why that matters, and why 202 still proves nothing, is shown in the measurements below.

If you want to trigger submissions on a schedule instead of after each deploy, for example once a night for all changed pages, our guide on how to create a cron job has you covered.

Checking the key file

After deploying, confirm that the file is actually reachable and contains nothing but the key:

curl -s https://your-domain.com/4f8a2c91d7e60b35a1c4f9e28d7b063a.txt
curl -s -o /dev/null -w "%{http_code}\n" https://your-domain.com/4f8a2c91d7e60b35a1c4f9e28d7b063a.txt

The first line must return exactly the key, with no HTML. The second must return 200. Some servers answer unknown paths with an error page that carries status 200. Everything looks fine, and the search engine still cannot find the key.

What Do the IndexNow Status Codes Mean?

The documentation lists six responses. We tried them on October 21, 2026, where that was possible.

CodeMeaning per the docsWhat we observed
200URL submitted successfullyWith our real key, POST to api.indexnow.org
202Received, key validation pendingWith a completely made-up key (api.indexnow.org, Bing, Yandex)
400Invalid formatRequest without a url parameter: “The url field is required.”
403Key not validSeznam and Naver with a wrong key, right in the response
422URL does not belong to host, or key does not match the schemaKey abc (too short)
429Too many requestsNot provoked

The difference between 200 and 202 is important. Even 200 only means “received”. The documentation says so explicitly: the code confirms that the search engine got your URL, not that it will be crawled or indexed.

Our Measurements: What Really Happens After an IndexNow Ping

We analysed the getmind.io access logs from September 19 to October 21, 2026. Our web server, Caddy, writes every request as a JSON line with timestamp, IP address, user agent and status code. We did not rely on user agents alone: for our samples we checked reverse DNS. The bingbot addresses resolved to *.search.msn.com, Googlebot to *.googlebot.com, YandexBot to *.spider.yandex.com.

A timeline with markers where some robots arrive shortly after the start and others much later, illustrating measured crawler arrival times

Measurement 1: How fast does bingbot arrive?

Between October 15 and 20, 2026, we published six articles, each in German and English. That is twelve new URLs. Every one was submitted via IndexNow right after deployment. As the starting point we used the very first request to each URL, which in every case was our own verification request with curl right after deploying.

New URLbingbot after
/de/blog/astro-vs-nextjs/16 seconds
/blog/astro-vs-nextjs/16 seconds
/de/blog/was-ist-ein-headless-cms/10 seconds
/blog/what-is-a-headless-cms/16 seconds
/de/blog/was-ist-git/23 seconds
/blog/what-is-git/29 seconds
/de/blog/git-befehle-liste/21.7 minutes
/blog/git-commands-list/15 seconds
/de/blog/robots-txt-erstellen/25 seconds
/blog/create-robots-txt/29 seconds
/de/blog/sitemap-erstellen/16 seconds
/blog/create-sitemap/16 seconds

bingbot fetched eleven of twelve URLs within 10 to 29 seconds. One outlier arrived after almost 22 minutes. For comparison, the other crawlers on the same pages: PerplexityBot after 2.9 to 11.9 hours, Googlebot (where it came at all) after 2.6 to 19.4 hours, ClaudeBot after 15.5 to 16.8 hours and only for the German versions, Amazonbot after 46 to 78 hours.

That is the real benefit of IndexNow, cleanly measurable: Bing learns about a page instantly and fetches it almost instantly. Whether it then lands in the index quickly is a different question. No log answers that; only Bing Webmaster Tools does.

Measurement 2: A fake key still gets 202

We wanted to know whether search engines validate the key right away. So we sent a submission to five endpoints using the made-up key deadbeefdeadbeefdeadbeefdeadbeef. No file with that name exists on our server.

EndpointResponse
api.indexnow.org202
www.bing.com202
yandex.com202 with {"success":true}
search.seznam.cz403 “The key couldn’t be loaded or it doesn’t match the URLs specified in the request.”
searchadvisor.naver.com403 after 3.9 seconds

Three of five endpoints replied “accepted” even though the key did not exist. Yandex even returned success: true. That is not a bug in the protocol; it is documented behaviour, since 202 means “key validation pending”. In practice it means: if you only look at the status code, you will not notice that your key file is missing. That affects many deploy scripts and plugins that treat anything below 300 as success. Our own script counts 202 as success too.

What showed up in our logs afterwards was interesting. Within three to ten seconds, bingbot (two IPs), YandexBot (four IPs from the 5.45.207.0/25 range published in Yandex’s meta.json), Seznam’s IndexNow bot and a client from a South Korean network all tried to fetch the non-existent file. The last one had no bot name in its user agent (just ReactorNetty) but arrived three seconds after our submission to Naver. It was most likely Naver’s check, though we cannot prove it. All of them got 404. So validation does happen; it just happens afterwards, and you are not told about the result.

Measurement 3: A single ping to the shared endpoint

Then we repeated the test cleanly: one request to api.indexnow.org with a new, also made-up key. Result: 202, and after 2.2 to 3.8 seconds five requests from bingbot (two IPs) arrived, all 404. No other search engine fetched the file within the next 90 seconds.

That does not prove that sharing between search engines is broken. Other participants may receive the URL and trust Bing’s check, or validate later. It does show: if you only submit to api.indexnow.org, Bing is the only one you see at first.

Measurement 4: Our real key file was never fetched

The most surprising result: our real key file has been sitting in the root directory since August 1, 2026, and is referenced in the keyLocation field of every submission. In 32 days of logs, not a single bot requested it. The only hits came from ourselves.

Meanwhile bingbot fetched every submitted URL within seconds. The obvious explanation is in the documentation: search engines verify the key once and then keep using it “until you change the key”. Our key was presumably verified with the first submissions back in August and cached ever since. The flip side: if you delete your key file at some point, you will not notice right away. Submissions keep working for a while until the search engine checks again. So monitor the file yourself, for example with a simple uptime check.

Measurement 5: Who else shows up?

We also counted how often IndexNow participants visited getmind.io during the measurement period:

CrawlerRequests in 32 daysDistinct blog URLs
bingbot4,125–
YandexBot516174
SeznamBot48767
Naver (Yeti)00
Internet Archive2–

For comparison, Googlebot came 7,931 times. So Yandex and Seznam do crawl our site, but much less than Bing. For our newest page, Yandex showed up about 18 hours after publication. A crawler with Naver’s Yeti user agent did not fetch any of our content during the period, which is unsurprising for a site aimed at German and English readers.

What IndexNow Cannot Do: The Limits

To keep expectations realistic, here are the limits we see in practice:

  • No indexing guarantee. IndexNow speeds up discovery. Whether a page is added still depends on quality, duplicates, canonical tags and the overall picture of your site.
  • No Google. Google does not participate. If you want to notify Google faster, use URL Inspection in Search Console.
  • No ranking boost. A submitted page does not rank better than a crawled one. It is just there sooner.
  • No replacement for sitemaps or robots.txt. IndexNow reports changes. The sitemap describes your full inventory, and robots.txt controls what may be crawled. If a submitted URL is blocked in robots.txt, bingbot still may not fetch it.
  • Spamming hurts. Repeatedly submitting URLs that have not changed risks throttling (429). Bing also says openly that submitted URLs are crawled with priority and that this counts against your crawl budget.
  • 202 is not proof. See measurement 2.

IndexNow and Google: What We Do There

Because Google does not participate, two paths run side by side after every new article:

  1. IndexNow for Bing, Yandex, Seznam, Naver and the other participants, automated by script.
  2. Search Console for Google: we enter the URL in URL Inspection and click “Request indexing”, separately for each language version.

On top of that we keep a clean sitemap with correct lastmod dates. Google reads our sitemap roughly once a day. Even so, Googlebot reached our new articles only after 2.6 to 19.4 hours, and for five of twelve URLs not at all during the measurement period. Bing was there within seconds. The difference is stark.

Whether Google will ever join is an open question. It announced tests in 2021 and has not participated since. We would not count on it.

One reason IndexNow has become more important over the past two years: many AI assistants draw on search indexes. Microsoft Copilot uses the Bing index. For other assistants the picture is less clear, because they do not fully disclose where their web results come from. What is certain: content that Bing indexes quickly and completely has a better chance of showing up in Copilot answers.

Amazonbot, which collects data for Amazon’s AI services, has also joined. On our site, though, Amazonbot reached new pages only after 46 to 78 hours. We could not see any effect from the IndexNow submission there.

The AI companies’ own crawlers, such as ClaudeBot, GPTBot, OAI-SearchBot and PerplexityBot, do not participate in IndexNow. We measured how they behave on our site in our AI crawler log analysis.

When Is IndexNow Worth It, and When Not?

It is worth it if:

  • you publish new content regularly, such as a blog, a shop with a changing catalogue, or a news site.
  • content needs to be current quickly, such as prices, availability, events or job listings.
  • Bing and Copilot matter to you.
  • you delete pages and want them to drop out of the index quickly. You may submit deleted URLs too.

It is less worth it if:

  • your site almost never changes. A five-page business card site gets crawled regularly anyway.
  • your audience uses Google almost exclusively and you do not care about AI visibility.

Since setup on most platforms is a single toggle or a few lines of code, there is rarely a good reason not to do it. The effort is small and the risk is practically zero.

Common IndexNow Mistakes

From our tests and day-to-day use we collected these mistakes:

  1. The key file contains HTML. Some CMSs serve a full themed page under every path. Search engines expect plain text.
  2. The file redirects. Among the verification requests we also saw a 308, because one bot first asked over HTTP and was redirected to HTTPS. That is fine. It becomes a problem when the redirect leads to another domain or to a homepage.
  3. Several plugins submit twice. For example an SEO plugin and Cloudflare Crawler Hints at the same time.
  4. Everything gets submitted, even without changes. A cache refresh is not a content change.
  5. The host does not match. If you submit https://www.example.com but host the key at https://example.com, you will run into trouble. The host in the JSON, the URLs and the key file have to line up.
  6. 202 is logged as success and never checked. After setup, check your server logs once to confirm that a crawler fetches the key file with a 200. Or look at the IndexNow section in Bing Webmaster Tools to see whether your submissions arrive.

Charly Leetham’s video is from August 2025 and walks through the question from a site owner’s perspective, including why pages may be missing from Bing.

How to Check Whether IndexNow Works for You

If you have access to your server logs, that is the most reliable test. Submit a URL and look right afterwards:

# submit a URL
curl -s -o /dev/null -w "%{http_code}\n" \
  "https://api.indexnow.org/indexnow?url=https://your-domain.com/new-page/&key=YOUR_KEY"

# look at the logs 30 seconds later (path depends on your server)
sleep 30
grep -E "bingbot" /var/log/nginx/access.log | tail -20

If bingbot fetches the submitted page within seconds to minutes, it works. If it only fetches the key file and gets a 404, your key is set up wrong.

Without log access you still have Bing Webmaster Tools. It has a dedicated IndexNow section showing which URLs arrived and whether there were errors. We covered setting up Webmaster Tools in our Bing SEO guide.

Conclusion: What Is IndexNow, and Do You Need It?

IndexNow is a small, open protocol that solves an old problem: search engines learn immediately when something on your site changes. Setup takes minutes, costs nothing and delivers a measurable effect. For us, bingbot reached a new page in under 30 seconds in 11 out of 12 cases.

Take two things away from our measurements. First: 202 is not success, it only means “arrived”. Even a made-up key gets that response from Bing and Yandex. So check your logs or Bing Webmaster Tools once to make sure everything really works. Second: a key file that has been verified once may not be fetched again for a long time. An error will not surface right away.

IndexNow does not replace Google Search Console, your sitemap or good content. But it is one of the few SEO measures where effort and payoff line up this clearly.

FAQ: Common Questions About IndexNow

What is IndexNow in simple terms?

IndexNow is an open protocol that lets you tell search engines via an HTTP request that a URL is new, has changed or has been deleted. The search engine then does not have to wait for a crawler to come by.

Does Google support IndexNow?

No. Google tested IndexNow in 2021 but has not joined to this day. For Google you use URL Inspection in Search Console and an up-to-date sitemap.

Which search engines use IndexNow?

According to the official list on indexnow.org (as of October 21, 2026): Microsoft Bing, Yandex, Seznam, Naver, Yep, the Internet Archive and Amazonbot. Because DuckDuckGo and Ecosia largely build on Bing, they benefit indirectly.

Does IndexNow cost anything?

No. The protocol is free and requires no account. All you need is a key you choose yourself and a text file on your server.

Is IndexNow a ranking factor?

No. IndexNow only makes sure pages are discovered faster. How well they rank depends on the same factors as without IndexNow.

How fast does IndexNow work?

In our logs, bingbot fetched 11 of 12 submitted articles within 10 to 29 seconds and one after almost 22 minutes. When the page then appears in the index is a separate matter and can take longer.

What does status code 202 mean in IndexNow?

202 means “received, key validation pending”. In our test, api.indexnow.org, Bing and Yandex returned 202 even for a completely made-up key. So the code does not confirm that your key is correct.

Do I have to ping every search engine separately?

No. Participants have committed to sharing submitted URLs with each other, so one submission to one endpoint is enough. In our test, however, after a single ping to api.indexnow.org only bingbot checked the key file at first.

Where do I put the IndexNow key file?

In the root directory of your domain, as {key}.txt with the key as its content. Alternatively somewhere else with its location given in keyLocation, but then the file only covers URLs below its folder.

Can I use IndexNow to report deleted pages?

Yes. The documentation explicitly allows submitting deleted URLs. The search engine then fetches the address, gets a 404 or 410, and can drop it from the index sooner.

How many URLs can I submit with IndexNow at once?

Up to 10,000 URLs per POST request. You should only submit URLs that really changed, though. Repeatedly submitting the same pages risks throttling with status 429.

Do I need IndexNow if I already have a sitemap?

The two complement each other. The sitemap describes all pages on your site; IndexNow reports individual changes immediately. On our site, Bing arrived within seconds after IndexNow pings while Google, despite reading the sitemap daily, took hours.