Documentation

Submitting one URL


To submit a URL using an HTTP request (replace with the URL provided by the search engine), issue your request to the following URL:

                https://<searchengine>/indexnow?url=url-changed&key=your-key
            
  • url-changed is a URL of your website which has been added, updated or deleted. The URL must be URL-escaped and encoded and please make sure that your URLs follow the RFC-3986 standard for URIs.
  • your-key should have a minimum of 8 and a maximum of 128 hexadecimal characters. The key can contain only the following characters: lowercase characters (a-z), uppercase characters (A-Z), numbers (0-9) and dashes (-).

For example, if you want to notify search engines that https://www.example.com/product.html has been updated, and you want to use this key , your URL will be:

                https://<searchengine>/indexnow?url=https://www.example.com/product.html&key=
            

You can issue the HTTP request using your browser, wget, curl or any other mechanism of your choosing. A successful request will return an HTTP 200 response code; if you receive a different response, verify that you don’t submit too often, that the key and URL are valid, and resubmit the request. The HTTP 200 response code only indicates that the search engine has received your URL.

Submitting set of URLs


To submit a set of URLs using an HTTP request, issue your POST JSON request to the URL provided by Search Engines. Replace by the host name of the search engine.

                POST /indexnow HTTP/1.1
                Content-Type: application/json; charset=utf-8
                Host: <searchengine>
                {
                  "host": "www.example.com",
                  "key": "",
                  "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, mixing http and https URLs if needed.

You can issue the HTTP request using wget, curl or another mechanism of your choosing. A successful request will return an HTTP 200 response code; if you receive a different response, you should verify your request, and if everything looks fine, resubmit your request. The HTTP 200 response code only indicates that the search engine has received your set of URLs.

The recommended way is to automate submission of URLs as soon as the content is added, updated or deleted up to some limit; see best practices for user-generated content in the Frequently Asked Questions.

Verifying ownership via the key


To submit URLs, you must ‘prove"’ownership of the host for which URLs are being submitted by hosting at least one text file within the host. Once you submit your URLs to search engines, search engines will crawl the key file to verify ownership and use the key until you change the key. Only you and the search engines should know the key and your file key location.

We offer two ways to verify ownership.

Option 1
Hosting a text key file at the root directory of your host.

You must host a UTF-8 encoded text key file {your-key}.txt listing the key in the file at the root directory of your website.

For instance for the previous examples, you will need to host your UTF-8 key file at https://www.example.com/.txt, and this file must contain the key.

Option 2
Hosting a text key file within your host.

You can also host one to many UTF-8 encoded text key files in other locations within the same host, and you must tell search engines the location of this text key file in each IndexNow notification by specifying the location using the keyLocation variable.

If you submit a URL, specify the key file location as keyLocation URL parameter value.

                    https://<searchengine>/indexnow?url=http://www.example.com/product.html&key=&keyLocation=http://www.example.com/myIndexNowKey63638.txt
                

If you submit a set of URLs, specify the key file location as keyLocation variable in the JSON content.

                    POST /indexnow HTTP/1.1
                    Content-Type: application/json; charset=utf-8
                    Host: <searchengine>
                    {
                      "host": "www.example.com",
                      "key": "",
                      "keyLocation": "https://www.example.com/myIndexNowKey63638.txt",
                      "urlList": [
                          "https://www.example.com/url1",
                          "https://www.example.com/folder/url2",
                          "https://www.example.com/url3"
                          ]
                    }
                

In this option 2, the location of a key file determines the set of URLs that can be included with this key. A key file located at http://example.com/catalog/key12457EDd.txt can include any URLs starting with http://example.com/catalog/ but cannot include URLs starting with http://example.com/help/.

URLs not considered valid in http://example.com/catalog/sitemap.xml include:

URLs that are not considered valid in option 2 may not be considered for indexing. It is strongly recommended that you use Option 1 and place your file key at the root directory of your web server.

Response format


HTTP Code
Response
Reasons
200
OK
URL submitted successfully
202
Accepted
URL received. IndexNow key validation pending.
400
Bad request
Invalid format
403
Forbidden
In case of key not valid (e.g. key not found, file found but key not in the file)
422
Unprocessable Entity
In case of URLs which don’t belong to the host or the key is not matching the schema in the protocol
429
Too Many Requests
Too Many Requests (potential Spam)

Requirement for search engines


Search engines adopting the IndexNow protocol agree that submitted URLs will be automatically shared with all other participating search engines. To participate, search engines must have a noticeable presence in at least one market or be closely linked to the search market and make a significant contribution to the number of url submissions. Learn more