IndexNow is an open protocol that lets a website notify search engines the moment a URL is added, updated, or deleted, instead of waiting to be crawled.
Category
SEO
Also known as
IndexNow protocol; index now
IndexNow is an open protocol that lets a website tell search engines the moment a URL is added, updated, or deleted, instead of waiting days or weeks to be recrawled. One submission to any participating engine is shared with all of them. Per the official registry (indexnow.org/searchengines.json, checked July 2026), the participants are Bing, Yandex, Seznam, Naver, Yep, the Internet Archive, and Amazon's crawler. Google does not participate.
How it works
You prove ownership by hosting a key file (8 to 128 hexadecimal characters) at your site root, then send URLs by GET for a single URL or POST for a batch of up to 10,000. Submitting to one participating endpoint propagates to all of them, so one clean request per run is enough.
The response codes
Per the official protocol documentation (indexnow.org, checked July 2026):
Code | Meaning | What it tells you |
|---|---|---|
200 | OK | Submission received. Received, not indexed: engines still decide on crawling. |
202 | Accepted | URLs received, key validation still pending. Normal on a fresh setup. |
400 | Bad request | Malformed request. Check the JSON shape and URL encoding. |
403 | Forbidden | Key problem: file not found, or the key is not in the file. |
422 | Unprocessable Entity | URLs do not belong to the host, or the key does not match the protocol schema. |
429 | Too Many Requests | Rate limited as potential spam. Often IP reputation, not your volume. |
Two codes deserve special respect. A 200 only means the engine received the list, nothing more. And a 429 can hit you at one request per day if you submit from a shared IP pool, because the limit tracks the IP's total behavior, not yours.
In practice
asteroad.com runs IndexNow on every publish. The original Cloudflare Worker setup drew daily 429s from shared egress IPs and silently dropped ten days of URLs before the alerting caught it; the production setup now submits from GitHub Actions with a pending queue that retries failures and a second, authenticated channel through the Bing URL Submission API. If you are setting this up, start with the GitHub Actions manual and treat any non-200 as a signal to check, not a reason to resubmit blindly.