Check which pages Google indexed, in bulk

An index coverage audit asks Google, URL by URL, whether each page in your sitemap is indexed and, if not, why. Your AI agent reads the sitemap, runs a URL Inspection on every page and groups the results by reason. At the end you have a short list: what is indexed, what is not, and which fix comes first.

The prompt

Paste it into Claude, ChatGPT or any client connected to the Google Search Console MCP server. Replace [your property] with your site.

Run an index coverage audit for [your property]. 1. Call list_sitemaps and tell me which sitemaps are submitted, when Google last downloaded each one, and any errors or warnings. 2. Fetch the sitemap file and list its URLs. If there are more than 14, stop and ask me which ones to inspect first (start with the pages that matter most for traffic). 3. Run inspect_url on each chosen URL. For each one record: coverage state, indexing state, robots.txt state, page fetch result, last crawl date, user-declared canonical and Google-selected canonical. 4. Group the URLs by coverage state (for example "Submitted and indexed", "Crawled, currently not indexed", "Discovered, currently not indexed", "URL is unknown to Google", "Excluded by noindex tag", "Alternate page with proper canonical tag"). 5. Flag any URL where Google picked a different canonical from the one we declared, and any URL not crawled in the last 30 days. 6. Finish with a table (URL, coverage, last crawl, canonical match) and a fix list ordered by impact, one line per fix.

What the agent does

Tools it calls, in order: list_sitemaps, inspect_url. One data pull for list_sitemaps plus one per URL inspected, so 11 for a 10-URL sitemap per run (what counts as a data pull).

The audit has three stages, and only two of them touch the Google API.

  1. Read the sitemaps. list_sitemaps returns every sitemap submitted for the property, the date Google last downloaded it, and any errors or warnings. That is one data pull, however many sitemaps you have. It also tells you whether Google is reading your current sitemap at all, which matters more than people expect.
  2. Get the URL list. The agent fetches the sitemap file itself to list the URLs. This is a plain web request, not a Search Console call, so it does not count as a data pull. In clients without web access, paste the URL list into the chat instead.
  3. Inspect each URL. inspect_url is the URL Inspection API, the same check as the inspection bar in Search Console. It returns coverage state, last crawl, robots.txt result, fetch result and both canonicals. Google answers one URL per call, so every URL inspected is one data pull.

What it costs on each plan

Because inspection is per URL, the size of the audit sets the cost:

URLs inspectedData pullsFree plan (15 a day, 40 a month)
1011Fits in one day
1415Uses the whole day's allowance
3031Three days of batches, and most of the month
100101Does not fit in a month

On the free plan, batch it: inspect your 14 most important URLs today, the next 14 tomorrow, and keep the month's 40 in mind. The prompt above already stops at 14 and asks which pages to start with. If you audit sites with more than a few dozen pages, or want to repeat the audit after every release, Solo (€4.99 a month) removes the cap. Google applies its own URL Inspection quota per property on top of ours, so a very large site is a multi-day job on any plan.

Example output

A real run on mcpsearchconsole.com on 2 October 2026. The sitemap listed 10 URLs, so the run cost 11 data pulls.

Sitemap report: one sitemap, https://mcpsearchconsole.com/sitemap.xml, 0 errors, 0 warnings. Submitted 21 June 2026, last downloaded by Google on 2 July 2026, with 5 URLs counted at that download. The live file now lists 10.

URLCoverageLast crawlCanonical match
/Submitted and indexed26 Sep 2026Yes
/blogSubmitted and indexed25 Sep 2026Yes
/blog/autonomous-seo-agent-n8nSubmitted and indexed29 Sep 2026Yes
/blog/best-seo-mcp-serversSubmitted and indexed5 Sep 2026Yes
/blog/connect-google-search-console-to-chatgptSubmitted and indexed1 Oct 2026Yes
/blog/connect-google-search-console-to-claudeSubmitted and indexed7 Sep 2026Yes
/blog/connect-google-search-console-to-grok-botSubmitted and indexed16 Sep 2026Yes
/blog/content-calendar-without-cannibalizationSubmitted and indexed27 Sep 2026Yes
/blog/maintain-seo-openclaw-hermesSubmitted and indexed9 Sep 2026Yes
/blog/mcp-servers-for-seoSubmitted and indexed27 Sep 2026Yes

