Check in bulk which of your pages Google has actually indexed

Paste a batch of URLs or pull them from your sitemaps, then see coverage, canonicals and crawl dates for every page in one sortable table.

App
Google Search ConsoleLinearMarketingEngineeringResearch & Monitoring
PromptCreate

Build me an indexing triage console for Google Search Console. Search Console only lets me inspect one URL at a time, so I want a screen where I can throw a whole batch of URLs at it and see, in one table, which pages Google has actually indexed and which it has quietly skipped.

At the top of every view there is a property picker. A handler calls Google Search Console List Sites to populate it, and the selected siteUrl is passed verbatim to every other handler, because an inexact property string silently returns empty data instead of erroring. Remember the last selected property per viewer so the app opens where they left off.

The main surface is the batch inspection view. It has two ways to load URLs: paste them into a textarea (one per line, deduplicated and trimmed), or load them from the property's submitted sitemaps. Once a batch is staged, show the count, an estimate of how long the run will take, and a Run inspection button. The run itself loops Google Search Console Inspect URL across the batch in a handler, writing each result into app storage as it lands, and the UI shows a live progress bar with the number completed, the number remaining and the current URL.

Throttling matters here. Google caps URL inspection at 2,000 checks per day and 600 per minute per property, so the run must pace itself under both limits, track how much of the daily allowance this property has already consumed, and display that remaining budget before the user commits to a batch. If a batch is larger than the remaining daily allowance, warn before starting and offer to inspect as many as will fit. Treat a 429 response as quota exhaustion: stop the run cleanly, keep every result already collected, and show a plain message saying the daily quota is used up and the rest of the batch can resume tomorrow, with a Resume button that picks up exactly where it stopped.

Results land in a sortable, filterable table with one row per URL. Columns: the URL, coverage state, indexing verdict, Google-selected canonical, my declared canonical, last crawl date, mobile usability status and rich results status. Every column sorts, and there is a free-text filter on the URL. Above the table put one-click filter chips for the three views I care about most: not indexed, crawled but not indexed, and canonical mismatch (Google-selected canonical differs from the declared one). Each chip shows its own count. Colour-code the verdict column so a bad row is obvious at a glance, and let me select rows with checkboxes.

A second panel lists the property's sitemaps. Populate it with Google Search Console List Sitemaps, then Get Sitemap for per-sitemap detail, showing for each one: the sitemap path, its type, last submitted and last downloaded dates, submitted versus indexed page counts, and its error and warning totals. Flag any sitemap with errors, and any where indexed is far below submitted. Note that the errors, warnings, contents.submitted and contents.indexed fields sometimes come back as strings, so cast them to numbers before comparing or summing, and sitemap feedpath values must be URL-encoded when used in a request path.

Each sitemap row gets a Resubmit sitemap button backed by Google Search Console Submit Sitemap. That call returns an empty body on success, so treat the HTTP status as the signal, then show a confirmation toast and refresh the row. Because Google's sitemap counts, especially the indexed count, can lag the live state by several days, every number in this panel and every inspection result in the table must be date-stamped with when it was fetched, and the panel should carry a short line explaining that these counts are Google's last known figures rather than a live reading.

Every table row gets a File fix ticket button that creates a Linear issue through Create Issue, prefilled with the URL in the title and a description carrying the coverage state, indexing verdict, Google-selected canonical, declared canonical, last crawl date and the date the inspection was run. Let me pick the Linear team once in settings and reuse it. Once a ticket exists for a row, show its identifier inline and link out to it instead of offering to create a duplicate.

The app also has a Diagnose these URLs button that kicks off a background agent over the currently flagged or selected rows. The agent reads the inspection results, groups the URLs by likely root cause (canonical conflicts, soft-404 patterns, orphan pages that appear in no submitted sitemap, thin or duplicate clusters), and can call Google Search Console Inspect URL again on a few representative URLs and List Sitemaps to confirm whether a page is actually orphaned. It then writes a prioritized remediation plan back into the app, one section per root cause, ordered by how many URLs each cause explains, with the concrete fix and the affected URLs listed under it. Finally it files one Linear issue per root cause using Create Issue, with the grouped URL list and the recommended fix in the description, and adds a comment through Add Comment to Issue linking back to the plan in the app. One grouped issue per cause, never one issue per URL.

The agent's output lands in a Diagnosis panel inside the app, showing the run status while it works and then the plan itself, with each root cause section linking to the Linear issue it filed and to the matching filtered view of the table. Keep past diagnosis runs so I can compare this week against last week.

