IndexNow
lastmod 2026-10-27created 2026-10-275 edits
IndexNow is a simple way for webmasters and website owners to instantly inform search engines about the latest content changes on their website. In its simplest form, IndexNow is a simple ping that lets search engines know that a URL and its content have been added, updated, or deleted, allowing search engines to quickly reflect these changes in their search results.
Without IndexNow, it can take days to weeks for search engines to discover that content has changed, because search engines don't crawl every URL often. With IndexNow, search engines know immediately the "URLs that have changed," helping them prioritize crawling of those URLs and thereby limiting organic crawling to discover new content.
Submitting one URL
To submit one URL with an HTTP request, send a request to the following URL. Replace <searchengine> with the host provided by the search engine.
-
url-changed: The URL of your website that has been added, updated, or deleted.- The URL must be escaped and encoded.
- It must follow the URI standard RFC-3986.
your-key: Hexadecimal characters, minimum 8 and maximum 128 characters.- Only lowercase letters (
a-z), uppercase letters (A-Z), numbers (0-9), and dashes (-) are allowed.
Example
To notify search engines that https://www.example.com/product.html has been updated, using a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d as the key, the request URL is as follows.
https://<searchengine>/indexnow?url=https://www.example.com/product.html&key=a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d
- Note: The key
a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4don this page is an example value for illustration. The original page generates and shows a random key on every visit.
Request and response
- You can send the HTTP request any way you like: browser, wget, curl, etc.
- A successful request returns an HTTP
200response code. This means the search engine has received the URL. - If you get a different response, check that you are not submitting too often and that the key and URL are valid, then resubmit.
Submitting a set of URLs
To submit a set of URLs with an HTTP request, send a POST JSON request to the URL provided by the search engine. Replace <searchengine> with the search engine's host name.
POST /indexnow HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: <searchengine>
{
"host": "www.example.com",
"key": "a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d",
"urlList": [
"https://www.example.com/url1",
"https://www.example.com/folder/url2",
"https://www.example.com/url3"
]
}
- You can submit up to 10,000 URLs per POST request, and you can mix http and https URLs if needed.
- You can send the HTTP request any way you like: wget, curl, etc.
- A successful request returns an HTTP
200response code. This means the search engine has received the set of URLs. - If you get a different response, check the request, and if nothing looks wrong, resubmit.
Recommendations
- It is recommended to automate URL submission as soon as content is added, updated, or deleted.
- For best practices on user-generated content (UGC), see the Frequently Asked Questions (FAQ).
Verifying ownership via a key
To submit URLs, you must "prove" ownership of the host you are submitting URLs for by hosting one or more text key files within the host.
- When you submit URLs, the search engine crawls the key file to verify ownership.
- The search engine keeps using the key until you change it.
- The key and key file location should be known only to you and the search engines.
There are two ways to verify ownership.
Option 1: Host the key file in the root directory (recommended)
Host a UTF-8 encoded text key file {your-key}.txt in the root directory of your website, with the key written inside the file.
For the example above, you must host the UTF-8 key file at the following location, and the file content must be the key a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d.
Option 2: Host the key file at any location within the host
You can host one or more UTF-8 encoded text key files at other locations within the same host. In this case, you must tell search engines the key file location with the keyLocation variable every time you send an IndexNow notification.
When submitting one URL
Specify the key file location as the value of the keyLocation URL parameter.
https://<searchengine>/indexnow?url=http://www.example.com/product.html&key=a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d&keyLocation=http://www.example.com/myIndexNowKey63638.txt
When submitting a set of URLs
Specify the key file location with the keyLocation variable in the JSON body.
POST /indexnow HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: <searchengine>
{
"host": "www.example.com",
"key": "a5b2c8d4e6f74a1b9c3d5e7f8a0b2c4d",
"keyLocation": "https://www.example.com/myIndexNowKey63638.txt",
"urlList": [
"https://www.example.com/url1",
"https://www.example.com/folder/url2",
"https://www.example.com/url3"
]
}
Key file location and valid URL scope
In Option 2, the location of the key file determines the scope of URLs that can be submitted with that key.
For example, a key file at http://example.com/catalog/key12457EDd.txt can be used for any URL starting with http://example.com/catalog/, but not for URLs starting with http://example.com/help/.
| Category | Example URL |
| Valid | |
| Not valid | |
- URLs judged not valid under Option 2 may not be considered for indexing.
- Therefore, it is recommended to use Option 1 and place the key file in the root directory of the web server.
Response format
| HTTP code | Response | Reason |
| | OK | URL submitted successfully |
| | Accepted | URL received. IndexNow key validation pending |
| | Bad request | Invalid format |
| | Forbidden | Key not valid (e.g., key file not found, or file found but key not in the file) |
| | Unprocessable Entity | URL doesn't belong to the host, or the key doesn't match the schema in the protocol |
| | Too Many Requests | Too many requests (potential spam) |
Search engine requirements
- Search engines adopting the IndexNow protocol agree that submitted URLs are automatically shared with all other participating search engines.
- To participate, a search engine must meet the following conditions.
- Have a noticeable presence in at least one market, or be closely connected to the search market
- Contribute significantly to the number of URL submissions
See also
Favorite site
- Home | IndexNow.org
- Documentation | IndexNow.org - IndexNow documentation (Korean)