The agent's summary: all 10 sitemap URLs are indexed, robots.txt allows them, every fetch succeeded and Google agrees with every declared canonical. Two observations worth acting on:

  • Google has not downloaded the sitemap since 2 July, three months before the run, and counted only 5 URLs then. Pages added since were found through internal links, not the sitemap. Resubmitting it is a cheap fix.
  • The sitemap report's own "indexed" figure read 0, while inspection showed all pages indexed. Trust the per-URL inspection, not that counter.

We also inspected two URLs outside the sitemap that were not published yet on that date; both came back "URL is unknown to Google", which is the expected answer for a page that does not exist yet.

How to act on it

Each coverage state has its own fix. Work down this list in order: the earlier rows lose traffic, the later ones are housekeeping.

  • Excluded by noindex tag, or Blocked by robots.txt, on a page you want in search. Fix first. Remove the noindex meta tag or header, or the robots.txt rule, then request indexing in Search Console. These are almost always accidents from a staging setting or a template change.
  • Google-selected canonical differs from yours. Google thinks another URL is the main version. Check for duplicates (trailing slash, parameters, http and https, www and apex) and make internal links, the sitemap and the canonical tag all point at the same URL.
  • Crawled, currently not indexed. Google fetched the page and chose not to index it. This is usually about the page: thin, near-duplicate or weakly linked. Improve or merge the content and add internal links from pages that are indexed. Do not just resubmit.
  • Discovered, currently not indexed. Google knows the URL but has not crawled it yet. Add internal links from strong pages and make sure it is in a sitemap Google is actually downloading. Give it a few weeks before worrying.
  • URL is unknown to Google. Google has never seen it. Check the page returns 200, add it to the sitemap, link to it, then request indexing.
  • Last crawl older than 30 days on an important page. Not a fault by itself. Update the page, link to it from fresh content and check the sitemap's last download date.
  • Sitemap not downloaded for weeks, or with errors. Fix the errors, then resubmit. submit_sitemap can do this from the chat if you turn on the optional write permission; otherwise use the Sitemaps page in Search Console.
  • Submitted and indexed, canonical matches. Nothing to do. Re-run the audit after big releases.

After a fix, give Google time. Re-inspect the same URL a week or two later; that is one data pull per URL again, so re-check only the pages you changed.

Variations

Try this promptFor [your property], inspect only the URLs in my sitemap that have had zero clicks in the last 90 days (use search_analytics by page to find them) and tell me which of them are not indexed and why.
Try this promptFor [your property], inspect these URLs I just published and tell me which ones Google has not crawled yet, with the last crawl date for the rest: [paste URLs].
Try this promptFor [your property], take the URLs from last week's coverage audit that were "Crawled, currently not indexed", inspect them again and tell me which ones changed state.

Limits

  • It is a sample, not the full Page indexing report. The API inspects URLs you name. It cannot list every URL Google knows about, so pages missing from your sitemap and your list stay invisible to this audit. For the site-wide totals, open the Page indexing report in Search Console.
  • Inspection results reflect Google's last crawl, not your live page. If you fixed something yesterday, the inspection still shows the old state until Google recrawls. The API does not run a live test.
  • No reason is given for "Crawled, currently not indexed". Google reports the state, not the cause. Content quality is a judgment you and the agent make by reading the page.
  • Indexed does not mean ranking. A page can be indexed and get no impressions. Pair this with search_analytics by page to see which indexed pages earn traffic.
  • Quota. One pull per URL on our side, plus Google's own daily inspection limit per property.

Questions

Related use cases

Run this on your own site in about a minute.

Connect Search Console free