DomainLens

Guides

Google Indexing API: What It Does and What It Cannot Do

The Google Indexing API is not a fast lane to the index. Google supports it for two structured data types, and using it elsewhere returns success while changing nothing.

Check your site before you start fixing

Run a fresh DomainLens audit and use the report as your priority list.

Run a free SEO audit

What the Google Indexing API supports

The Google Indexing API accepts a URL and tells Google that the page was created, updated, or removed. Its documented scope is narrow: pages carrying JobPosting markup, and pages carrying BroadcastEvent markup for a livestream. Both content types expire quickly — a job closes, a stream ends — so Google offers a push channel rather than waiting for a normal recrawl to notice.

The widespread assumption is that the same endpoint pushes any page into the index on demand. It does not. Submitting an ordinary article returns HTTP 200 with a timestamp because the endpoint accepted the notification. Acceptance is not indexing. The response says nothing about whether the URL was crawled, and nothing about whether Google intends to index it at all.

This distinction is the whole subject. Everything else on this page follows from it: the setup only matters if your content qualifies, and the quota only matters if the calls do anything.

How to set up the Google Indexing API

Setup is a Google Cloud service account that Search Console trusts. The step people miss is the last one: the account must be an Owner of the property, not merely a user, or every publish call fails with a permissions error that says nothing about ownership.

  1. 1Create a project in Google Cloud and enable the Indexing API for it.
  2. 2Create a service account and download its JSON key. The service account email is what Search Console will authorise.
  3. 3In Search Console, open the property, then Settings, then Users and permissions, and add the service account email as an Owner.
  4. 4Request an access token for the https://www.googleapis.com/auth/indexing scope using the service account key.
  5. 5POST the notification to the publish endpoint, and store the response so you can audit what you sent.
Publishing a single notification
POST https://indexing.googleapis.com/v3/urlNotifications:publish
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "url": "https://example.com/jobs/backend-engineer",
  "type": "URL_UPDATED"
}

# URL_UPDATED for a new or changed page.
# URL_DELETED once the posting is gone — send it only
# for a URL that genuinely returns 404 or 410.

Google Indexing API quotas and limits

Quota is consumed per notification rather than per unique URL. A retry loop, or a deploy hook that fires on every build, exhausts 200 calls quickly and silently. Deduplicate by URL and notify only on a genuine content change.

A quota increase is granted against demonstrated need. Google expects a real volume of supported content types, so the request is not a formality for a site publishing ordinary articles.

ConstraintDetailConsequence
Content typesJobPosting and BroadcastEvent onlyOther pages are accepted and ignored
Default quota200 URLs per day per projectLarge catalogues must request an increase
Batch sizeUp to 100 calls per batch requestBatching saves round trips, not quota
OwnershipService account must be a property Owner403 errors when the role is too low
ResponseNo index status returnedConfirm through URL Inspection instead
MarkupSupported structured data must be on the pageA URL without it wastes the quota

Google indexing tools that wrap this API

Services advertising instant indexing generally wrap this same endpoint, sometimes spread across a pool of Search Console properties. Because the endpoint ignores unsupported content types, the mechanism cannot deliver what the marketing promises, regardless of how many properties it fans out across.

Treat any tool reporting "indexed" purely from a 200 API response as reporting its own request rather than Google's decision. The measurable outcome is unchanged: the page is either crawled and indexed, or it is not. Check that independently before trusting a dashboard number, and be sceptical of any service that cannot show you a URL Inspection result to back its claim.

How to get a page indexed without the API

When pages are crawled but not indexed, the bottleneck is judgement rather than discovery, and no push channel changes a judgement. Work through indexability debugging first, then confirm the basics with the indexing check guide.

  • Keep an accurate XML sitemap with honest lastmod dates — still the primary discovery channel for ordinary content.
  • Use Request Indexing in URL Inspection for individual priority URLs. It is rate-limited and manual by design.
  • Remove whatever is suppressing indexing first: a blocked path, a conflicting canonical, a noindex directive, or thin near-duplicate content.
  • Strengthen internal links. A URL reachable only from a sitemap carries weaker discovery signals than one linked from related pages.
  • Read server logs on larger sites to see whether Googlebot is crawling the page and simply declining to index it.

How DomainLens contributes

DomainLens audits exactly the conditions the Indexing API cannot influence: robots directives, canonical conflicts, status codes, sitemap health, and structured data validity. Pair it with the XML sitemap guide when discovery is the problem, and with schema markup validation when the JobPosting markup itself is at fault.

Can the Google Indexing API index a blog post faster?
No. Google supports it for JobPosting and BroadcastEvent pages only. A blog post submission is accepted and then ignored, so nothing about its crawl or index timing changes.
Why does the Indexing API return 403?
Almost always because the service account is not an Owner of the Search Console property, or the property that covers the URL is not the one where the account was added.
Does URL_DELETED remove a page from Google?
It notifies Google the page is gone, but the URL must genuinely return 404 or 410. Use it after removal, not as the removal mechanism itself.
Is the 200-per-day quota per site or per project?
Per Google Cloud project. You can request an increase, and Google expects a legitimate volume of supported content types to justify it.

Related resources