How the protocol works
First you prove you control the site by publishing a key, 8 to 128 characters of letters, digits and dashes, in a UTF-8 text file, preferably at the root. A file stored elsewhere works with the keyLocation parameter, but then only URLs in that folder can be submitted. To report one page, a simple GET request with the URL and key is enough. For batches, a JSON POST request containing the host, the key and the list of addresses accepts up to 10,000 URLs.
Participating engines have agreed to share submitted URLs automatically with one another, so a notification sent to Bing also reaches Yandex or Seznam.
The benefit goes beyond speed: instead of recrawling pages at random to detect changes, engines can focus on the URLs you report, which also reduces load on your server. The protocol is most useful for sites that change often: stores with shifting prices and stock, news sites, classifieds and event listings.
Reading the response codes
- 200: URL received.
- 202: URL received, key validation pending.
- 400: invalid format.
- 403: invalid key, or key file not found.
- 422: URLs that do not belong to the host, or a key that does not match the schema.
- 429: too many requests, possibly treated as spam.
Setup and best practices
On WordPress, plugins such as Rank Math include IndexNow, and Cloudflare offers it through its Crawler Hints feature. On a custom site, trigger the API call from your CMS whenever content is published, updated or deleted. Notify real changes only, do not loop unchanged URLs and watch for 429 responses. Keep your XML sitemap: Google, which is not among the participating engines, still relies on crawling and sitemaps. In Bing Webmaster Tools, the IndexNow section shows which submitted URLs were received.
