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 Ownerpermission 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
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