May 22, 2026 · 3 min read
How to verify a Google Indexing API service account in Search Console
Step-by-step setup: create a Google Cloud service account, enable the Indexing API, add the SA as a verified Owner in Search Console, and confirm submissions work.
By Imad Benzrak · Founder, Rapid Indexer
Google's Indexing API is one of the fastest ways to get URLs into Google's index — but only for URLs on domains you own. Setting up a service account with the right permissions takes about 15 minutes and one specific GSC role that catches everyone off-guard.
This tutorial walks through the entire setup, end-to-end. By the end you'll have a working SA that can submit your URLs to Google's index in seconds.
Prerequisites
- A Google Cloud account (free tier works fine — Indexing API has no cost)
- A site already verified in Google Search Console (you must own the domain; doesn't work for marketplace URLs like Etsy)
- ~15 minutes of patience for permission propagation
Why this setup is finicky
Most "create a service account" tutorials skip the most important step: the SA must be added to Search Console with the Owner role specifically. "Full" access (which sounds higher) is NOT enough. The Indexing API checks the SA's role in GSC and rejects anything below Owner.
Get this wrong and every API call returns HTTP 403: Permission denied. Failed to verify the URL ownership.
The non-obvious gotchas
Gotcha #1 — Wrong role
GSC's "Users and permissions" lets you choose Owner / Full / Restricted. For the Indexing API, only Owner works. The other roles can read GSC data but can't authorize API calls.
Gotcha #2 — Wrong property type
GSC has two property types: URL prefix (e.g., https://example.com/) and
Domain (e.g., example.com). Add the SA to the SPECIFIC property you'll
be submitting URLs against. If you submit https://www.example.com/foo
but only added the SA to https://example.com/, you'll get a 403 — those
are different properties.
Gotcha #3 — Propagation delay
After adding the SA in GSC, wait 5-10 minutes before testing. Permission propagation is slow. Failing immediately doesn't mean it'll keep failing.
Gotcha #4 — Indexing API quotas
Default quota is 200 URL submissions per day per GCP project. For higher volume, you can request a quota increase from Google (free, takes 1-3 business days) OR rotate across multiple GCP projects.
Gotcha #5 — Indexing API is technically restricted to JobPosting + BroadcastEvent
Google's official docs say the API is "intended for JobPosting and BroadcastEvent schema only." In practice, it accepts URLs of any type and indexes them. The "intended" wording is more about Google's right to revoke access in edge cases, not a hard restriction.
After verification — what to do with it
Now that you have a working SA, you can submit URLs programmatically:
# Get an access token using the SA JSON key
ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
# Submit a URL
curl -X POST 'https://indexing.googleapis.com/v3/urlNotifications:publish' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yoursite.com/new-page",
"type": "URL_UPDATED"
}'
Successful response:
{
"urlNotificationMetadata": {
"url": "https://yoursite.com/new-page",
"latestUpdate": {
"url": "https://yoursite.com/new-page",
"type": "URL_UPDATED",
"notifyTime": "2026-05-22T..."
}
}
}
The URL is typically crawled within 5-30 minutes and indexed within hours.
Limitations
You can't use this SA to submit URLs on domains you don't own. If you tried
to submit https://www.etsy.com/listing/12345 (or any marketplace URL),
you'd get a 403 — even with the SA properly verified for your own domain.
The workaround for marketplace URLs is the satellite-page method: generate a satellite page on an owned domain with a canonical link to the marketplace URL, then submit the satellite via this API.
Rotating across multiple SAs for higher throughput
If you need >200 submissions/day, the easiest path is multiple SAs across multiple GCP projects:
- Create N separate GCP projects (each gets its own 200/day quota)
- Enable Indexing API in each
- Create one SA per project
- Add ALL the SA emails as Owners in Search Console (you can have multiple owners per property)
- Rotate submissions across the SAs in code
Most indexing services use 3-10 SAs in rotation. With 10 SAs you get 2000/day across one property without requesting quota increases.
Bottom line
15 minutes of setup unlocks Google's fastest indexing channel for any domain you own. The "Owner role required" gotcha is the only thing that trips up newcomers — once you know about it, the rest is straightforward.
For marketplace URLs (Etsy, Amazon, eBay, etc.), this API alone won't work — you'll need the satellite-page workaround. But for YOUR OWN sites, this is the most powerful indexing tool Google offers.