Skip to content

Index Verification

Google Index Checker for Every URL You Publish

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.

Join the waitlist Check indexability free

source: Search Console URL Inspection API, 2,000 inspections a day per property

URL Inspection / sc-domain:example.comLive
https://example.com/pricingIndexed
verdict
PASS
coverageState
Submitted and indexed
robotsTxtState
ALLOWED
indexingState
INDEXING_ALLOWED
pageFetchState
SUCCESSFUL
googleCanonical
https://example.com/pricing
crawledAs
MOBILE
lastCrawlTime
2026-10-06T14:12:09Z
Check historynewest first
Oct 06 14:20IndexedSubmitted and indexed
Sep 29 14:18IndexedSubmitted and indexed
Sep 15 20:02IndexedSubmitted and indexed
Sep 15 14:02ProcessingDiscovered, currently not indexed
Sep 15 13:17ProcessingURL is unknown to Google

Definition

What a Google Index Checker Does

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

Manual Spot Checks Compared With Continuous Verification

Most people check index status by hand, one page at a time.

SearchAnalysis.io Inspects Every URL for You

SearchAnalysis.io
  • Every submitted URL is inspected about 10 minutes after submission.
  • Unconfirmed URLs climb a ladder of rechecks over about 3 days.
  • Each inspection is saved in the URL's check history.
  • Indexed URLs are re-inspected every 7 days, and a drop shows amber Not indexed.
  • The Monitor filters every URL by live state and exports to CSV.

What Is Inside

Parts of the Verification Record

Six parts give every URL Google's latest answer and the history behind it.

URL Inspection Verdict Snapshot

Stores Google's verdict, coverageState, robotsTxtState, indexing state, canonical and last crawl time on each inspection.

Per inspection

URL Inspection Verdict Snapshot

Inspection Schedule Ladder

Spaces checks for unconfirmed URLs: about 10 minutes, +15 minutes, +1 hour, +6 hours, then every 24 hours.

Then a daily fallback

Inspection Schedule Ladder

Per-URL Check History

Lists every inspection as a dated row with its state, coverage state and source.

Inspection, daily check, monitor recheck

Per-URL Check History

Google Index Card

Counts verified indexed pages per site, with 24-hour and 7-day change and a 30-day trend.

One card per site

Google Index Card

Free Indexability Checker

Tests one public URL for load, redirects, robots.txt, directives, canonical and thin content.

No account needed

Free Indexability Checker

Process

How Each URL Climbs the Inspection Ladder

Connect a property once. Every URL you submit is then inspected on a fixed schedule.

  1. Connect Search Console

    Add a site, connect Google with OAuth and pick the matching domain (sc-domain:) or URL-prefix property.

  2. Submit Your URLs

    Send a single URL, a bulk paste, a CSV, a sitemap import, a REST API call or an MCP tool call.

  3. 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.

  4. 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.

  5. Watch Indexed URLs

    Once Indexed, the URL is inspected again every 7 days for as long as the site is connected.

Inspection schedule for one URLSearch Console URL Inspection
0 minSent to Indexing API and IndexNow
+10 minFirst URL Inspection
+15 minSecond inspection
+1 hThird inspection
+6 hFourth inspection
+24 hDaily, up to 6 checks
7 daysRecheck after Indexed
example.com/docs/webhookscheck history
Oct 06 14:20Not indexedCrawled, currently not indexedrecheck
Sep 29 14:18IndexedSubmitted and indexedrecheck
Sep 22 14:21IndexedSubmitted and indexedrecheck
Sep 15 20:02IndexedSubmitted and indexedinspection
Sep 15 14:02ProcessingDiscovered, currently not indexedinspection
Deindex eventIndexed on Sep 15. The recheck on Oct 06 found it not indexed.
First inspectionAbout 10 minutesAfter submission
Confirmation ladderAbout 3 daysUp to 6 checks, then a daily fallback
Indexed recheckEvery 7 daysFor as long as the site is connected

Advantages

Reasons to Trust Google's Own Answer

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.

Read Google's Answer Directly

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 overview

Keep a Dated Record per Page

Each 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 server

