URL Inspection Verdict Snapshot
Stores Google's verdict, coverageState, robotsTxtState, indexing state, canonical and last crawl time on each inspection.
Index Verification
You publish pages and never find out which ones Google kept. The Google index checker in SearchAnalysis.io reads Google's own URL Inspection verdict for every URL you submit. This index checker saves each answer in a dated check history. Once a page passes, the checker for Google index status re-inspects it every 7 days.
source: Search Console URL Inspection API, 2,000 inspections a day per property
Definition
A Google index checker is a tool that asks Google whether a specific URL is in its index and records the answer. The SearchAnalysis.io index checker gets that answer from the Search Console URL Inspection API on your verified property, with Google's verdict, coverageState, robotsTxtState, indexing state, Google-selected canonical and last crawl time. A URL turns green as Indexed only when the verdict is PASS or the coverage state says indexed.
Google launched the URL Inspection API on January 31, 2022. Google allows 2,000 inspection queries a day and 600 a minute for each site, and 10,000,000 a day for each Cloud project.
Notifications to the Google Indexing API and to Bing through IndexNow show as Processing when accepted, because an accepted notification does not confirm indexing. Only the Search Console row turns green.
2,000inspections a day
URL Inspection quota per propertyThe Google index checker runs up to 2,000 URL Inspection calls a day for each property, the daily limit Google sets per site.
7days
Recheck interval after IndexedThe Google index checker re-inspects every indexed URL every 7 days, so a page that drops out shows amber Not indexed at its next recheck.
10minutes
First inspection after submissionThe Google index checker runs the first inspection about 10 minutes after you submit a URL and then climbs a ladder that spans about 3 days.
Old Way vs. New Way
Most people check index status by hand, one page at a time.
site:yourdomain.com into Google and scan the listings.verdict, no coverage state and no crawl date come back.What Is Inside
Six parts give every URL Google's latest answer and the history behind it.
Stores Google's verdict, coverageState, robotsTxtState, indexing state, canonical and last crawl time on each inspection.
Spaces checks for unconfirmed URLs: about 10 minutes, +15 minutes, +1 hour, +6 hours, then every 24 hours.
Inspection Schedule LadderLists every inspection as a dated row with its state, coverage state and source.
Per-URL Check HistoryCounts verified indexed pages per site, with 24-hour and 7-day change and a 30-day trend.
Google Index CardReturns a URL's index status to an AI agent through the remote MCP server.
Check_url_index_status MCP ToolTests one public URL for load, redirects, robots.txt, directives, canonical and thin content.
Free Indexability CheckerProcess
Connect a property once. Every URL you submit is then inspected on a fixed schedule.
Connect Search Console
Add a site, connect Google with OAuth and pick the matching domain (sc-domain:) or URL-prefix property.
Submit Your URLs
Send a single URL, a bulk paste, a CSV, a sitemap import, a REST API call or an MCP tool call.
Run the First Inspection
About 10 minutes after submission, SearchAnalysis.io inspects the URL. A PASS verdict, or a coverage state that says indexed, turns the Search Console row green.
Recheck Unconfirmed URLs
If the URL is not indexed yet, checks run at +15 minutes, +1 hour, +6 hours, then every 24 hours, up to 6 checks. A daily fallback follows.
Watch Indexed URLs
Once Indexed, the URL is inspected again every 7 days for as long as the site is connected.
Advantages
Google index checker advantages are answers that come from Google itself, a dated record for every URL, and early notice when an indexed page drops out.
Every status comes from the URL Inspection API on your verified property. Green means verified and nothing else, so an accepted notification is never counted as indexed.
SearchAnalysis.io product overviewEach inspection is stored with its time, state, coverage state and source, so you can point to the day Google first confirmed a page.
SearchAnalysis.io REST API and MCP serverIndexed URLs are re-inspected every 7 days. When a recheck finds a page not indexed, the page turns amber and the history row shows the date of that check.
Deindex monitoringThe free indexability checker tests a public URL for a failing status, redirects, robots.txt rules, noindex, canonical and thin content.
URLs you send through Google Indexing API submission and IndexNow for Bing show Processing until URL Inspection confirms them, and the sitemap monitoring inventory moves each page from Discovered to Submitted to Indexed.
Picture opening the Monitor on Monday morning, filtering by live state, and seeing which pages Google confirmed over the weekend before you export the list for your client.
Limits
An index checker reports what Google decided. These are the limits we publish.
Google Decides
Google decides what it crawls and indexes. Nobody can guarantee indexing, and SearchAnalysis.io makes no such promise.
2,000 Inspections a Day per Property
The URL Inspection API allows 2,000 inspections a day and 600 a minute for each property. SearchAnalysis.io stays inside that quota.
Verified Properties Only
URL Inspection answers for a Search Console property you have verified and connected. For a public page you do not own, the free indexability checker tests crawl and index signals and states plainly that it cannot tell whether the page is in Google.
A Snapshot at the Time of the Check
Each verdict reflects the moment of the inspection. A page that drops out between 7-day rechecks shows Not indexed at the next one.
Field Reference
Each URL Inspection call returns a set of fields. SearchAnalysis.io stores six of them with every inspection: verdict, coverageState, robotsTxtState, indexing state, the Google-selected canonical and the last crawl time. The API returns the rest, and this reference covers each one.
(Select a field to read more)
verdict is the first field the index checker reads on every inspection. Google returns one of four values, and SearchAnalysis.io stores the value with the check, in the same row as the time and the source of that inspection.
| Value | What SearchAnalysis.io does with it |
|---|---|
PASS | Marks the Search Console row Indexed (green) and starts the 7-day recheck. |
PARTIAL | Stores the value. The row turns green only if the coverage state says indexed. |
FAIL | Stores the value. A new URL stays Processing; a URL that was Indexed turns amber Not indexed. |
NEUTRAL | Stores the value. A new URL stays Processing; a URL that was Indexed turns amber Not indexed. |
PASS is one of two ways a URL becomes Indexed. The other is a coverageState that says the page is indexed. Either way, green means verified and nothing else. A notification Google accepted through the Indexing API never turns a row green on its own.
Until the first PASS arrives, the URL keeps climbing the inspection ladder, and after the ladder a daily fallback keeps checking.
coverageState is the coverage state Google reports for the inspected URL. The index checker stores it on every inspection and shows it in each check history row next to the state (INDEXED, NOT_INDEXED or ERROR). A coverage state that says indexed confirms the URL, the same as a PASS verdict.
For pages that are not indexed, the Page indexing report in Search Console names a reason. These are the reasons you meet most often when you read a coverage state:
| Reason (Google's wording) | What it points to |
|---|---|
| Crawled, currently not indexed | Google's description: “The page was crawled by Google but not indexed.” Read the guide to Crawled, currently not indexed. |
| Discovered, currently not indexed | Google's description: “The page was found by Google, but not crawled yet.” |
| URL marked 'noindex' | An indexing directive on the page, in meta robots or the X-Robots-Tag header. |
| Duplicate without user-selected canonical | The page declares no canonical. Compare it with the Google-selected canonical. |
| Page with redirect | The URL redirects. Google indexes the destination, so submit the destination. |
Every check history row keeps the coverage state from the day of that check. Read the rows in order and you see how a page moved from one state to the next across inspections, and on which date the change appeared.
robotsTxtState tells you whether robots.txt lets Google crawl the URL. It has two values, and the index checker stores whichever one comes back on each inspection. Because the state is stored again on every check, the check history shows the first inspection where a rule started blocking the URL, and the first one after the block was lifted.
ALLOWED: no robots.txt rule blocks the URL.DISALLOWED: a robots.txt rule blocks the URL.A DISALLOWED state lines up with the Page indexing report reason “URL blocked by robots.txt”. Google lists a related warning too, “Indexed, though blocked by robots.txt”, so a blocked URL may still appear in the index while Google cannot crawl it.
The free indexability checker reads robots.txt with these rules: the Googlebot group wins over *, the longest matching rule decides, and Allow wins a tie. Run it after you edit robots.txt, then let the next ladder check or 7-day recheck record the new state in the check history.
User-agent: Googlebot
Disallow: /drafts/
Allow: /drafts/published/In this example, a URL under /drafts/published/ is allowed for Googlebot, because the longer Allow rule decides. Any other URL under /drafts/ comes back DISALLOWED. indexingState has its own robots.txt value, BLOCKED_BY_ROBOTS_TXT, so read the two stored fields together on the URL detail page.
indexingState reports whether a directive keeps the page out of the index. SearchAnalysis.io stores it as the indexing state on each inspection, next to the verdict and the coverage state. Google returns one of four values.
| Value | Where the block comes from |
|---|---|
INDEXING_ALLOWED | No blocking directive. |
BLOCKED_BY_META_TAG | A noindex in the meta robots tag. |
BLOCKED_BY_HTTP_HEADER | A noindex in the X-Robots-Tag header. |
BLOCKED_BY_ROBOTS_TXT | A robots.txt rule. |
A blocked meta tag or header lines up with the Page indexing report reason “URL marked 'noindex'”. The value names the place the directive lives, which tells your developer whether to look in the page template or in the server configuration.
noindex or none in meta robots and in X-Robots-Tag.INDEXING_ALLOWED means the directive is gone.A cleared directive does not force Google to index the page. It removes one reason Google gave for leaving it out, and the next inspections show whether Google indexes the page after its next crawl.
pageFetchState is a field the URL Inspection API returns about Google's attempt to fetch the page. It sits outside the six fields SearchAnalysis.io stores, so treat it as part of the API's full answer. The index checker's stored fields carry the outcome; this field names the fetch result behind it.
| Group | Values the API returns |
|---|---|
| Success | SUCCESSFUL |
| Content problem | SOFT_404 |
| Blocked | BLOCKED_ROBOTS_TXT, ACCESS_DENIED, ACCESS_FORBIDDEN, BLOCKED_4XX |
| Missing or broken | NOT_FOUND, SERVER_ERROR, REDIRECT_ERROR |
| Other | INTERNAL_CRAWL_ERROR, INVALID_URL |
The first two checks of the free indexability checker cover the same ground from outside Google. The page must return a 2xx status, or the check fails. Redirects are followed up to 5 hops, and because Google indexes the destination, you submit the destination URL.
The checker fetches as SearchAnalysisBot/1.0 with a 10-second timeout and a 2 MB page cap, so a slow or oversized page shows up there before you spend an inspection on it. It rejects localhost, private network addresses and URLs with credentials, so test the public address of the page that Google crawls.
googleCanonical is, in Google's words, “The URL of the page that Google selected as canonical”. The index checker stores it as the Google-selected canonical with each inspection. userCanonical is a field the API returns for the canonical your page declares.
| Field | Whose choice | In SearchAnalysis.io |
|---|---|---|
googleCanonical | Google's | Stored on every inspection |
userCanonical | Yours, from the page | Returned by the API |
If Google picks a different URL from the one you declared, the Page indexing report lists the page under “Duplicate, Google chose different canonical than user”. Two related reasons sit next to it: “Alternate page with proper canonical tag” and “Duplicate without user-selected canonical”.
The URL detail page shows the latest verdict fields, so the Google-selected canonical sits on the same screen as the verdict and coverage state. The check history keeps earlier snapshots for comparison, so you can see the exact inspection where Google's choice changed.
lastCrawlTime is the time Google last crawled the URL. The index checker stores it with every inspection, next to the time of the inspection itself, so each check history row carries two dates: when Google crawled, and when SearchAnalysis.io asked.
The sitemap monitoring inventory keeps first seen and last seen dates for each URL in your sitemaps. Set those beside the crawl time and you can tell how long a page sat in the sitemap before Google fetched it.
Stored crawl times build up across the ladder: up to 6 checks over about 3 days, then a daily check until Google confirms the page, then one check every 7 days for as long as the site is connected. Each one adds a fresh crawl time.
crawledAs is a field the URL Inspection API returns for the crawler type Google used. It has two values, DESKTOP and MOBILE. It sits outside the six fields the index checker stores. Two list fields come back with each inspection as well, sitemap[] and referringUrls[], and both are returned by the API without being stored.
crawledAs: DESKTOP | MOBILE
sitemap[]
referringUrls[]| Stored on each inspection | Returned by the API |
|---|---|
verdict | pageFetchState |
coverageState | userCanonical |
robotsTxtState | crawledAs |
indexingState | sitemap[] |
googleCanonical | referringUrls[] |
lastCrawlTime |
The stored column is what you see on the URL detail page and in each check history row. Developers read per-URL, per-channel status through the SearchAnalysis.io REST API and MCP server: GET /api/v1/submissions/{batchId} returns a batch with the state of every URL, and the check_url_index_status MCP tool returns a single URL's index status to an AI agent.
The public OpenAPI 3.1 document at /openapi.json describes each endpoint, and /llms.txt lists the machine endpoints for agents that need to find them.
The free indexability checker fetches as SearchAnalysisBot/1.0, one crawler identity, so it does not reproduce Google's mobile or desktop crawl. Use it for the signals both crawls share: the status code, redirects, robots.txt, indexing directives, the canonical and the amount of visible text on the page.
Methods
There are five common ways to check if a page is indexed. Three of them return Google's index status for a page you own, and they differ in how much work each check takes and whether the answer is saved.
(Select a method to read more)
A site: search is the quickest index check most people know. You type the operator and a domain or path into Google and read the listings that come back. It needs no account and no verified property, and it works on any domain.
site:example.com
site:example.com/blog/new-post| What you get | What you do not get |
|---|---|
| A list of listings Google shows for the query | A verdict or a coverage state |
| A rough sense of which pages appear | The reason a missing page is missing |
| An answer for sites you do not own | A crawl date, a canonical or a saved history |
Use it as a first glance. When a page you expect is missing, the next step is an inspection on a property you own, or a pass through the free indexability checker to look for a noindex, a robots.txt block or a broken status code.
SearchAnalysis.io replaces the repeat step. The Monitor lists every submitted URL with its Search Console status, so you stop re-running the same searches each week to see which pages are still there. Each status comes from URL Inspection on your own property, with a saved history behind it.
The URL Inspection tool in Search Console answers the index question for one URL on a property you have verified. You paste a URL, Google runs an inspection, and you read the result on screen. It is Google's own answer, which is why it beats a site: search for pages you own.
Google opened the same kind of inspection to software when it launched the URL Inspection API on January 31, 2022. That API is what SearchAnalysis.io calls for every URL you submit, within Google's limit of 2,000 inspections a day and 600 a minute per property.
Keep the tool for one-off questions. For a batch of new pages, or a site with thousands of indexed pages to watch, let the index checker run the inspections on its schedule and read the results in the Monitor or through the SearchAnalysis.io API.
The Page indexing report in Search Console shows which pages of a site Google indexed and groups the rest under a reason. It is where you go to see which pages are not indexed by Google across a whole property. These are the reasons Google lists, in Google's wording:
| Page indexing report | SearchAnalysis.io index checker |
|---|---|
| Groups the whole property by reason | Follows each URL you submitted |
| Shows the state Google reported | Saves every inspection as a dated row |
| Read inside Search Console | Read in the Monitor, the API or the MCP server |
Use both. The report tells you how many pages share a problem. The index checker tells you when a specific URL changed state. For a reason many site owners meet on new pages, read the guide to Crawled, currently not indexed.
SearchAnalysis.io calls the URL Inspection API for every URL you submit, on your connected Search Console property. This is the index checker this page describes, running without a paste per URL.
| When | What runs |
|---|---|
| About 10 minutes after submission | First inspection |
| +15 minutes, +1 hour, +6 hours | Ladder rechecks if not indexed yet |
| Every 24 hours | Ladder rechecks, up to 6 checks over about 3 days |
| Daily, after the ladder | Fallback check for unconfirmed URLs |
| Every 7 days | Recheck of every Indexed URL |
| 30 minutes | Retry after a transient error (429, 5xx, network) |
Repeated failures back off exponentially from 6 hours, capped at 7 days. Every inspection lands in the URL's check history with its time, state, coverage state and source (inspection, daily check or monitor recheck).
The Monitor lists every URL with per-channel statuses, filters (All, Indexed, Pending, Failed; by site; by live state), live polling, CSV export and bulk retry. The Google index card per site counts verified indexed pages, with coverage printed with its denominator. Agents use the MCP server:
claude mcp add --transport http searchanalysis https://searchanalysis.io/mcpThe check_url_index_status tool answers for one URL, and the SearchAnalysis.io developer surface documents the rest. The REST API returns the same per-URL, per-channel state at GET /api/v1/submissions/{batchId}, and GET /api/v1/quota reports the engine quota you have left.
The Google Indexing API has a getMetadata call, and at first glance it looks like an index check. It reports the notifications you sent for a URL (URL_UPDATED and URL_DELETED). It does not report whether the URL is in Google's index.
| Indexing API limit | Default quota |
|---|---|
| Publish requests (URL_UPDATED, URL_DELETED) | 200 a day per project |
| getMetadata requests | 180 a minute |
| All endpoints | 380 requests a minute |
Google documents a narrow scope for the API: “The Indexing API can only be used to crawl pages with either JobPosting or BroadcastEvent embedded in a VideoObject.” SearchAnalysis.io reads each page's HTML for that structured data and shows an eligibility badge: Eligible, Best-effort or Unknown.
Index status comes from the separate Search Console row, which only URL Inspection can turn green. Read how the notification channel works on the Google Indexing API submission page. For pages without that structured data, submission proceeds best-effort, and the index checker still reports what Google decided.
FAQ
You check if a page is indexed by asking Google through URL Inspection on a verified Search Console property. The URL Inspection tool does it one URL at a time, and SearchAnalysis.io runs the URL Inspection API for every URL you submit.
Your site is indexed page by page, so the answer comes per URL. SearchAnalysis.io shows a Google index card per site with verified indexed pages and coverage printed with its denominator.
Google has indexed a page on your site when URL Inspection returns a PASS verdict or a coverage state that says indexed. SearchAnalysis.io turns that page green only after one of those two answers.
You see which pages are not indexed by Google in the Page indexing report, grouped by reason. In SearchAnalysis.io, the Monitor filters submitted URLs by live state and exports the list to CSV.
You tell if a page is indexed after submission by waiting for URL Inspection to confirm it. SearchAnalysis.io runs the first inspection about 10 minutes after submission and shows Processing until Google confirms the page.
An indexed page that drops out shows amber Not indexed at its next 7-day recheck. The check history records the date of the check that found the drop.
The URL Inspection API is the Search Console API that returns Google's inspection result for a URL on a verified property. Google launched it on January 31, 2022.
The URL Inspection API allows 2,000 queries a day and 600 a minute for each site. Each Cloud project gets 10,000,000 a day and 15,000 a minute.
The Indexing API does not tell you if a page is indexed. Its getMetadata call reports the notifications you sent. SearchAnalysis.io shows an accepted Indexing API notification as Processing and never as Indexed.
Waitlist
SearchAnalysis.io is invite-only today. Join the waitlist with your email and an invite comes to you from the list.
Picture submitting your next 200 pages and reading Google's verdict on each one in the Monitor, with no pasting.
An Invite Before Public Launch
Invites go out from the waitlist before SearchAnalysis.io opens to the public.
Launch Pricing Locked
Your launch price stays locked for as long as you stay subscribed. The price is announced at launch.
An Extended Free Trial
Waitlist members get a longer free trial. Its length is announced at launch.
URL Inspection on Every Submitted URL
A first check about 10 minutes after submission, then a ladder and a daily fallback until Google confirms the page.
7-Day Recheck With Check History
Every Indexed URL is inspected again every 7 days and saved as a dated row.
Monitor, Index Card and Developer Access
Live state filters, CSV export, a Google index card per site, a REST API and a remote MCP server.