32-Character IndexNow Key
Generates a 32-character hex key per site, well inside the 8 to 128 character rule.
32-Character IndexNow KeyIndexNow Submission
Pasting URLs into Bing Webmaster Tools by hand gets old across many sites. SearchAnalysis.io handles IndexNow submission for every URL you add, once it verifies your key file. It notifies Bing through the IndexNow protocol, and participating engines share the URLs they receive. Each Bing IndexNow ping then shows as Processing, because IndexNow does not confirm indexing.
Participating engines share URLs with each other. Google is not a participant.
Definition
IndexNow is a protocol that lets a site notify participating search engines about URLs, up to 10,000 URLs in one HTTP POST. The site proves it controls the host with a key of 8 to 128 characters, hosted as a UTF-8 text file at the site root. Participating engines include Bing, Yandex, Seznam, Naver, Yep, Internet Archive and AmazonBot. Google is not on the list.
Engines share the URLs they receive with the other participants, so a notification sent to Bing reaches the rest of the list. Each POST gets an HTTP response code: 200 for submitted, 202 for received with key validation pending, and four error codes. IndexNow has no step that confirms indexing.
7engines
On the participant listIndexNow lists 7 participating engines that share the URLs they receive.
10,000URLs
Per IndexNow POSTAn IndexNow POST carries up to 10,000 URLs in one request.
10,000a day
Budget per propertySearchAnalysis.io budgets 10,000 IndexNow URLs a day for each property.
Old way, new way
Three routes get your URLs to Bing. Here is what each one asks of you.
What is inside
Five parts carry a URL from your list to Bing and on to Google.
Generates a 32-character hex key per site, well inside the 8 to 128 character rule.
32-Character IndexNow KeyFetches your hosted key file and checks that its contents match before any notification goes out.
IndexNow Key File VerificationNotifies Bing for every submitted URL on its own BING status row.
Bing IndexNow NotificationBudgets 10,000 IndexNow URLs a day per property, apart from Google's quota.
IndexNow Daily BudgetPairs each Bing notification with a Google Indexing API notification and URL Inspection checks.
Google Channels on the Same SubmissionHow it works
Five steps take a site from no key to notifications on every URL.
Add Your Site
Add the site, and SearchAnalysis.io generates a 32-character hex key for it.
Host the Key File
Save the key as a UTF-8 text file named after the key, so it loads at https://yourdomain/{key}.txt.
Pass Verification
SearchAnalysis.io fetches the file and checks that the contents match. Notifications start only after they do.
Submit URLs
Paste, upload a CSV, import a sitemap, or use the REST API or MCP tools. Each URL gets a BING row.
Read the Status
Accepted notifications show as Processing. Indexed status comes from the Google rows, confirmed by URL Inspection.
Why it matters
IndexNow submission advantages here are a key checked before the first send, one submission for Bing and Google, and a status you can read per URL.
SearchAnalysis.io verifies the hosted file before it notifies anyone. The submission REST API then reports the BING state per URL.
Submission REST APIEvery URL gets a BING row plus two Google rows. Google Indexing API submission runs on its own quota.
Google Indexing API submissionWith auto-submit on, sitemap monitoring sends newly discovered URLs out as a batch.
Sitemap monitoringIndexed status comes from the Google index checker, which inspects each URL through Search Console.
Picture publishing 40 new pages, pasting the list once, and watching 40 BING rows move from Queued to Processing beside their Google rows.
What we publish about limits
Search engines decide what they crawl and index. Nobody can guarantee indexing, and IndexNow does not report it.
IndexNow Does Not Confirm Indexing
A 200 or 202 reports the submission. SearchAnalysis.io shows an accepted notification as Processing, never Indexed.
Google Is Not a Participant
Google is not on the IndexNow list. Google gets its own Indexing API notification and URL Inspection checks.
The Key File Has to Match
IndexNow answers 403 for a key that is not valid and 422 for a key mismatch. SearchAnalysis.io checks the file before it sends.
Reference
Every rule below comes from the IndexNow documentation at indexnow.org, verified October 6, 2026, or from how SearchAnalysis.io behaves around it.
(Select a protocol rule to read more)
An IndexNow key is the string that ties a notification to your host. The protocol allows 8 to 128 characters, drawn from lowercase letters a to z, uppercase letters A to Z, the digits 0 to 9 and the dash. Anything outside that set or that length is not a valid key.
| Key example | Valid | Why |
|---|---|---|
a1b2c3d4 | Yes | 8 characters, letters and digits |
site-key-2026 | Yes | Letters, digits and dashes |
abc123 | No | Under 8 characters |
key_with_underscore | No | The underscore is outside the allowed set |
key with spaces | No | Spaces are outside the allowed set |
SearchAnalysis.io generates a 32-character hex key for each site. Hex characters are the digits 0 to 9 and the letters a to f, so the key sits inside the allowed set and length. You never have to invent one or check it against the rules.
The key and its file go together. The file is named after the key and holds the key as its content. Change one without the other and engines answer with a 403 for a key that is not valid or a 422 for a key mismatch.
The IndexNow key belongs to the Bing side of a submission. The Google side uses Google OAuth instead, through Google Indexing API submission.
IndexNow expects the key hosted as a UTF-8 text file named {key}.txt at the site root. The file holds the key itself. An engine that receives a notification checks the key against that file, which is why a 202 response reads "received, key validation pending".
Address: https://yourdomain/0123456789abcdef0123456789abcdef.txt
Content: 0123456789abcdef0123456789abcdef.txt.https://yourdomain/{key}.txt.The file has to stay reachable for as long as you send notifications. A redesign, a host migration or a cleanup of old files can remove it without anyone noticing. When the key no longer checks out, engines answer 403, the code for a key that is not valid.
Add the file to whatever your team treats as permanent: the repository, the deploy folder or the server's web root. Note the key in your site documentation so the next person who touches the root knows the file belongs there.
To see what a fetch of the key file address returns, run it through the free indexability checker. It reports the HTTP status and follows up to 5 redirects, with a 10-second timeout. Test the exact address that engines will request, on the live domain.
An IndexNow request is an HTTP POST to a participating engine's /indexnow endpoint. It carries the list of URLs and the key that ties them to your host. One POST holds up to 10,000 URLs, so a large site can send a full sitemap section in a single request.
A SearchAnalysis.io batch holds up to 10,000 URLs, the same ceiling as one IndexNow POST. SearchAnalysis.io budgets 10,000 IndexNow URLs a day per property. URLs outside the site's domain are filtered out before sending and show as Dropped, so they never reach an engine as a 422.
A URL already tracked on your account inside 30 days is skipped and reported instead of resent. Batches created through the submission REST API accept an Idempotency-Key header, and a retry with the same key returns the original batch instead of creating a duplicate.
IndexNow response codes tell you what an engine did with a POST. The protocol documents six of them. Two report success, and four report a problem you can fix.
| Code | Meaning | What it tells you |
|---|---|---|
| 200 | Submitted | The engine took the URLs. |
| 202 | Received, key validation pending | The engine has the URLs and has not finished checking your key. |
| 400 | Invalid format | The request was not built the way the protocol expects. |
| 403 | Key not valid | The engine could not accept the key; check the hosted file. |
| 422 | URLs don't belong to the host, or key mismatch | Check that every URL is on the key's host and that the key matches the file. |
| 429 | Too many requests | Slow the sending pace before the next request. |
A 200 means submitted and a 202 means received. Neither code reports crawling or indexing. SearchAnalysis.io shows an accepted notification as Processing on the BING row, the label for a URL an engine accepted.
An error that needs a person shows as Failed, with the error text on the row. The four error codes point at three areas: the request format, the key and the URL hosts, and the pace of requests. SearchAnalysis.io handles part of that before sending: it verifies the key file and drops URLs outside the site's domain.
The monitor in the SearchAnalysis.io product lists every URL with its per-channel statuses, filters by state, exports to CSV and supports bulk retry once the cause is fixed.
IndexNow engine sharing means one notification reaches more than the engine you send it to. The participating engines list at indexnow.org states that each engine will "share URLs received by its /indexnow endpoint with other search engines participating in the protocol".
SearchAnalysis.io sends IndexNow notifications to Bing and records the result on the BING row. Sharing carries the URLs on to the other participants. There is one BING row per URL and no separate row for each participating engine, because the response comes from the engine that received the POST.
The BING row sits next to two Google rows on every submitted URL. Those rows run on Google's own limits, so a long Google Indexing API queue never holds up a Bing notification.
New URLs reach IndexNow the same way whatever their source. With auto-submit turned on, sitemap monitoring scans every 6 hours and sends newly discovered URLs as a batch with the source "scheduled scan".
Search engines that support IndexNow are listed in the protocol's participating engines file, indexnow.org/searchengines.json. As verified on October 6, 2026, the list names seven participants, and a notification to any one of them is shared with the rest.
| Participant | IndexNow status |
|---|---|
| Bing | Participating |
| Yandex | Participating |
| Seznam | Participating |
| Naver | Participating |
| Yep | Participating |
| Internet Archive | Participating |
| AmazonBot | Participating |
| Not a participant |
Google is not on the list, so an IndexNow notification does not reach Google. SearchAnalysis.io sends Google its own URL_UPDATED notification through Google Indexing API submission and confirms the result through Search Console URL Inspection. That gives every URL a path to both Bing and Google from one submission.
The protocol's own file is the source to check for the current participants. The list above matches that file as it read on October 6, 2026. If you need to know whether a particular engine receives your URLs, read searchengines.json at indexnow.org.
Each participant gets the same URL list through sharing, so SearchAnalysis.io sends once and records one BING result per URL. The budget of 10,000 IndexNow URLs a day per property applies to that single send.
For Google, the answer lives in Search Console. The Google index checker inspects each URL there and turns it Indexed only on a PASS verdict.
IndexNow notifies participating engines about URLs, and its job ends there. It reports no crawl date, no coverage state and no canonical choice. For Google, SearchAnalysis.io stores the coverageState, the robotsTxtState and the Google-selected canonical from every URL Inspection. Two gaps matter for anyone who tracks index status across many sites.
A 200 means the URLs were submitted, and a 202 means they were received with key validation pending. Neither code says whether a page was crawled or indexed. SearchAnalysis.io shows an accepted IndexNow notification as Processing and never as Indexed. Green means verified, and only the Search Console URL Inspection row can turn green.
Google is not a participating engine, so IndexNow never reports on Google. SearchAnalysis.io covers Google on separate rows: a URL_UPDATED notification to the Google Indexing API, and URL Inspection checks that start about 10 minutes after submission and follow a ladder of up to 6 checks over about 3 days.
verdict of PASS.coverageState that says indexed.Search engines decide what they crawl and index, and nobody can guarantee indexing. SearchAnalysis.io reports what each engine returned and what Search Console confirmed, and nothing beyond that.
Setup
Four steps connect a site to IndexNow. SearchAnalysis.io handles the key and the check, and you host one file.
(Select a setup step to read more)
Generating the IndexNow key is the first setup step, and SearchAnalysis.io does it for you. When you add a site, the product creates a 32-character hex key. Hex keys use the digits 0 to 9 and the letters a to f, which fits the protocol's rule of 8 to 128 characters from a-z, A-Z, 0-9 and dashes.
.txt.https://yourdomain/{key}.txt.A generated key removes two mistakes from setup: a key outside the allowed length or character set, and a key typed differently in two places. You copy one value into one file. That same key then covers every IndexNow notification for the site.
Keys for IndexNow are separate from the bearer API keys you create in Settings for the SearchAnalysis.io REST API. The IndexNow key shows search engines that you control the host. A bearer API key lets your scripts, CI jobs and AI agents submit URLs to SearchAnalysis.io, and the remote MCP server takes the same bearer key.
Keep the key with the site's other records. If someone rebuilds the site later, the file has to come back with the same name and content.
Hosting the IndexNow key file means placing {key}.txt at your site root so it loads at https://yourdomain/{key}.txt as plain UTF-8 text containing only the key. Where you put it depends on how the site is built.
| Site type | Where the file goes |
|---|---|
| Static site or site generator | The folder your build publishes, unchanged, at the web root |
| Self-hosted CMS | The web root on the server, uploaded over SFTP or your host's file manager |
| Framework app | A static file folder served from the root, or a route that returns the key as plain text |
| Hosted website builder | A root file upload or custom file setting, if the builder offers one |
| Site behind a CDN | The origin's web root, with the CDN serving the file as it is |
https://yourdomain/{key}.txt in a browser.If your platform offers no way to place a file at the root, a route that returns the key as plain text at the same address does the same job. What matters to the check is the address and the content.
For one more look at the address, the free indexability checker reports the HTTP status a fetch returns and follows up to 5 redirects.
IndexNow verification in SearchAnalysis.io has one job: fetch https://yourdomain/{key}.txt and confirm that the contents match the key. A failure lands on one side of that check or the other, and no IndexNow notification is sent until it passes. Fix the cause, then run the check again.
| Code | What it means after setup |
|---|---|
| 403 | The engine could not accept the key. Check that the file is still in place. |
| 422 | URLs don't belong to the host, or the key does not match. Check the file and the URL list. |
URLs outside the site's domain are dropped before sending, and the monitor shows each one as Dropped with the reason. If you are stuck after these checks, the SearchAnalysis.io contact page reaches the team behind the product.
After IndexNow verification passes, SearchAnalysis.io notifies on every URL you submit for that site. Each URL gets a BING row next to its two Google rows, and each row moves through the same status labels.
BING Queued > Sending > Processing
GOOGLE_INDEXING Queued > Sending > Processing
GOOGLE_SEARCH_CONSOLE Queued > Sending > Processing > IndexedAn accepted IndexNow notification shows as Processing and stays that way, because IndexNow does not confirm indexing. Indexed status comes from the Google index checker, which inspects the URL through Search Console about 10 minutes after submission and keeps inspecting on a ladder of up to 6 checks.
Every submission becomes a batch with its own page, listing 100 URLs per page with each URL's per-channel state. The REST API returns the same state from GET /api/v1/submissions/{batchId}, and the MCP tool check_submission gives it to an AI agent through the remote MCP server.
FAQ
IndexNow is a protocol that lets a site notify participating search engines about URLs, up to 10,000 per POST. The site proves it controls the host with a key file at its root. Engines share the URLs they receive with the other participants.
The search engines that support IndexNow are Bing, Yandex, Seznam, Naver and Yep, alongside Internet Archive and AmazonBot. The list lives at indexnow.org/searchengines.json, and Google is not on it.
Google does not support IndexNow and is not on the participating engines list. SearchAnalysis.io reaches Google through the Indexing API and confirms indexing with Search Console URL Inspection.
Bing IndexNow is Bing's participation in the IndexNow protocol, which lets you notify Bing about URLs with a POST of up to 10,000. Bing shares the URLs it receives with the other participating engines.
You submit a URL to Bing by hand in Bing Webmaster Tools or with an IndexNow notification. SearchAnalysis.io sends an IndexNow notification for every URL you submit, once your key file is verified, and shows the result on a BING row.
You put the IndexNow key file at your site root as a UTF-8 text file named after the key. It has to load at https://yourdomain/{key}.txt with the key as its only content.
IndexNow does not guarantee indexing, and it does not confirm it. A 200 means submitted and a 202 means received, so SearchAnalysis.io shows accepted notifications as Processing.
IndexNow response code 202 means the engine received the URLs and key validation is pending. The engine has your URLs and has not finished checking your key file.
Early access
SearchAnalysis.io is invite-only today. Join the waitlist and invites go out from the list.
Picture one paste sending your new pages to Bing and Google, with every status row telling you what each engine returned.
An Invite Before Public Launch
You get in before the public launch.
Launch Pricing Locked
Your launch price stays locked for as long as you stay subscribed. The price is announced at launch.
An Extended Free Trial
Its length is announced at launch.
Generated, Verified IndexNow Key
A 32-character hex key, checked against your hosted file before the first send.
IndexNow on Every Submitted URL
Up to 10,000 URLs a day per property, each on its own BING row.
Google Rows on the Same URL
Google Indexing API submission and URL Inspection confirmation.