iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
A Google Indexing API 403 is usually caused by one of four mismatches: the Indexing API is not enabled in the Cloud project, the service account is not an owner of the matching Search Console property, the OAuth token lacks the exact Indexing scope, or Google Cloud IAM is denying the caller. A JSON key by itself does not prove URL ownership.
What a 403 means in the Google Indexing API
HTTP 403 means Google understood the request but will not authorize it. The useful diagnosis comes from the response message, not from the number alone. The Indexing API can return a 403 for a project configuration problem, an ownership mismatch, an invalid account state, or a broader Cloud IAM policy denial.
Google’s Search Central documentation states: “Every call to the Indexing API must be authenticated with an OAuth token that you get in exchange for your private key.” The authorization guide likewise says: “Every request your application sends to the Indexing API must include an authorization token.” A service-account JSON file contains credentials for creating that token; it does not automatically grant access to a website in Search Console.
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemsRequirements that must all be true
| Requirement | What to verify | Typical failure when it is missing |
|---|---|---|
| Cloud project | The project associated with the service-account credentials is the project you are checking. | accessNotConfigured or a similar project/API configuration error. |
| Indexing API enabled | The Indexing API is activated in that same Google Cloud project. | Google rejects the call before URL ownership is evaluated. |
| Service-account identity | The caller is the account shown in the key’s client_email, normally in the form name@project-name.iam.gserviceaccount.com. |
The wrong principal is used to mint the token or is granted Search Console access. |
| Search Console ownership | That exact service-account email is added as a delegated owner of the relevant Domain property or URL-prefix property. | Permission denied. Failed to verify the URL ownership. |
| OAuth 2.0 token | The request carries a current access token obtained with the service-account credentials. | Unauthenticated or unauthorized request. |
| Indexing scope | The token was issued with https://www.googleapis.com/auth/indexing. |
The token is valid but not authorized for Indexing API operations. |
| Supported payload | The request uses a valid URL and notification type, either URL_UPDATED or URL_REMOVED. |
Usually a 400-level request error rather than a permission error. |
Diagnose the exact 403 message first
accessNotConfigured
This error points to the Cloud project or API activation. Confirm which project owns the service account, then open Google API Console for that project and activate the Indexing API. If you enabled the API in a different project, enabling it there will not repair credentials that belong to this one.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
“Permission denied. Failed to verify the URL ownership.”
This is the Indexing API’s ownership-specific message. It means Google could not establish that the service-account principal is allowed to submit the URL. Check the service-account email, the Search Console property type, and the URL being sent. The property must contain the submitted URL, and the service account must be added as a delegated owner of that property; merely possessing a valid private key is insufficient.
Deleted, disabled, or unverified account messages
If the response identifies a deleted, disabled, or unverified account, correct the account state before changing website permissions. A disabled service account cannot authenticate successfully even if it remains listed in Search Console, and granting additional roles does not reactivate it.
Generic Google Cloud permission errors
Not every 403 is an Indexing API ownership error. Google Cloud lists several causes for general permission denials: the caller lacks a required allow-role permission, an organization or project deny policy blocks the action, or the target resource is not eligible for the operation. In those cases, inspect the principal that actually made the request and evaluate its IAM policy and any applicable deny rules.
Free tools Windows power users keep installed
One-click scans. No signup required.
Step-by-step service-account setup and verification
1. Identify the Cloud project tied to the credentials
- Open the service-account JSON key used by your application.
- Record the project identifier and the
client_emailvalue. Do not assume the project selected in a browser tab is the project used by the key. - Use that project as the reference for every subsequent API and IAM check.
The identity in client_email is the principal Google must recognize. If your deployment uses a different key, workload identity, impersonated account, or environment variable than your local test, the principal may differ even though the code appears unchanged.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
2. Enable the Indexing API in that project
- In Google API Console, switch to the project associated with the service-account credentials.
- Open the API library and activate the Indexing API.
- Wait for the configuration change to propagate, then retry with a newly minted access token.
Enabling an API in another project does not transfer access. If the error remains accessNotConfigured, re-check the project number or identifier in the credentials and the project currently selected in the console.
3. Add the service account as a delegated Search Console owner
- Verify the website in Search Console using the property type appropriate for your site.
- Open the exact Domain property or URL-prefix property that contains the URL you will submit.
- Use Search Console’s user and permission controls to add the service-account email from
client_emailas a delegated owner. - Save the change and allow a short period for Google’s authorization systems to recognize it before testing.
A Domain property covers the verified domain and its protocol, host, and path variations according to Search Console’s property rules. A URL-prefix property is narrower: its protocol, hostname, and path prefix must match the submitted URL. For example, ownership of an HTTPS URL-prefix does not establish ownership for an HTTP URL-prefix or a different host. When troubleshooting, compare the complete submitted URL character by character with the property definition.
4. Mint a token with the required scope
Create an OAuth 2.0 access token using the same service-account credentials and request the exact scope https://www.googleapis.com/auth/indexing. The token must be sent in the request’s authorization header and must still be valid when the API receives the call.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallCommon implementation mistakes include requesting a different Google scope, creating a token for one service account and sending it with another application’s configuration, omitting the authorization header, or reusing an expired token. Google recommends using an official client library because it handles JWT cryptography and reduces token-construction errors.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
5. Confirm the caller before changing permissions
Log or otherwise inspect the service-account identity selected at runtime (without exposing the private key). Compare it with the email added in Search Console. This check is especially important when local development, CI, and production use different credential sources. If the runtime identity is not the delegated owner, changing the permissions of an unused account will have no effect.
6. Send a documented request shape
Once authorization is correct, submit a request to the documented Indexing API publishing operation with a valid, fully qualified URL and one supported notification type:
URL_UPDATEDfor a page whose content or availability changed.URL_REMOVEDfor a page that should be removed from the index.
A malformed URL, missing field, or unsupported notification type is a request-format problem and generally produces a 400-level response. Do not keep changing IAM roles when the response is describing invalid input.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Ownership mismatches that commonly look like permission failures
Wrong property type
The submitted URL must be inside the property for which the service account is a delegated owner. A URL-prefix property such as an HTTPS host and path does not automatically cover another protocol, subdomain, or path. If you operate several properties, record which one corresponds to each submission target.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Wrong service-account email
Copy the email exactly from the active credentials. Display names, a human administrator’s email, and the Cloud project owner’s email are not substitutes for the service-account principal that signs the token.
Ownership added to a different Search Console property
It is possible to verify a site successfully and still grant access on the wrong property. Check the property selector and compare its scope with the URL in the request. The API’s ownership message is expected when those scopes do not align.
Permission change has not propagated
After adding the delegated owner, wait briefly and retry with a fresh token. Repeatedly sending an old token or testing immediately from a cached deployment can obscure whether the ownership change was accepted.
How to separate Search Console authorization from Cloud IAM
| Observation | Most likely layer | Next check |
|---|---|---|
accessNotConfigured |
Cloud project/API configuration | Project selected for the key and Indexing API activation. |
| “Failed to verify the URL ownership” | Search Console property or URL mismatch | Delegated-owner email, property type, and exact URL scope. |
| Account deleted, disabled, or unverified | Credential or account state | Whether the runtime service account exists and is enabled. |
| Generic Cloud IAM permission denial | Allow/deny policy or resource eligibility | Runtime principal, required permission, role bindings, deny policies, and resource eligibility. |
| Invalid URL or notification type | Request validation | Payload fields and supported values; treat as a 400-level issue. |
This classification prevents a common failure mode: adding broad Cloud roles to solve an error that is actually caused by Search Console ownership. Conversely, adding the service account to Search Console will not fix a project where the API is disabled or an organization deny policy blocks the call.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Token and application checks
- Scope: verify the literal scope string is
https://www.googleapis.com/auth/indexing, including its scheme and path. - Freshness: obtain a new access token after changing credentials or permissions; do not assume a previously cached token reflects the change.
- Header: ensure the access token is attached as the authorization credential on every request.
- Principal consistency: confirm that the account used to mint the token is the one granted delegated ownership.
- Clock and expiry: a badly skewed system clock or expired token can make an otherwise correct authentication flow fail; let the client library manage token renewal where possible.
- Private-key handling: keep the JSON key out of source control and logs. Replacing a leaked key does not change Search Console ownership automatically; update the application and continue using the same authorized service-account identity, or deliberately grant the replacement identity.
A practical isolation sequence
Use this order so each test eliminates a different class of cause:
- Read the complete HTTP response, including the structured error reason and message.
- Identify the runtime service-account email from the credentials actually loaded by the application.
- Confirm the Cloud project associated with that identity and verify that the Indexing API is enabled there.
- Check that the same email is a delegated owner of the Search Console property containing the exact submitted URL.
- Mint a fresh OAuth 2.0 token with
https://www.googleapis.com/auth/indexingand verify that the request carries it. - Submit a documented payload using a valid URL and
URL_UPDATEDorURL_REMOVED. - If the response is still a generic IAM denial, inspect allow bindings, deny policies, the required permission, and resource eligibility for the principal.
Keep a record of the identity, project, property, URL, scope, and response for each test. Changing one variable at a time makes it clear which authorization layer was responsible.
What not to do
- Do not treat the existence of a JSON key as proof that Google can verify the website.
- Do not enable the API in an unrelated project and expect credentials from another project to inherit it.
- Do not grant broad IAM roles before reading whether the response is specifically about Search Console ownership.
- Do not diagnose a malformed URL or unsupported notification type as a 403 permission problem.
- Do not publish private keys or paste them into issue trackers while investigating.
When the fix is complete
A successful authorization path has a single, traceable chain: the application loads the intended service-account identity; that identity belongs to the Cloud project where the Indexing API is enabled; the same email is a delegated owner of the matching Search Console property; the request carries a current OAuth 2.0 token with the Indexing scope; and the payload uses a valid URL and supported notification type. If any link belongs to a different project, identity, property, or scope, Google can correctly return 403 even though each individual component appears valid.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

