Google usually discovers new or updated pages through sitemaps, internal links and its normal crawling process. The Google Indexing API is a different route: it lets a site notify Google directly when certain kinds of pages are added, updated or removed. It is a useful tool, but it is also widely misunderstood and misused.

In this guide we explain what the Indexing API is, an important limitation (it is not for ordinary pages), how to notify Google about blog and product pages properly, how to set up the API with a Google Cloud project and a service account, quotas, a Python script, WordPress considerations and common errors.

What Is the Google Indexing API?

An API that lets site owners send Google a notification that a URL was updated or deleted, so that Google can crawl it sooner. It does not index anything by itself; it only notifies.

Important: The Indexing API Cannot Be Used on Every Page

Important: The Indexing API Cannot Be Used on Every Page

According to Google’s documentation, the Indexing API is intended for pages with job posting structured data and for livestream (broadcast event) pages. Ordinary blog, product and service pages are not within the supported use. Using it for unsupported pages may produce no benefit and may go against the guidelines. Follow Google’s current documentation.

How Should Blog and Product Pages Be Reported to Google?

Use the methods that are intended for them:

What Is the Google Indexing API Used For?

For supported page types it can be used to:

  • Report a new job posting
  • Report a change to a job posting
  • Remove an expired posting
  • Report the start of a livestream
  • Report changes to livestream details
  • Query the status of notifications

What the Indexing API Does Not Do

It does not guarantee that a page will be indexed, ranked or shown quickly; it does not replace a sitemap; and it does not fix pages that Google decides not to index.

Indexing API Notification Types

  • URL_UPDATED: a new or updated URL.
  • URL_DELETED: a URL that has been removed.

Indexing API vs. Sitemap

A sitemap lists all the pages you want Google to know about, in bulk and regularly. The Indexing API sends event-style notifications about individual URLs for supported types, when they change.

Indexing API vs. Search Console URL Inspection

URL Inspection is a manual tool in Search Console for checking and requesting indexing of a single URL. The Indexing API is programmatic and is for the supported page types.

Requirements for Using the Google Indexing API

  • A Google Cloud project
  • The Indexing API enabled
  • A service account with a key file
  • The service account added as an owner of the site in Search Console
  • Pages that qualify

Create a Google Cloud Project

In the Google Cloud console, create a new project, give it a name and select it.

Enable the Indexing API

In the project’s API library, find “Web Search Indexing API” and enable it.

Create a Service Account

Under IAM & Admin, create a service account for the project and give it a clear name.

Create the JSON Key File

For the service account, create a key in JSON format and download it.

Where Should the JSON Key Be Stored?

Keep it secret and outside any public folder or repository. Treat it like a password, restrict who can read it and rotate it if it is ever exposed.

Add the Service Account to Search Console

Verify Site Ownership

Make sure your site is verified in Search Console.

Add the Service Account Email

In Search Console settings, add the service account’s email address as an owner of the property.

Indexing API Quotas

By default, the publishing quota during start-up and testing is about 200 requests per project per day. Check the quota screen in your Google Cloud project for the current limits.

Does Using Batch Reduce the Quota?

No. A batch request can combine up to 100 API calls, but each URL still counts as a separate request against the quota.

Is Using Multiple Service Accounts the Right Approach?

Using several service accounts to get around quotas is not appropriate. Request a quota increase through the proper channel if you have a legitimate need.

Setting Up the Google Indexing API with Python

Prepare the Python Environment

Install a recent Python version and create a virtual environment.

Install the Python Packages

pip install google-api-python-client google-auth

Python Project Structure

indexing/
├── service-account.json   # keep out of version control
└── notify.py

A Python Script for Updating and Deleting URLs

from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ["https://www.googleapis.com/auth/indexing"]
creds = service_account.Credentials.from_service_account_file(
    "service-account.json", scopes=SCOPES
)
service = build("indexing", "v3", credentials=creds)

def notify(url, kind="URL_UPDATED"):
    body = {"url": url, "type": kind}
    return service.urlNotifications().publish(body=body).execute()

# Example usage
print(notify("https://example.com/jobs/senior-developer"))                 # new or updated
print(notify("https://example.com/jobs/old-posting", "URL_DELETED"))        # removed

How to Use the Script

  • Send a new or updated URL: call notify(url).
  • Send a removal notice: call notify(url, "URL_DELETED") after the page returns 404 or 410, or carries a noindex tag.
  • Query notification status: use the getMetadata method for the URL.

Sending Batch Requests with Python

You can group up to 100 calls in one batch request to reduce the number of HTTP round trips. Quota is still counted per URL.

Can the Python Script Be Scheduled?

Yes, with cron or a similar scheduler, or run it from your publishing workflow when a supported page changes.

Using the Google Indexing API with WordPress

If your WordPress site publishes supported content such as job postings, you can integrate the API, but treat it with care.

How to Store the JSON Key in WordPress

Store it outside the web root, or as a protected server-side secret, never in a public folder or theme file.

A Custom Indexing API Plugin for WordPress

A small custom plugin can call the API when a supported post is published, updated or deleted. Keep it minimal and log results. Use reputable plugins carefully; see WordPress SEO plugins.

Activating the WordPress Plugin

Activate it, add the key path in settings and test with a supported URL.

What If WP-Cron Does Not Work?

Scheduled tasks may not run reliably on low-traffic sites. Use a real server cron job to trigger WP-Cron, and check hosting limits; see what is hosting.

Turn On Error Logs in WordPress

Enable debug logging temporarily to see API errors.

Common Errors

  • 403 permission denied: the service account is not an owner in Search Console.
  • 429 quota exceeded: you have used the daily quota.
  • Unauthorized: the key file or scope is wrong.
  • Sending unsupported pages: no benefit and may violate guidelines.
  • Sending URLs that are not canonical, which creates confusion; see what is a canonical URL.

What to Do for Pages the API Does Not Support

Concentrate on solid on-site fundamentals: on-site SEO optimization, a clean sitemap, internal links and quality content. An SEO analysis can reveal why pages are slow to be indexed.

Frequently Asked Questions

Is the Google Indexing API free?

API use is free. However, server, software development, maintenance and integration costs can arise.

Can the Indexing API be used on any website?

The API should be used only for valid job posting and livestream pages. Normal blog, product and service pages are not within the supported scope.

Does the Indexing API add the URL to the index immediately?

No. The API only sends a notification to Google. The crawling and indexing decision belongs to Google.

What does an HTTP 200 response mean?

It shows that Google received the API notification successfully. It does not show that the page is definitely indexed.

When should URL_UPDATED be used?

When a new supported page is published or an important change is made to the content of an existing page.

When should URL_DELETED be used?

When the page is removed and returns 404 or 410, or when a noindex tag is applied.

Does a metadata query show the index status?

No. It only shows the latest update or deletion notifications Google received for the URL.

What is the daily Indexing API quota?

During the start and test process, the default publishing quota is 200 requests per day per project. Check the project’s Google Cloud quota screen separately.

How many URLs can be sent in a batch request?

A single batch request can combine up to 100 API calls. Each URL counts as a separate request against the quota.