Google Indexing API v3 Reference
Overview
The Indexing API allows you to notify Google when pages are added or removed.
IMPORTANT: Use the Indexing API only for eligible URLs with JobPosting or BroadcastEvent embedded in VideoObject structured data. For a few ordinary URLs, use URL Inspection; for many ordinary URLs, use sitemaps. A URL_UPDATED notification only means Google may recrawl soon and gives no indexing benefit for other page types.
Endpoints
Publish Notification
POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
"url": "https://example.com/jobs/software-engineer",
"type": "URL_UPDATED"
}| Field | Values |
|---|---|
url |
The fully qualified URL |
type |
URL_UPDATED (page added/changed), URL_DELETED (page removed) |
Response:
{
"urlNotificationMetadata": {
"url": "https://example.com/jobs/software-engineer",
"latestUpdate": {
"url": "https://example.com/jobs/software-engineer",
"type": "URL_UPDATED",
"notifyTime": "2026-03-27T10:00:00Z"
}
}
}Get Notification Metadata
GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url={ENCODED_URL}
Returns latestUpdate and latestRemove timestamps for the URL.
Batch Requests
POST https://indexing.googleapis.com/batch
Up to 100 URLs per batch request using multipart/mixed format:
POST /batch HTTP/1.1
Content-Type: multipart/mixed; boundary=batch_boundary
--batch_boundary
Content-Type: application/http
Content-ID: <item1>
POST /v3/urlNotifications:publish HTTP/1.1
Content-Type: application/json
{"url": "https://example.com/jobs/1", "type": "URL_UPDATED"}
--batch_boundary
Content-Type: application/http
Content-ID: <item2>
POST /v3/urlNotifications:publish HTTP/1.1
Content-Type: application/json
{"url": "https://example.com/jobs/2", "type": "URL_UPDATED"}
--batch_boundary--Authentication
- Scope:
https://www.googleapis.com/auth/indexing - Auth type: Service account (OAuth 2.0)
- The service account must be Owner in Google Search Console for the target domain
Quotas
| Limit | Value | Scope |
|---|---|---|
| Publish requests | 200/day (default) | Per project |
| Read-only requests | 180/min | Per project |
| Total requests | 380/min | Per project |
Request a quota increase: Indexing API Quota Increase Form
Error Codes
| Code | Meaning | Action |
|---|---|---|
| 400 | Malformed URL or request body | Check URL format |
| 403 | Permission denied or quota exceeded | Add service account as Owner in GSC, or check quota |
| 429 | Rate limit exceeded | Back off and retry with exponential delay |
| 500/503 | Server error | Retry with exponential backoff |
Best Practices
- Submit only URLs with actual content changes (don't spam updates)
- Use
URL_DELETEDonly when a page is permanently removed (returns 404/410) - Track daily quota usage -- the 200/day limit resets at midnight Pacific Time
- For large-scale indexing, use XML sitemaps + Search Console instead
- Batch requests count individually against the daily quota (100 batch = 100 quota)