Your Sitemap Says 0 Indexed. That Number Is Deprecated

The indexed count in Google's Sitemaps API returns 0 no matter what. We proved it on a site with 23,678 clicks. Here is what to read instead.

The Sitemaps API indexed field reporting 0 on both a site with 23,678 clicks and a site with none
Contents
  1. The proof
  2. What to read instead
  3. Why lastCrawlTime is the field to look at
  4. A three-minute triage
  5. The short version

If you query Google’s Search Console API for your sitemaps, you get a block that looks authoritative:

"contents": [{ "type": "web", "submitted": "156", "indexed": "0" }]

Submitted 156, indexed 0. It reads like a verdict. We treated it as one for months, and built an entire diagnosis on top of it.

It is deprecated. It returns 0 regardless of reality.

The proof

We run several sites. One of them is healthy by any measure: 1.26 million impressions and 23,678 clicks. We queried its sitemaps through the same API, expecting a number in the hundreds.

PropertySitemapsAPI indexedActual impressionsActual clicks
Healthy site301,260,00023,678
Struggling site202,8680

Three sitemaps on a site with 23,678 clicks, all reporting zero indexed pages. The field does not distinguish a thriving site from a dead one, because it does not report anything.

The current Search Console web interface reflects this — the Sitemaps report no longer shows an indexed column at all. Only the API still returns the field, and only as a legacy husk. If you built monitoring on it, that monitoring has been reporting a constant since you wrote it.

Google’s own documentation is careful here too, for a reason worth internalising: “There is no guarantee that a page URL discovered in a sitemap has been or will be crawled or indexed.” A sitemap is a suggestion, not a queue.

What to read instead

The Page Indexing report, in the Search Console interface. It gives a census of your URLs by state, and the states are the actual information:

StateWhat it meansWhat it points at
Discovered – currently not indexedGoogle knows the URL and has not fetched ita crawl problem: budget, demand, or server
Crawled – currently not indexedGoogle fetched it and chose not to indexa judgement about the content
URL is unknown to Googlenever seen at alla discovery problem: no links, no crawl
Submitted and indexedin the index—

That difference is the whole diagnosis. “Discovered” in bulk and “Crawled” in bulk are opposite problems with opposite fixes, and the sitemap number cannot tell them apart because it says zero for both.

URL Inspection, for individual URLs, via the interface or the API. The fields that matter:

  • coverageState — the state from the table above
  • lastCrawlTime — the most underused field in the tool
  • robotsTxtState and indexingState — rules out the boring causes
  • pageFetchState — what the crawler actually got
  • googleCanonical versus userCanonical — if they disagree, your canonical or redirect is not consolidating

Why lastCrawlTime is the field to look at

On a site of ours, four articles show “Crawled – currently not indexed”. The instinct is to read that as Google having assessed the content and rejected it, so you go rewrite the content.

Their last crawl dates were 17 March, 21 March, 24 March and 4 April. All four were still ranking on page one of Google weeks after those dates — and a page cannot produce impressions unless it is indexed. So the status is not the verdict of that crawl. It is a later state, reached with no new visit, and lastCrawlTime has not moved in five and a half months.

That reframes what the status means. “Crawled – not indexed” with a stale crawl date is a frozen verdict, not an assessment of your current content. Rewriting the page changes nothing until something triggers a recrawl, because no one is reading the rewrite.

If you are about to act on a “not indexed” status, check the crawl date first. It tells you whether you are looking at a judgement on today’s page or a fossil.

A three-minute triage

  1. Open Page Indexing and read the census by state. Ignore the sitemap’s indexed count entirely.
  2. Pick your five most important URLs and run URL Inspection on each. Write down coverageState and lastCrawlTime.
  3. If the crawl dates are months old: your problem is crawl, and content edits are not being seen.
  4. If the crawl dates are recent and the state is “Crawled – not indexed”: Google is reading you and declining. That is the content conversation.
  5. If most URLs are “unknown to Google”: nothing is discovering them. Check internal links from pages that are crawled, and remember a sitemap alone is a weak discovery path.

The short version

The sitemap indexed field is a deprecated constant. It said zero on a site earning 23,678 clicks. Read the Page Indexing states and lastCrawlTime instead — those two together tell you whether you have a crawling problem, a content problem, or a stale verdict nobody has revisited.