Google Indexing API: which pages it works for and how to set it up

12 minutes

Google Indexing API is a programmatic interface through which a site tells Google that a page has appeared, been updated, or been deleted. According to Google’s documentation, it only supports pages with JobPosting structured data (job postings) or BroadcastEvent embedded in a VideoObject (livestreams). A successful response to an update notification only means that Google may recrawl the page soon. It does not promise inclusion in the index.

For articles, products, and services, Google’s documentation describes other methods: the URL Inspection tool and a sitemap file. Below: how to tell whether the API fits your site, how to set it up, and what to use for every other kind of page.

What Google Indexing API is

Indexing API sends Google notifications about specific URLs. There are two notification types:

  • URL_UPDATED — a new page appeared at the URL, or its content changed;
  • URL_DELETED — the page was removed from the server or blocked with a noindex meta tag.

For each URL you can request when Google last received a notification of each type. In Russian-language materials, this interface is sometimes referred to as the “index API.”

Requests aren’t sent by a person in a browser, but by a program. It acts on behalf of a service account that has been added as a delegated owner of the site in Search Console.

Indexing API, Search Console API, and URL Inspection are not the same thing

ToolWhat it’s forWhich pages
Indexing APINotify Google that a URL is new, updated, or deletedOnly pages with JobPosting or BroadcastEvent in VideoObject
“Request Indexing” in the URL Inspection toolManually request a crawl of a single page. The number of requests per day is limited, and indexing is not guaranteedIndividual pages of your property in Search Console
Sitemap fileTell Google about a large number of pagesImportant URLs on the site
Search Console APIProgrammatic access to most Search Console features: properties, sitemap files, search results data, inspection of individual pagesProperties you manage in Search Console

“Search Console API” and “Indexing API” are often confused. The former gives you data and control over a property; the latter sends notifications about pages. Submitting pages for indexing is not part of the Search Console API overview.

Which pages Indexing API works for

Job postings and livestreams

The documentation names two types of pages:

  • job postings with JobPosting structured data;
  • livestreams with BroadcastEvent embedded in a VideoObject object.

Structured data is markup in a page’s code that describes its content in a format search engines understand. For more on what Schema.org structured data is, see a separate article.

Google explains why the API exists for these pages. On sites with many short-lived pages, individual update notifications help keep search results current. In its help article on job posting markup, Google recommends the Indexing API, not sitemap files, for those URLs.

Before connecting the API, check that the markup is actually present on the pages and free of errors. Google’s help names the Rich Results Test tool for this.

What the documentation says about other pages

The Indexing API documentation lists no other page types. The documentation states this as a limitation: the API only supports pages with JobPosting or BroadcastEvent in VideoObject.

Blog posts sometimes advise submitting any kind of page through the API — articles, products, services. Google’s documentation does not describe this use. For ordinary pages, Google offers other methods: URL Inspection for individual URLs and a sitemap file for large numbers of pages.

The guide also warns that attempts to misuse the API — for example, using multiple accounts or other means to exceed quotas — can lead to access being revoked. Don’t add job posting markup to pages that have no job postings just to get access to the API: that kind of markup no longer describes the page, it works around the limitation.

What the API does and does not guarantee

The API responds to a successful request with an HTTP 200 code. According to the documentation, this means Google may recrawl the page at that URL soon. The response says nothing about whether the page will be indexed or where it will rank.

URL_DELETED is also a notification, not a delete button. It’s sent once a page has already been removed from the server or blocked from indexing. Before the request, the URL must return a 404 or 410 code, or carry a robots meta tag set to noindex. A successful response to this notification means Google may remove the URL from the index. The notification itself does not block the page — you change the server response or add the meta tag first. For more on how to block a page from indexing or remove it from search, see a separate article.

How to set up Indexing API: steps from Google’s documentation

These steps only make sense if the site has pages with JobPosting or BroadcastEvent. The order, per the documentation:

  1. Create a project and enable Indexing API.
  2. Create a service account and a key.
  3. Add the service account as an owner of the site in Search Console.
  4. Get an access token.
  5. Request approval and a quota increase.
  6. Send notifications and check their status.

Section and button names in the consoles change over time. So what follows are landmarks, not a translation of the instructions.

A project with the API enabled in Google Cloud

The project is created in the Google API Console — the console where you manage Google Cloud projects and their APIs. For the first step, Google offers a setup tool that helps you create a project and enable Indexing API.

Service account and key

A service account is a technical account on whose behalf a program calls the API without a person involved. You create a key for it, and the documentation recommends the JSON format. Google warns that the downloaded key is the only copy.

The key is a secret. Treat it like a password: don’t publish it in a public repository, and don’t paste it into a site page’s code.

Owner rights in Search Console

The service account’s email address needs to be added as a delegated owner of the site in Search Console. In the documentation, this is done on the property’s card: in the list of verified owners, via the “Add owner” button.

Access token

Every API request carries an OAuth access token — a string the program obtains on behalf of the service account. When requesting the token, the scope is set to https://www.googleapis.com/auth/indexing. Tokens can be obtained using Google API client libraries for various programming languages.

Sending a URL_UPDATED or URL_DELETED notification

A notification is a POST request to https://indexing.googleapis.com/v3/urlNotifications:publish. The request body carries the page’s URL and the notification type. An example for a job posting page on a hypothetical site:

POST https://indexing.googleapis.com/v3/urlNotifications:publish
Content-Type: application/json
Authorization: Bearer <ACCESS_TOKEN>

