Google Indexing API: Complete Guide (2026)

Everything you need to know about the Google Indexing API — its capabilities, strict limitations, setup process, and when you should use alternatives.

What Is the Google Indexing API?

The Google Indexing API is a programmatic interface that allows website owners to notify Google when pages are created, updated, or removed. Unlike sitemap submissions, the Indexing API sends direct signals to Googlebot, prompting near-immediate crawling of the specified URLs.

Introduced primarily for job listing websites and live streaming platforms, the API was designed to keep time-sensitive content fresh in Google's index. It operates through two actions: urlNotification.publish to submit URLs and urlNotification.get to check the status of a previously submitted URL.

Important Limitation

The Indexing API only supports two content types: JobPosting and BroadcastEvent (for live streaming videos). Using it for other content types violates Google's guidelines and may result in your API access being revoked. For general URL indexing, consider using IndexLens to monitor and optimize your indexing status.

Supported Content Types

Google strictly limits the Indexing API to two structured data types. Attempting to submit other URLs may work technically but will not be processed and could jeopardize your API credentials.

JobPosting Schema

Pages that contain valid JobPosting structured data. This is the primary use case, allowing job boards to rapidly index new listings and remove expired postings from search results.

BroadcastEvent Schema

Pages with BroadcastEvent structured data pointing to live streaming video content. This helps Google surface live events in search results with accurate availability status.

Prerequisites

Before you begin, ensure you have the following in place:

  • A Google Cloud Platform (GCP) project with the Indexing API enabled
  • A Service Account with the Search Console Owner permission for your verified property
  • URLs must be crawlable (not blocked by robots.txt or noindex tags)
  • Valid structured data (JobPosting or BroadcastEvent) on the target pages
  • Python 3.7+ or Node.js environment for running API scripts

Service Account Key Security

Store your service account JSON key file securely. Never commit it to version control. Use environment variables or a secrets manager to reference the key path in production.

Setup Step by Step

Follow these steps to configure and authenticate the Indexing API for your project.

Step 1: Enable the API in GCP

Navigate to the Google Cloud Console, select or create a project, then go to APIs & Services → Library. Search for "Indexing API" and click Enable.

Step 2: Create a Service Account

Under APIs & Services → Credentials, create a new Service Account. Download the JSON key file. Add the service account email address as an owner in Google Search Console.

Step 3: Install Client Libraries

Install the Google API client library for your language of choice. For Python: pip install google-auth google-api-python-client

Code Example: Python

Python — Submit URL to Indexing API
from google.oauth2 import service_account
from googleapiclient.discovery import build

SCOPES = ["https://www.googleapis.com/auth/indexing"]
KEY_FILE = "service-account.json"

credentials = service_account.Credentials.from_service_account_file(
    KEY_FILE, scopes=SCOPES
)
service = build("indexing", "v3", credentials=credentials)

# Notify Google about a new or updated URL
def publish_url(url: str):
    body = {
        "url": url,
        "type": "URL_UPDATED"
    }
    response = service.urlNotifications().publish(body=body).execute()
    print(f"Published: {response}")

# Notify Google to remove a URL
def delete_url(url: str):
    body = {
        "url": url,
        "type": "URL_DELETED"
    }
    response = service.urlNotifications().publish(body=body).execute()
    print(f"Deleted: {response}")

publish_url("https://example.com/jobs/software-engineer")

Limitations & Restrictions

Understanding the constraints of the Indexing API is critical to avoid wasted effort or policy violations.

  • Content-type restriction: Only JobPosting and BroadcastEvent structured data pages are officially supported
  • Daily quota: The default quota is 200 publish requests per day per project (can be increased via request)
  • No guarantee of indexing: Submitting a URL does not guarantee it will be indexed — Google still evaluates content quality
  • Authentication complexity: Requires a Service Account with Search Console ownership, which adds operational overhead
  • Not a sitemap replacement: The API should complement, not replace, your sitemap strategy

Common Errors

When working with the Indexing API, developers frequently encounter these issues:

403 Forbidden — Permission Denied

The service account email has not been added as an owner in Google Search Console, or the API is not enabled in your GCP project.

400 Bad Request — URL Not Owned

The URL does not match a verified property in Search Console. Ensure the protocol (http vs https) and domain match exactly.

429 Too Many Requests — Quota Exceeded

You have exceeded the daily quota. Implement exponential backoff and batch your requests to stay within limits.

Alternatives with IndexLens

If your content does not fall under JobPosting or BroadcastEvent categories, the Indexing API cannot help you. IndexLens provides a comprehensive alternative for monitoring and improving your indexing status across all content types.

Bulk Index Status Checking

Check hundreds of URLs at once against Google's index to identify pages that need attention — no API restrictions on content type.

Continuous Monitoring

Track indexing changes daily with alerts when pages are deindexed or indexing issues are detected, so you can act quickly.

Why Not Just Use the API?

The Indexing API only pushes URLs to Google's queue. It does not tell you whether your pages are actually indexed, why they were dropped, or how to fix underlying issues. IndexLens fills that gap with actionable diagnostics.

Ready to check your indexing status?

Check My URLs Now