IndexNow
An open protocol for telling participating search engines that a URL has changed. One HTTP request pushes Bing, Yandex, Naver, and Seznam to recrawl — Google does not participate.
What it is
IndexNow is a simple push protocol that lets a site tell search engines a URL has been added, updated, or deleted. The publisher hosts a key file at the site root and sends an HTTP request to a participating endpoint listing the changed URLs. Bing, Yandex, Naver, Seznam, and Yep all consume the same feed; one submission propagates to all of them. Google does not participate.
The submission is a single GET or POST:
POST /indexnow HTTP/1.1
Host: api.indexnow.org
Content-Type: application/json
{
"host": "example.com",
"key": "abc123...xyz",
"keyLocation": "https://example.com/abc123xyz.txt",
"urlList": [
"https://example.com/articles/csp",
"https://example.com/articles/hsts"
]
}
The key file at https://example.com/abc123xyz.txt must contain the same key as plain text — that proves you control the host.
Why it matters
Discovery is the slowest part of indexing. A sitemap tells crawlers what exists; IndexNow tells them what just changed. For news, e-commerce stock changes, and price updates, that gap matters — Bing typically recrawls within minutes of an IndexNow ping versus hours or days from sitemap-only discovery.
It is also a low-effort improvement. A single endpoint covers every participating engine, no per-engine integrations needed.
Google’s absence is the limiting factor. If most of your traffic is from Google, IndexNow is a nice-to-have. For markets where Bing, Yandex, or Naver have meaningful share (Russia, South Korea, the Czech Republic, US Bing-driven verticals), the impact is real.
How to implement
The shape is straightforward:
- Generate a key. 8 to 128 characters,
[a-zA-Z0-9-]. Pick one and reuse it indefinitely. - Host the key file at the site root.
https://example.com/<key>.txt, served astext/plain, body equal to the key. - Submit URLs on change. Fire a request to
https://api.indexnow.org/indexnow(or directly to Bing’s or Yandex’s endpoint) after every publish, update, or unpublish event. - Limit volume. Up to 10,000 URLs per request. Do not send the entire sitemap on every cron tick — submit only what changed since the last call.
- Send deletions too. A 404 or 410 should also be submitted; that is how participating engines learn to drop URLs quickly.
A small wrapper around your CMS publish hook is usually enough. Many SEO plugins (including Yoast) submit automatically.
Common mistakes
- Submitting URLs that return non-200 statuses you did not mean to publish.
- Re-submitting on every page view rather than only on change.
- Hosting the key file at the wrong path or behind redirects. The key file must return 200 directly.
- Treating IndexNow as a Google signal. Google ignores the protocol — use Search Console’s URL Inspection tool for one-off Google submissions.
Verification
curl https://example.com/<key>.txtshould return the key as plain text.- The endpoint returns
200 OKon accepted submissions,202if quarantined, and400/403/422on errors. Log the response. - Bing Webmaster Tools shows IndexNow activity under “URL Submission” — confirm the URLs appear there.
Related topics
Sources & further reading
- IndexNow protocol — IndexNow
- Bing — IndexNow — Bing
- Yandex — IndexNow — Yandex