Persist inspection results per property so the table survives a reload and I can see how a URL's verdict has changed since the previous run, highlighting rows whose verdict moved since last time. Handle the obvious failure modes plainly: no verified properties on the account, a property the account cannot access, an empty sitemap list, and a run interrupted partway through.

What does this prompt do?

  • Checks hundreds of your pages against Google in a single run instead of pasting them into Search Console one URL at a time, with a live progress bar while it works.
  • Lands every result in a sortable, filterable table: is the page indexed, which version Google picked as the canonical, when it was last crawled, and how it scored on mobile usability and rich results. One-click filters pull up not indexed, crawled but not indexed, and canonical mismatch.
  • Shows a sitemap panel with submitted versus indexed counts for each sitemap plus its error and warning totals, and a button to resubmit any sitemap that has gone stale.
  • Includes a Diagnose button that hands the problem rows to a background agent, which groups them by likely root cause, writes a prioritized fix plan back into the app, and files one grouped ticket per cause in Linear instead of one ticket per URL.

What do I need to use this?

  • A Google account with owner or full access to the site you want to check in Search Console
  • At least one sitemap submitted in Search Console, or your own list of URLs to paste in
  • A Linear workspace if you want to file fix tickets, plus the team those tickets should land on

How can I customize it?

  • Set the batch size and pacing so a large site gets worked through over several days within your daily checking allowance
  • Change which columns the table shows and which quick filters sit above it, for example adding a mobile-only or rich-results-only view
  • Point the ticket button at Jira or Asana instead of Linear, and preset the team, project or label every ticket should land on

FAQs

Why can't I just do this in Search Console?
Search Console's inspection tool only accepts one URL at a time, so checking a few hundred pages means a few hundred manual lookups. This app runs the same official checks across a whole batch and puts the answers in one table you can sort and filter.
How many URLs can I check per day?
Google allows 2,000 URL checks per day and 600 per minute for each site. The app paces itself to stay under both, shows you how much of the daily allowance is left, and tells you clearly when you have hit the cap so you can pick the rest up tomorrow.
Why don't the sitemap indexed counts match what I see elsewhere?
Google's sitemap figures, especially the indexed count, can lag the live state by several days. The app date-stamps everything it shows so you always know how fresh the numbers are rather than treating them as real time.
Does this ask Google to index my pages?
No. The checks are read-only and only report what Google already knows about each page. The one action that touches Google is the resubmit sitemap button, which nudges Google to re-read a sitemap you have already submitted.
What does the Diagnose button actually do?
It starts a background agent that reads the flagged rows, sorts them into likely root causes such as canonical conflicts, soft-404 patterns, orphan pages missing from your sitemaps and thin or duplicate clusters, writes a prioritized remediation plan into the app, and files one grouped ticket per cause so your team gets a handful of real work items instead of hundreds of near-identical tickets.
Do I need to be a developer to use this?
No. You connect your Google account and your issue tracker, pick a site from a dropdown, and paste or load the URLs you want checked. Everything after that is buttons and filters.

Related templates

Find the customers stuck contacting support again and again

A board that ranks the people who opened three or more separate support conversations this month, reads their threads, and files the real fix.

Kustomer
Linear
General Input Database
App
Turn shipped Linear work into Intercom product announcements

A board your product marketer opens on every ship day to turn finished engineering tickets into announcements customers actually read in your Messenger.

Intercom
Linear
Slack Bot
+1
App
Voice agent QA review board for your Hume EVI calls

Open one board each morning, see which voice calls went badly, replay the exact moment the caller got frustrated, and file the fix.

Hume
Linear
Slack Bot
App
Close the loop between Front tickets and Linear bug fixes

See every customer waiting on a bug fix, file the ticket without creating a duplicate, and tell them the moment engineering ships it.

Front
Linear
App
Open a Heroku release war room the moment production looks wrong

See every recent deploy across all your Heroku apps in one timeline, then roll back, restart, or file an incident without leaving the screen.

Heroku
GitHub
Linear
App
Find the themes Help Scout tags miss and file them in Linear

Pick a date range, see which support topics are climbing fastest, read the real customer threads behind them, and file the worst ones as tickets.

Help Scout
Linear
App

Stop inspecting URLs one at a time.

Check your whole site's indexing status in one pass, see exactly which pages Google skipped and why, and send the real problems straight to your team.