Spot Dropped Pages at the Next Recheck

Indexed 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 monitoring

Fix Blockers Before You Submit

The free indexability checker tests a public URL for a failing status, redirects, robots.txt rules, noindex, canonical and thin content.

Free indexability checker

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.

Google index · example.comupdated 3 hours ago
538pages verified indexed↑ 9 24h↓ 2 7d
example.com/docs/webhooksrechecked every 7 days
Aug 18
Aug 25
Sep 01
Sep 08
Sep 15
Sep 22
Sep 29
Oct 06
Not indexed · Oct 06 14:20 UTCCoverage state: Crawled, currently not indexed. Indexed since Sep 15.

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

Boundaries Google and the API Set

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

URL Inspection Fields the Index Checker Records

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)

The Verdict Field

STOREDINDEX STATUS

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.

ValueWhat SearchAnalysis.io does with it
PASSMarks the Search Console row Indexed (green) and starts the 7-day recheck.
PARTIALStores the value. The row turns green only if the coverage state says indexed.
FAILStores the value. A new URL stays Processing; a URL that was Indexed turns amber Not indexed.
NEUTRALStores 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.

Where the Verdict Shows

  • The URL detail page, under the latest verdict fields.
  • The full inspection history for the URL, one row per check.
  • The Monitor, which lists every URL with its per-channel statuses.
  • Per-URL, per-channel state from the SearchAnalysis.io REST API at GET /api/v1/submissions/{batchId}.

Until the first PASS arrives, the URL keeps climbing the inspection ladder, and after the ladder a daily fallback keeps checking.

The Coverage State Field

STOREDINDEX STATUS

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:

Reasons Worth Knowing by Name

Reason (Google's wording)What it points to
Crawled, currently not indexedGoogle's description: “The page was crawled by Google but not indexed.” Read the guide to Crawled, currently not indexed.
Discovered, currently not indexedGoogle'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 canonicalThe page declares no canonical. Compare it with the Google-selected canonical.
Page with redirectThe 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.

The robots.txt State Field

STOREDCRAWL ACCESS

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.

Test the Rule Before the Next Inspection

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.

The Indexing State Field

STOREDDIRECTIVES

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.

ValueWhere the block comes from
INDEXING_ALLOWEDNo blocking directive.
BLOCKED_BY_META_TAGA noindex in the meta robots tag.
BLOCKED_BY_HTTP_HEADERA noindex in the X-Robots-Tag header.
BLOCKED_BY_ROBOTS_TXTA 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.

Find and Remove the Directive

  1. Run the URL through the indexability checker. Its fourth check reads noindex or none in meta robots and in X-Robots-Tag.
  2. Remove the directive from the template, plugin setting or server config that adds it.
  3. Leave the URL in SearchAnalysis.io. The ladder, then the daily fallback, keep inspecting unconfirmed URLs.
  4. Read the indexing state on the next check history row. 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.

The Page Fetch State Field

RETURNED BY APIFETCH

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.

GroupValues the API returns
SuccessSUCCESSFUL
Content problemSOFT_404
BlockedBLOCKED_ROBOTS_TXT, ACCESS_DENIED, ACCESS_FORBIDDEN, BLOCKED_4XX
Missing or brokenNOT_FOUND, SERVER_ERROR, REDIRECT_ERROR
OtherINTERNAL_CRAWL_ERROR, INVALID_URL

Page Indexing Report Reasons on the Same Theme

  • Server error (5xx)
  • Redirect error
  • Not found (404)
  • Soft 404
  • Blocked due to unauthorized request (401)
  • Blocked due to access forbidden (403)
  • URL blocked due to other 4xx issue

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.

Google-Selected Canonical vs. User-Declared Canonical

STOREDCANONICAL

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.

FieldWhose choiceIn SearchAnalysis.io
googleCanonicalGoogle'sStored on every inspection
userCanonicalYours, from the pageReturned by the API

When the Two Differ

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”.

  • Compare the stored Google-selected canonical with the URL you submitted.
  • Run the fifth check of the indexability checker: a self-referencing canonical passes, one pointing elsewhere warns, and a missing one warns.
  • If Google's choice is the page you want in search, submit that URL and track it.
  • If your declared URL is the right one, fix the duplicate signals and watch the next inspection.

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.

The Last Crawl Time Field

STOREDCRAWL TIMING

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.

Inspection cadence10 minutes to 7 daysFrom the first check after submission to the recheck interval for indexed URLs

Reading the Two Dates Together

  • A crawl time later than your publish date: Google fetched the page after you published it.
  • A crawl time earlier than your last edit: Google has not fetched the new version yet.
  • A coverage state of “Discovered, currently not indexed”: Google describes it as “The page was found by Google, but not crawled yet.”
  • A crawl time that keeps moving while the state stays NOT_INDEXED: Google keeps fetching the page and keeps leaving it out.

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.

The Crawled As Field

RETURNED BY APICRAWLER

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 Fields and Returned Fields

Stored on each inspectionReturned by the API
verdictpageFetchState
coverageStateuserCanonical
robotsTxtStatecrawledAs
indexingStatesitemap[]
googleCanonicalreferringUrls[]
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

Ways to Check if a Page Is Indexed

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)