{
  "url": "https://example.ru/vacancies/seo-specialist/",
  "type": "URL_UPDATED"
}

Replace <ACCESS_TOKEN> with the access token. To report that a page was deleted, set "type": "URL_DELETED" in the same request.

Checking notification status

Status is requested with a GET request to https://indexing.googleapis.com/v3/urlNotifications/metadata. The page URL is passed in the url parameter, percent-encoded:

GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=https%3A%2F%2Fexample.ru%2Fvacancies%2Fseo-specialist%2F
Authorization: Bearer <ACCESS_TOKEN>

The response contains the type and time of the last notification: latest_update for URL_UPDATED and latest_remove for URL_DELETED. In short:

{
  "url": "https://example.ru/vacancies/seo-specialist/",
  "latest_update": {
    "type": "URL_UPDATED",
    "notify_time": "<notification send time>"
  }
}

This is the time the notification was sent, not the page’s status in the index.

Batch requests

To reduce the number of HTTP connections, up to 100 requests to the Indexing API can be combined into a single HTTP request to https://indexing.googleapis.com/batch.

After setup, it’s useful to test the chain on one page. Send URL_UPDATED for a single job posting and check the notification status. Then open that page in the URL Inspection tool in Search Console and look at its current status.

The primary source for setup is Google’s step-by-step guide: its requirements and interfaces get updated.

Quotas and usage policies

The default quota, 200 requests, is meant for connecting the API and testing submitted content. Using it beyond that requires additional approval from Google.

Quotas are counted per project and split by method:

  • publish requests (URL_UPDATED and URL_DELETED notifications) — 200 per day;
  • read requests getMetadata (notification status) — 180 per minute;
  • all requests combined — 380 per minute.

Check your project’s current quotas in the Google API Console. Approval and a quota increase are requested through a form linked from the documentation. There is no charge for using the Indexing API. Quota values are given per the documentation as of October 2026; check them against it before connecting.

Usage rules:

  • Google’s spam policies apply to content you submit through the API;
  • all content submitted through Indexing API is checked for spam;
  • attempts to exceed quotas using multiple accounts or other means can lead to access being revoked.

What to do for ordinary pages

If the site has no job postings or livestreams, you don’t need the API. Below is what to use for ordinary pages instead.

A sitemap file for new and changed URLs

If you need Google to crawl many pages, it recommends submitting a sitemap file. Google takes the lastmod date into account if it’s accurate; it should reflect the time of the page’s last significant change. For more on how to prepare a sitemap and tell search engines about it, see a separate article.

Internal links to new pages

Google first finds pages that are linked to from other, already-crawled pages. So a new article or product page needs links from category pages and related content. For more on how internal links help search engines find new pages, see the article on internal linking.

URL Inspection in Search Console

For a single important page, the URL Inspection tool works: it lets you request a crawl. The number of such requests per day is limited, and submitting one does not guarantee the page will appear in the index. For more on what URL Inspection and the Index Coverage report show, see the article on indexing.

If a page stays unindexed for a long time, look for the cause in the site’s settings: robots.txt, noindex, canonical, response code. The submission method usually has nothing to do with it. For a detailed breakdown, see why a page isn’t indexed and what to check.

What about IndexNow?

IndexNow is a protocol through which a site automatically tells search engines about new, updated, and deleted pages. According to the protocol’s own site, it is supported by Microsoft Bing, Naver, Seznam.cz, Yandex, and Yep. Yandex Webmaster’s help also confirms IndexNow support.

For Google, use the methods from its documentation: a sitemap file and URL Inspection. For how to tell Yandex about new pages, see the article on recrawling pages in Yandex Webmaster.

Summary: how to tell Google about a page

Which pagesHow to tell Google
Job postings (JobPosting) and livestreams (BroadcastEvent in VideoObject)Indexing API
New and changed ordinary pagesSitemap file and internal links
A single important pageURL Inspection in Search Console
A page needs to be removed from searchDelete it (404 or 410 code) or block it with noindex; for job postings and livestreams, then send URL_DELETED

If a site’s pages consistently fail to get indexed, resubmitting them is pointless: what’s needed first is a review of indexing settings: robots.txt, meta tags, canonical, response codes, and the sitemap.

Frequently asked questions

Can ordinary pages — articles, products, services — be submitted through Indexing API?

Google’s documentation describes the API only for pages with JobPosting or BroadcastEvent in VideoObject. For other pages, Google offers a sitemap file and URL Inspection. See the “What the documentation says about other pages” section for details.

Does a page need structured data to be submitted through the API?

Yes. The page type the API is meant for is determined by structured data: JobPosting for job postings, BroadcastEvent in VideoObject for livestreams.

Does a successful API response guarantee the page will appear in search?

No. An HTTP 200 code means Google may recrawl the URL soon. Google makes the indexing decision separately.

Does URL_DELETED remove a page from search?

Not by itself — it’s a notification. Before sending it, the page must return a 404 or 410 code, or carry a noindex meta tag. After a successful response, Google may remove the URL from the index.

How many URLs can be submitted per day?

By default, the quota is 200 publish-notification requests per day per project. It’s meant for connecting and testing, and using it beyond that needs Google’s approval. Values can change; check current ones in the Google API Console.

Does Indexing API work for Yandex?

No, it’s a Google interface. Yandex supports the IndexNow protocol — see the “What about IndexNow?” section for details.

If pages aren’t getting indexed, the cause is usually in the site’s settings, not the submission method. We’ll check robots.txt, noindex, canonical, response codes, and the sitemap, and suggest what to fix. → Discuss technical SEO