IndexNow: what it is and how to set it up
IndexNow is a protocol that lets a site tell search engines which URLs were added, updated or deleted. You submit the URLs once and the participating engines share them. Bing, Yandex, Naver, Seznam.cz and Yep take part. Google does not. Submission does not guarantee indexing.
By SeenLens · Last updated
What is IndexNow?
IndexNow is an open protocol documented at indexnow.org. It replaces the wait for a crawler to find a change. Your site sends a short request that names the changed URLs. The search engine then decides when to crawl them.
The participating engines agree to share submitted URLs with each other. You send a request to one endpoint, and every IndexNow engine can see it. An engine joins if it has a noticeable presence in at least one market, or if it is closely linked to the search market and adds significant submission volume.
Microsoft recommends IndexNow in its guidance for the Bing AI Performance report. The report counts citations in Copilot and Bing AI answers, and IndexNow is one way to tell Bing about new and changed pages. See the Bing AI Performance guide.
Which search engines use IndexNow?
The IndexNow FAQ lists endpoints for these engines. We checked the list on 2026-11-06:
| Engine | Takes part |
|---|---|
| Amazon | Yes |
| Bing | Yes |
| Naver | Yes |
| Seznam.cz | Yes |
| Yandex | Yes |
| Yep | Yes |
IndexNow global endpoint (api.indexnow.org) | Yes, shared with all engines |
| Not listed |
The indexnow.org home page names Microsoft Bing, Naver, Seznam.cz, Yandex and Yep. Check the FAQ for changes before you rely on the list.
Does Google use IndexNow?
No. Google is not on the IndexNow engine list. Google's page on asking for a recrawl names two methods: the URL Inspection tool for a few URLs, and a sitemap for many URLs. That page does not mention IndexNow. We found no Google announcement of IndexNow support.
For Google, keep an accurate sitemap with correct lastmod dates and submit it in Search Console. Add IndexNow for Bing and the other engines. The two do not conflict.
How do you set up IndexNow?
- Make a key. A key has 8 to 128 characters: letters, digits and dashes. A random hex string works. Run
openssl rand -hex 16for 32 characters. - Host the key file. Save a UTF-8 text file named
{your-key}.txtin the site root. The file contains only the key. The URL ishttps://example.com/{your-key}.txt. - Submit URLs. Send one URL with a GET request, or many URLs with a POST request.
- Check the response. Read the HTTP status code (table below) and, for Bing, the IndexNow report in Bing Webmaster Tools.
You can host the key file in another location on the same host. Then pass its address in the keyLocation field. A key file in /catalog/ covers only URLs under /catalog/.
curl "https://api.indexnow.org/indexnow?url=https%3A%2F%2Fexample.com%2Fnew-page&key=YOUR_KEY"curl -X POST https://api.indexnow.org/indexnow \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"host": "example.com",
"key": "YOUR_KEY",
"keyLocation": "https://example.com/YOUR_KEY.txt",
"urlList": [
"https://example.com/new-page",
"https://example.com/updated-page"
]
}'| Code | Meaning |
|---|---|
| 200 | The URLs were submitted. |
| 202 | Received. Key validation is pending. |
| 400 | The request format is invalid. |
| 403 | The key is not valid. The key file is missing or does not contain the key. |
| 422 | The URLs do not belong to the host, or the key does not match the protocol schema. |
| 429 | Too many requests. Slow down and read the Retry-After header. |
How do you use IndexNow in Next.js?
Put the key file in the public folder, so Next.js serves it from the site root. Store the key in an environment variable. Then write one function that posts changed URLs:
YOUR_KEYconst HOST = "example.com";
const KEY = process.env.INDEXNOW_KEY!;
export async function submitToIndexNow(urls: string[]) {
if (urls.length === 0) return null;
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: KEY,
keyLocation: "https://" + HOST + "/" + KEY + ".txt",
urlList: urls.slice(0, 10000),
}),
});
return res.status; // 200 or 202 means accepted
}Call the function when content changes, for example from a route handler that your CMS calls after a publish. Protect that route with a secret:
import { submitToIndexNow } from "@/lib/indexnow";
export async function POST(req: Request) {
if (req.headers.get("x-hook-secret") !== process.env.HOOK_SECRET) {
return new Response("forbidden", { status: 403 });
}
const { urls } = (await req.json()) as { urls: string[] };
const status = await submitToIndexNow(urls);
return Response.json({ status });
}SeenLens does it with a shell script. scripts/indexnow.sh reads the key from the site configuration and posts URLs to api.indexnow.org after a deploy. Given no arguments, it submits every URL in the live sitemap. Given URLs, it submits only those. For a large site, pass only the changed URLs.
What are the limits of IndexNow?
- No guarantee. The FAQ states that submitting a URL does not guarantee immediate indexing. It only raises the chance of faster discovery and crawling.
- 10,000 URLs per POST. More can fail with a 422 error.
- Submit real changes only. Resubmitting unchanged URLs wastes crawl quota. Wait at least 5 minutes before you resubmit the same URL, and avoid many resubmissions per day.
- Crawl quota. Every submitted URL counts toward your site's crawl quota. Engines do not publish exact rate limits and each sets its own daily thresholds.
- Same host. The URLs must belong to the host in the request. Otherwise you get a 422.
- No ranking effect. IndexNow reports a change. It does not say a page deserves a rank.
No engine publishes a time between submission and indexing, so we give no figure. Bing offers an IndexNow Insights report in Bing Webmaster Tools (announced 2024-03-03). It lists the number of URLs submitted, crawled and indexed, with the status of the latest 1,000 submitted URLs.
Frequently asked questions about IndexNow
What is IndexNow?
IndexNow is an open protocol. A site sends a request that lists added, updated or deleted URLs, and the participating search engines share it. The engine then decides when to crawl those URLs.
Does Google support IndexNow?
No. Google is not on the IndexNow engine list, and Google's recrawl documentation names only the URL Inspection tool and sitemaps. Keep a current sitemap for Google.
Does IndexNow help SEO?
It can speed up discovery in the engines that take part. It does not raise rankings. It does not guarantee indexing.
How long does IndexNow take?
No engine publishes a figure. Each engine crawls on its own schedule and uses your crawl quota. Check Bing Webmaster Tools to see what Bing received.
Do I submit the same URL to every search engine?
No. A request to one endpoint, such as api.indexnow.org, is shared with all participating engines.
Should I submit every page in my sitemap?
Only for a first load. After that, submit URLs that were added, updated or deleted. The FAQ lists resubmitting unchanged URLs as a common mistake.
Sources
- IndexNow documentation (key rules, key file, GET and POST format, 10,000 URL limit, response codes, URL sharing, checked 2026-11-06).
- IndexNow FAQ (engine endpoints, resubmission advice, no guarantee, crawl quota, checked 2026-11-06).
- IndexNow home page (participating engines and purpose, checked 2026-11-06).
- Bing: IndexNow getting started (setup steps and verification in Bing Webmaster Tools, checked 2026-11-06).
- Google Search Central: ask Google to recrawl your URLs (URL Inspection and sitemaps, no mention of IndexNow, checked 2026-11-06).
- Bing Webmaster Blog: Optimize your impact with IndexNow Insights (report contents, 2024-03-03, checked 2026-11-06).
- Bing Webmaster Blog: Introducing AI Performance (Microsoft advises IndexNow, 2026-02-10, checked 2026-11-06).