The URL Inspection Tool in Search Console

ANSWERS INDEX STATUSMANUAL

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.

Where It Fits

  • A single page you just published and want to confirm.
  • A page that dropped out and needs a closer look.
  • A spot check on a canonical or a robots.txt result.

Where It Slows You Down

  • Every URL is a separate paste and a separate wait.
  • The Request Indexing button on the same screen works one URL at a time.
  • Keeping a record of past answers is up to you, so a second look next week starts from zero.
  • A team managing many sites repeats the steps for every property.

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

ANSWERS INDEX STATUSSITE REPORT

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:

  • Server error (5xx); Redirect error; Not found (404); Soft 404
  • Blocked due to unauthorized request (401); Blocked due to access forbidden (403); URL blocked due to other 4xx issue
  • URL blocked by robots.txt; URL marked 'noindex'
  • Crawled, currently not indexed; Discovered, currently not indexed
  • Alternate page with proper canonical tag; Duplicate without user-selected canonical; Duplicate, Google chose different canonical than user
  • Page with redirect
  • Warnings: Indexed, though blocked by robots.txt; Page indexed without content

How It Compares With a Per-URL Check

Page indexing reportSearchAnalysis.io index checker
Groups the whole property by reasonFollows each URL you submitted
Shows the state Google reportedSaves every inspection as a dated row
Read inside Search ConsoleRead 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.

The URL Inspection API Through SearchAnalysis.io

ANSWERS INDEX STATUSAUTOMATED

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.

The Schedule

WhenWhat runs
About 10 minutes after submissionFirst inspection
+15 minutes, +1 hour, +6 hoursLadder rechecks if not indexed yet
Every 24 hoursLadder rechecks, up to 6 checks over about 3 days
Daily, after the ladderFallback check for unconfirmed URLs
Every 7 daysRecheck of every Indexed URL
30 minutesRetry 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).

Reading the Results

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/mcp

The 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 Indexing API getMetadata Call

NO INDEX STATUSAPI

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 limitDefault quota
Publish requests (URL_UPDATED, URL_DELETED)200 a day per project
getMetadata requests180 a minute
All endpoints380 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.

How SearchAnalysis.io Labels Indexing API Results

  • An accepted notification (HTTP 2xx) shows as Processing, “ping accepted”.
  • It never shows as Indexed, because the notification does not confirm indexing.
  • Up to 100 URLs go in one batch request, inside the 200-a-day project quota.
  • URLs over the day's quota wait for the next UTC window and keep their place in line.

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

Questions About Google Index Status

Checking Index Status

How to check if a page is indexed?

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.

Is my site indexed?

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.

Has Google indexed my site?

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.

Waitlist

Get Your Invite Before Public Launch

SearchAnalysis.io is invite-only today. Join the waitlist with your email and an invite comes to you from the list.

Invite-only. One email when your invite is ready.

Picture submitting your next 200 pages and reading Google's verdict on each one in the Monitor, with no pasting.

Waitlist members getwritten commitments

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.

Included in SearchAnalysis.ioshipped

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.