Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Requirements 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
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step-by-step service-account setup and verification

1. Identify the Cloud project tied to the credentials

  1. Open the service-account JSON key used by your application.
  2. Record the project identifier and the client_email value. Do not assume the project selected in a browser tab is the project used by the key.
  3. 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
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 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

  1. In Google API Console, switch to the project associated with the service-account credentials.
  2. Open the API library and activate the Indexing API.
  3. 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

  1. Verify the website in Search Console using the property type appropriate for your site.
  2. Open the exact Domain property or URL-prefix property that contains the URL you will submit.
  3. Use Search Console’s user and permission controls to add the service-account email from client_email as a delegated owner.
  4. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Common 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
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • 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_UPDATED for a page whose content or availability changed.
  • URL_REMOVED for 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 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:

  1. Read the complete HTTP response, including the structured error reason and message.
  2. Identify the runtime service-account email from the credentials actually loaded by the application.
  3. Confirm the Cloud project associated with that identity and verify that the Indexing API is enabled there.
  4. Check that the same email is a delegated owner of the Search Console property containing the exact submitted URL.
  5. Mint a fresh OAuth 2.0 token with https://www.googleapis.com/auth/indexing and verify that the request carries it.
  6. Submit a documented payload using a valid URL and URL_UPDATED or URL_REMOVED.
  7. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.