Bing & Copilot via IndexNow: verify your site
IndexNow is an open protocol for telling search engines "this page changed". One notice is shared between the participating engines: Bing (which also powers Copilot and Bing's AI answers), Yandex, Seznam, Naver and Yep. FreshlyCited sends IndexNow notices for your verified sites on every push, free, alongside the Google push.
How it works
- Add your site (Bing & Copilot page in the app,
add_indexnow_site, orPOST /api/v1/indexnow/sites). Add each exact hostname you use:example.comandwww.example.comare different sites to IndexNow. - Publish the key file. FreshlyCited generates a key. Put a plain-text file containing only the key at
https://<your-host>/<key>.txt. If you can't write to the root, set a key location such ashttps://example.com/seo/<key>.txt; it then only covers URLs under/seo/. - Verify. FreshlyCited fetches the file and checks it contains exactly the key. The check is safe by design: only public http(s) addresses, a few seconds and a few kilobytes at most, and redirects must stay on your host.
- Push as usual. URLs on a verified, switched-on site go to IndexNow (
api.indexnow.org) in the same push, up to 10,000 per request and one host per request.
What we send, and when
- Only URLs whose host matches one of your verified sites. Backlinks on other people's sites are never sent to IndexNow (they go to Google only).
- Changed content only: a URL sent to IndexNow in the last 24 hours isn't resent, unless you explicitly push it again (Push again,
retry_job,send_unindexed_to_indexer, orindexnow_force: true). - Each link records its IndexNow result in the push: Sent to Bing (IndexNow): received (
accepted, HTTP 200), received, key pending (submitted, HTTP 202: the engines are still validating your key), error with the HTTP code (403 key not valid, 422 URL doesn't match the host, 429 too many requests) or sent in the last 24 h. "Received" means IndexNow accepted the notice, not that Bing indexed the page. - The push outcome says it plainly, for example "3 links also sent to Bing (IndexNow)". Use
get_job_indexnoworGET /api/v1/jobs/{id}/indexnowfor per-link detail.
Staying verified
FreshlyCited re-checks every verified site daily. If the key file is missing twice in a row (an hour apart), the site is paused: IndexNow notices stop, you get an email and a notice on the site, and nothing else changes until you verify again. You can also switch a site off at any time, or rotate its key.
Seen by Bing?
A notice isn't proof of indexing. FreshlyCited has an optional Bing search check (engine: "scan_bing") that platform admins can switch on under Settings › Integrations; it is off by default because Bing search results proved unreliable for per-URL checks, and check_index with engine: "scan_bing" returns 409 while it's off. When it's on, it only confirms positives: a match shows Seen by Bing (1 credit); a miss shows Not confirmed by Bing and is refunded, because not finding a URL in Bing's results doesn't prove it isn't indexed.
A reliable per-URL Bing index status would need Bing Webmaster Tools' URL inspection, which requires each site to be verified in Bing Webmaster Tools. That's on our roadmap.
API at a glance
| Action | MCP tool | REST |
|---|---|---|
| List sites | list_indexnow_sites | GET /api/v1/indexnow/sites |
| Add a site | add_indexnow_site | POST /api/v1/indexnow/sites |
| Verify | verify_indexnow_site | POST /api/v1/indexnow/sites/{id}/verify |
| Switch on/off, move key file | update_indexnow_site | PATCH /api/v1/indexnow/sites/{id} |
| Remove | delete_indexnow_site | DELETE /api/v1/indexnow/sites/{id} |
| What a push sent | get_job_indexnow | GET /api/v1/jobs/{id}/indexnow |
Step-by-step: Verify your site for IndexNow.