IndexNow
Notify Bing, Yandex, Seznam, Naver and Yep about new and changed pages after each audit. The key file, automatic key detection, auto-submit and the daily cap.
IndexNow tells Bing, Yandex, Seznam, Naver and Yep that pages are new or changed, so they can crawl them sooner. It does not reach Google: Google does not support IndexNow, so for Google use the Google tab. To set it up, open a verified site's page, serve the key file shown on the IndexNow card, and choose Check now. After that, SEOFix sends new and changed pages after every audit. When you add a site, SEOFix also looks for an IndexNow key the site already serves, so you can reuse it with one click. Agents: get_indexnow_status, detect_indexnow_key, set_indexnow_key and submit_indexnow (MCP), or /v1/sites/{id}/indexnow.
Requirements
- A verified site. The IndexNow card appears on verified sites only, and submissions from an unverified site fail with
409 site_not_verified. See Verify site ownership. - A verified key file on the site. Until the key is checked, submissions fail with
409 indexnow_key_unverified.
Host the key file
Each site gets its own IndexNow key, created the first time you open the card: 32 lowercase hex characters. The key is public by design: the search engines read it from your site to confirm the submissions come from you.
- On the site page, the IndexNow card shows Key file URL (
https://<your-host>/<key>.txt) and File content (the key itself). - Publish a file at exactly that URL, on exactly the host the site was added with, containing only the key.
- The file must answer
200directly: no redirect to another host or path. - Choose Check now. When it matches, the card shows Key file verified.
Ask my agent to add it copies a prompt for Claude Code, Codex or Cursor: the agent reuses a key your codebase already serves, or adds this file, then confirms it.
The check gives one of three results:
| Result | Meaning |
|---|---|
match |
The file answers 200 with the key. The key is verified. |
mismatch |
The file answers 200 with other content, or 404 / 410. Verification is removed. |
inconclusive |
A redirect, another error, a timeout or a file over 1 KB. The earlier state is kept. A redirect usually means the site lives on another host than the one it was added with. |
Automatic key detection
Right after you add a site (by hand or from Search Console), and again when its ownership is verified, SEOFix looks for an IndexNow key the site already serves. It runs in the background, so adding the site is never slowed down. While it runs, the card shows Checking your site for an existing IndexNow key…. To run it again, choose Detect again.
SEOFix only trusts a key the site really serves: for each candidate it fetches https://<your-host>/<key>.txt and checks that the file answers 200 with exactly the key. It tries these candidates, in this order:
| Source | Where the candidate comes from |
|---|---|
seofix_key |
The key SEOFix created for this site, in case you already published its file. A match verifies it right away. |
team_site |
Keys verified on the team's other sites in SEOFix. Many people reuse one key across their sites. Tried only once this site's ownership is verified, so a key is never sent to a host nobody has proven to own. Keys from other teams are never tried. |
crawl |
Key files the crawler saw in the site's latest audit: a page or internal link at https://<your-host>/<key>.txt. |
When it finds a key, the card shows We found an IndexNow key already on your site (from …) with the start of the key. Use this key saves it exactly like I already have a key below: it is checked at once and starts with auto-submit off. Nothing changes until you choose it.
If no key matches, SEOFix reads your homepage once to see whether your platform already sends IndexNow:
- Wix sends IndexNow for premium sites (every site on its own domain) by itself, with no key file you can see. The card says so: you don't need a key here.
- Cloudflare can send IndexNow for you with Crawler Hints, but Crawler Hints is off by default and can't be seen from outside. For a site behind Cloudflare, the card only reminds you to keep one sender if Crawler Hints is on.
Each detection makes at most 10 requests to your site, each with a 4-second timeout, and stops after 25 seconds.
What detection can't find:
- A key file at a secret name. IndexNow keys are random, and the WordPress plugins we checked (Rank Math, Yoast SEO Premium, All in One SEO, Microsoft's IndexNow plugin) and Ahrefs keep the key on the server and serve it only at
https://<your-host>/<key>.txt. Nothing on the site points to that file, so SEOFix can find it only through one of the sources above. Copy the key from the plugin's settings into I already have a key instead. - A key file in another folder, unless the crawler saw it at the root of your host.
- Shopify: Shopify has no built-in IndexNow. Apps that add it manage their own key.
Agents: detect_indexnow_key (MCP) or POST /v1/sites/{id}/indexnow/detect-key, then set_indexnow_key with the found key. GET /v1/sites/{id}/indexnow returns the last result as detection:
{
"key_verified": false,
"detection": {
"status": "found",
"key": "gr34rgc24cjxzgd9vtt627engg2qfjhv",
"key_file_url": "https://example.com/gr34rgc24cjxzgd9vtt627engg2qfjhv.txt",
"source": "team_site",
"platform": null,
"checked_at": "2026-10-08T12:00:00.000000Z"
}
}
detection.status is pending (queued), found, none or managed (platform wix). detection is null for a site added before detection existed: choose Detect existing key on the card.
Use a key you already have
If your site already serves an IndexNow key (from Ahrefs, a plugin or your own code), choose I already have a key, enter it and, only if the file isn't at the root of your host, its location (same host, https, ending in .txt). Choose Save and check. SEOFix checks it right away.
A key is 8 to 128 characters of a-z, A-Z, 0-9 and -. An existing key starts with auto-submit off, because your site may already submit to IndexNow itself: keep one sender to avoid duplicate pings. Turn on auto-submit if SEOFix should be that sender.
Agents: set_indexnow_key (MCP) or PUT /v1/sites/{id}/indexnow/key.
Auto-submit after each audit
With Auto-submit after each audit on (the default for a key SEOFix generated), SEOFix submits the pages that are new or changed since the previous audit, as soon as an audit finishes.
A page is sent when it:
- answers
200, is not blocked by a firewall, has nonoindexornonerobots meta, and its canonical is empty or points to itself; and - was not in the previous audit, did not answer
200there, or its content changed.
Details:
- The first audit sends nothing: there is no earlier audit to compare with.
- Before an auto-submit, SEOFix re-checks a key that was verified more than 7 days ago. If the file is gone (
mismatch), it skips the submit. - Turn auto-submit off or on with the switch. Agents:
PATCH /v1/sites/{id}/indexnowwith{"auto": false}.
Submit by hand
On the card, Submit changed pages now sends the latest audit's new and changed pages.
- After the first audit, there is nothing to compare with. The card offers Submit all indexable pages (first audit, up to today's limit).
- If the changed pages were already sent automatically, the card offers Send them again.
Agents send explicit URLs:
curl -X POST https://api.seofix.ai/v1/sites/42/indexnow \
-H "Authorization: Bearer $SEOFIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com/jobs/new-role", "https://example.com/blog/update"]}'
{
"submitted": 2,
"requests": 1,
"status": "ok",
"skipped": 0,
"capped": 0,
"batches": [{"url_count": 2, "status": "ok", "status_code": 200, "error_code": null}],
"today": {"used": 2, "limit": 10000}
}
urls: 1 to 10,000 URLs. URLs that aren'thttp(s)URLs on the site's host are skipped (skipped).status:ok,accepted(IndexNow answered 202), orpartial(some requests failed: seebatches).- The endpoint allows 10 calls per minute.
MCP: submit_indexnow with site_id and urls.
Daily cap
Each site can submit at most 10,000 URLs per UTC day, counting auto, manual and API submits together. A submit that goes over the cap sends what fits and reports the rest in capped. Once the cap is used up, submits fail until midnight UTC:
| Error | Status | Meaning |
|---|---|---|
indexnow_cap |
429 | Today's 10,000 URLs are used. Try again after midnight UTC. |
indexnow_rejected |
502 | IndexNow accepted none of the URLs, or could not be reached. Nothing was submitted. |
url_not_in_site |
422 | None of the URLs is on the site's host. |
indexnow_key_unverified |
409 | Serve and check the key file first. |
site_not_verified |
409 | Verify the site first. |
If IndexNow answers 429, SEOFix stops sending and gives the unsent URLs back to today's allowance.
See what was sent
The card lists recent submissions with When, Trigger (After audit, Manual, API), URLs and Result, and today's usage. Agents: get_indexnow_status (MCP) or GET /v1/sites/{id}/indexnow, which returns the key file URL and content, key_verified, auto, today (used, limit) and the last 20 submissions.
Related
More in Google Search Console
Still stuck? Email [email protected] with your site and what you expected to see.