---
title: "Bulk URL Inspection in Google Search Console · GSC PAP"
source: https://gscpap.com/guides/diagnose-indexing-issues-bulk-url-inspection
updated: 2026-09-18
---

[All guides](https://gscpap.com/guides)

Guide · about 8 minutes

# Bulk URL inspection in Google Search Console: diagnose indexing issues at scale

By the [GSC PAP team](https://gscpap.com/about) · Updated September 18, 2026

Google Search Console has no bulk URL inspection button. The URL Inspection tool checks one URL at a time, and the Page indexing report shows counts per reason rather than the status of a list you choose. To inspect URLs in bulk you use the URL Inspection API, which returns the same index data for each URL within a quota of 2,000 inspections per day and 600 per minute for each property.

Below: what the API can and cannot do, what each coverage state means and which ones to act on, and a workflow for finding the one cause behind many unindexed pages. The last section runs the audit from Claude through GSC PAP, a read-only MCP server that calls the API for you.

## Can you inspect URLs in bulk in Google Search Console?

Not in the interface. The URL Inspection tool takes one fully qualified URL, typed into the search bar at the top of Search Console or opened from the Inspect link next to a URL in a report. It shows what Google has stored for that page: whether it is indexed, when it was last crawled, which canonical Google chose, and any structured data it found. Checking 200 blog posts means 200 lookups.

The Page indexing report covers the whole site, but it answers a different question: how many URLs sit under each reason. Its example lists stop at 1,000 URLs, and Google notes they are not guaranteed to include every affected URL. So it cannot give you the status of a specific set of pages, such as everything you published last quarter.

For per-URL answers across a list, Google released the URL Inspection API in January 2022. Any tool that offers bulk inspection through this API works within the same quota and limits described below.

## How does the URL Inspection API work, and what are its limits?

You send two things: the Search Console property and the URL to inspect. The API returns one inspection result for that URL: an overall verdict, the coverage state (such as "Crawled - currently not indexed"), whether robots.txt allows crawling, whether a noindex rule blocks indexing, whether Google could fetch the page, the last crawl time, the canonical you declared and the one Google selected, known sitemaps and referring URLs, plus rich result and AMP findings where present. Bulk inspection is one request per URL.

The limits that shape any bulk workflow:

-   Quota: 2,000 inspections per day and 600 per minute, enforced per Search Console property (calls that query the same site).
-   Indexed version only. The API reports what Google stored at the last crawl. It cannot run the live test from the Search Console interface, so a fix you shipped yesterday will not show until Google recrawls the page.
-   It reads, it does not submit. The API has no way to request indexing. The Request indexing button exists only in the Search Console interface, one URL at a time, with a daily cap. Google's separate Indexing API only accepts pages with job posting or livestream video markup, so it is not a general way to get pages indexed.
-   Your properties only. You can inspect URLs only in properties your Google account has access to.
-   Mobile usability is deprecated. The response still has a mobile usability field, but Google has deprecated it, so do not base decisions on it.

## What do the coverage states mean, and which should you fix?

The coverage state uses the same wording as the Page indexing report. Start from Google's own position: not every URL should be indexed. Redirects, duplicates and pages you excluded on purpose are working as intended, and Google says most sites have at least a few unindexed pages. What matters is that your important pages are indexed and that every exclusion has a reason you agree with.

Where a URL can stop on its way into Google's index

1.  The page exists on your site
    
    -   Lost: URL is unknown to Google: nothing links to it and no sitemap lists it
    
2.  Google discovers the URL
    
    Through a link on a crawled page or a sitemap entry
    
    -   Lost: Discovered - currently not indexed: the crawl was postponed
    -   Lost: Blocked by robots.txt
    
3.  Google crawls it
    
    Fetches the page, if robots.txt allows it
    
    -   Lost: Crawled - currently not indexed: Google chose not to index it for now
    -   Lost: Excluded by 'noindex' tag
    -   Lost: Duplicate, Google chose different canonical than user
    -   Lost: Soft 404, server error (5xx) or redirect error
    
4.  Google indexes it
    
    Can appear in search
    

The names are the coverage states in the Page indexing report and the URL Inspection API. Some stops are intended: a redirect, an alternate page with a proper canonical tag, or a noindex you set on purpose.

-   Expected, just confirm they are intentional: "Page with redirect", "Alternate page with proper canonical tag", "Excluded by 'noindex' tag", "Blocked by robots.txt", and "Not found (404)" for pages you removed.
-   Technical errors, fix first: "Server error (5xx)", "Redirect error", "Soft 404", 401 or 403 responses on public pages, and any noindex you did not mean to ship. These tend to come from one template or server rule, so one fix can clear many URLs.
-   Canonical choices: "Duplicate without user-selected canonical" and "Duplicate, Google chose different canonical than user". Compare the user-declared and Google-selected canonical in the result. If Google folded a page into one you consider different, make the content more distinct or fix the signals that point elsewhere.
-   "Crawled - currently not indexed": Google fetched the page and chose not to index it for now. Google says it may be indexed later and there is no need to resubmit it. Treat it as a question about the page: improve it, merge it into a stronger page, or decide it does not need to be in search.
-   "Discovered - currently not indexed": Google knows the URL but has not crawled it yet. Google's usual explanation is that it postponed the crawl to avoid overloading your site. Check that the page is linked from pages Google crawls and listed in a sitemap.
-   "URL is unknown to Google": Google has not seen the URL at all. It needs an internal link from a crawled page or a sitemap entry before anything else.

[![Search Console Page indexing report with the Why pages aren't indexed table](https://gscpap.com/images/guides/diagnose-indexing-issues-bulk-url-inspection.webp)](https://gscpap.com/images/guides/diagnose-indexing-issues-bulk-url-inspection.webp)

The report lists the same coverage states. The two highlighted (1) mean Google found or crawled the pages and held them back, which is worth a look. Redirects, alternates with a proper canonical and noindex pages are usually working as intended. Recreated with example data for a made-up site.

## How do you diagnose indexing issues at scale?

The quota rules out inspecting everything every day on a large site, so work from a shortlist and look for patterns rather than individual URLs.

-   Find where to look. In the Page indexing report, note which reasons have grown and since when. That points you to a template, a directory or a release date.
-   Build the list. Take the URLs you care about from one sitemap or directory, then drop the ones that already earn impressions in the Performance report, since a page that appears in results is indexed. What is left is your inspection list.
-   Inspect within the quota. At 2,000 per day per property, a 5,000-URL list takes three days, so inspect the pages that matter most first.
-   Group the results by coverage state and by URL pattern (directory, template, publish month). You are looking for one cause shared by many URLs: a template with a stray noindex, a section only reachable through deep pagination, a canonical tag pointing to the wrong version.
-   Fix the cause, then tell Google. For many new or updated pages, Google recommends a sitemap with accurate lastmod dates over requesting indexing URL by URL. If the issue shows in the Page indexing report, use Validate fix; Google says validation typically takes up to about two weeks.
-   Re-inspect the same list after Google recrawls to confirm the states changed.

## Running a bulk URL inspection with Claude

The prompt works in any client connected to GSC PAP. Not set up in Claude yet? [Connect GSC PAP to Claude](https://gscpap.com/integrations/claude-ai-connectors)

### The scenario

You published 120 blog posts this year and about half of them never show up in the Performance report. Checking them in the URL Inspection tool means 120 separate lookups. You want to know which posts are not indexed, why, and whether they share a cause, without writing a script against the API.

### The prompt

```prompt
Use the gsc-pap MCP server. Site: https://example.com.
1. Run get_index_coverage_summary as a quick check that my top pages are indexed.
2. Here are the blog URLs from my sitemap: [paste the list]. Use search_analytics_query (dimension: page, last 90 days) to find which of them had no impressions.
3. Inspect those with batch_inspect_urls, 10 URLs per call.
4. Group the results by coverageState. For each URL that is not indexed, show the verdict, last crawl time, user-declared and Google-selected canonical, and the likely cause.
5. Tell me the pattern most unindexed URLs share and what to fix first.
```

### What happens

1.  #### Claude checks your top pages with get_index_coverage_summary
    
    The tool takes your top pages by clicks over the last 28 days (up to 10), inspects each one, and counts verdicts and coverage states. It answers one question fast: are the pages that already earn traffic still indexed? It is a sample of your most visible pages, not a site-wide count; the Page indexing report in Search Console is the site-wide view.
    
2.  #### Claude narrows the list and inspects it in batches of 10
    
    search_analytics_query returns the pages that earned impressions, so Claude drops those from your list and keeps the rest. batch_inspect_urls accepts up to 10 URLs per call, inspects them one after another, and returns a result or an error for each URL, so 60 candidates take six calls. Every inspection counts toward Google's 2,000 per day quota for the property. For long lists, work one directory or template at a time so the results stay readable in the conversation.
    
3.  #### Claude groups the results and names the cause
    
    Claude buckets the URLs by coverageState and reads the fields that explain each bucket: robots.txt state, indexing state (a noindex in the robots meta tag or the X-Robots-Tag header), page fetch state, referring URLs, and the two canonicals. A readout might say: 23 URLs "Discovered - currently not indexed" with no crawl date and only deep pagination pages as referrers; 6 URLs "Duplicate, Google chose different canonical than user", all tag pages folded into their parent category. For any single URL, inspect_url returns the full result, including a link to the same inspection in Search Console.
    

### Outcome

You end with a few causes instead of a long list of URLs, each with the evidence behind it. GSC PAP is read-only (it uses the webmasters.readonly scope), so the fixes, the sitemap update and any Request indexing clicks happen on your site and in Search Console. After Google recrawls, run the same prompt on the same list to confirm the states moved.

### Where to take it next

-   Use list_sitemaps and get_sitemap_details to confirm the URLs sit in a submitted sitemap and that Google downloaded it without errors.
-   Two weeks after a fix, ask Claude to re-inspect only the URLs that were not indexed and report which coverage states changed.
-   Ask Claude for the unindexed URLs grouped by directory, as a table you can hand to whoever owns that template.

## Frequently asked questions

### Is there a bulk URL inspection tool in Google Search Console?

No. The Search Console interface inspects one URL at a time. Bulk inspection means calling the URL Inspection API for each URL, with your own script or a tool built on the API, within Google's quota of 2,000 inspections per day and 600 per minute per property.

### What is the URL Inspection API quota?

2,000 queries per day and 600 queries per minute, enforced per Search Console property. At that rate a list of 5,000 URLs takes three days to inspect, so start with the pages that matter most.

### Can the URL Inspection API request indexing?

No. It only reads the indexed status of a URL. Request indexing is available only in the Search Console interface, one URL at a time and with a daily limit. For many new or updated pages, Google recommends submitting a sitemap with accurate lastmod dates.

### Does the URL Inspection API run a live test?

No. It returns data about the version in Google's index, from the last crawl. The live URL test is available only in the Search Console interface.

### What does "Crawled - currently not indexed" mean?

Google fetched the page and decided not to index it for now. Google says it may be indexed in the future and there is no need to resubmit the URL. Your options are to improve the page, merge it into a stronger one, or accept that it does not need to rank.

## Other guides

[All guides](https://gscpap.com/guides)

[

### AI queries in Google Search Console: how to tell people, AI Mode and agents apart

Search Console mixes AI Mode follow-ups, AI agent searches and scripts into your query report. How to spot each one, with regex filters and real data.

14 min read

](https://gscpap.com/guides/ai-queries-in-google-search-console)[

### Good position, no clicks: find the SERP features eating your CTR

Ranking third and getting no clicks usually means something sits above you: an AI Overview, a featured snippet or a map pack. How to check which, query by query.

7 min read

](https://gscpap.com/guides/low-ctr-at-good-position-serp-features)[

### Find the pages quietly losing organic traffic, before the rankings go

Content decay is slow enough to miss on a dashboard. How to find the pages whose clicks keep sliding, tell decay from seasonality, and decide what to refresh.

7 min read

](https://gscpap.com/guides/find-pages-losing-organic-traffic)[

### Traffic changed: how to compare two Search Console periods and find out why

Clicks are down 18% and nobody knows why. How to compare two periods properly, avoid the three traps that fake a drop, and find the queries and pages behind it.

7 min read

](https://gscpap.com/guides/compare-search-console-date-ranges)[

### Google Search Console anonymized queries: measure the traffic you can't see

Search Console hides anonymized queries from query rows but counts them in totals. Learn what they are, why no tool reveals them, and how to measure them.

6 min read

](https://gscpap.com/guides/google-search-console-anonymized-queries)[

### GSC clicks vs GA4 sessions: why they differ and how to tie clicks to conversions

A Search Console click and a GA4 session measure different things. Why the numbers never match, what gap is normal, and how to compare and combine them page by page.

11 min read

](https://gscpap.com/guides/correlate-organic-clicks-to-ga4-conversions)[

### Audit Core Web Vitals across your site with AI

Audit Core Web Vitals with Claude through a hosted PageSpeed Insights MCP server: Lighthouse lab data and real-user CrUX field data for your top pages.

7 min read

](https://gscpap.com/guides/audit-core-web-vitals-with-ai)[

### Google Search Console historical data: how to keep it past 16 months

Google Search Console keeps 16 months of historical data, then deletes it. Here is what it includes and how to keep it longer, from BigQuery to an archive.

8 min read

](https://gscpap.com/guides/recover-search-console-history-past-16-months)[

### Build a weekly SEO health report with Claude

Automate a weekly SEO report with Claude: one saved prompt pulls Search Console changes, quick wins, decaying pages, GA4 conversions and Core Web Vitals.

8 min read

](https://gscpap.com/guides/weekly-seo-health-report-via-claude)[

### Track keyword rankings in Google Search Console, past the 16-month limit

See a keyword's position history in Google Search Console, what that average really measures, and how to keep ranking history past the 16-month limit.

6 min read

](https://gscpap.com/guides/track-keyword-rankings-over-years)[

### How to find striking distance keywords in Google Search Console

Striking distance keywords rank just off page one of Google. Find them in Search Console, pick the ones worth fixing, and learn what to change on the page.

8 min read

](https://gscpap.com/guides/find-seo-quick-wins)[

### How to find keyword cannibalization in Google Search Console

Check for keyword cannibalization in Google Search Console: find queries where your pages compete, judge whether it hurts, and fix the cases that do.

8 min read

](https://gscpap.com/guides/detect-keyword-cannibalization)

### Tools that automate this workflow

The MCP exposes 36 tools across 9 categories. These are the ones most relevant to this page:

-   [batch_inspect_urls](https://gscpap.com/tools#batch_inspect_urls) · Bulk URL Inspection, up to 10 URLs per call within Google's 2,000-per-day quota. Diagnose why a content cluster or sitemap isn't getting indexed.
-   [inspect_url](https://gscpap.com/tools#inspect_url) · Single-URL deep dive: indexability, last crawl, canonical, mobile usability, structured data. The full URL Inspection API result.
-   [get_index_coverage_summary](https://gscpap.com/tools#get_index_coverage_summary) · Get an account-wide breakdown of indexing states (indexed, crawled-not-indexed, discovered-not-indexed) so you know where to focus.
-   [search_analytics_query](https://gscpap.com/tools#search_analytics_query) · Run any Search Analytics query with full dimension and filter support, identical to what you'd hit the GSC API for, but inline in chat.
-   [list_sitemaps](https://gscpap.com/tools#list_sitemaps) · List all sitemaps submitted for a property along with last download time and status.

[Browse all 36 tools](https://gscpap.com/tools)

### Skip the GCP project. Just sign in.

GSC PAP is hosted, free, and read-only. No service account JSON, no Python venv, no API keys. Sign in with Google, mint a bearer token, paste it into Claude / Cursor / Claude Code. About 60 seconds end to end.

[Sign in with Google](https://app.gscpap.com/login) Read-only Search Console scope, revoke anytime

Want a guide for a workflow we have not covered? Email [support@gscpap.com](mailto:support@gscpap.com).
