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.
Contents
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.
| Property | Sitemaps | API indexed | Actual impressions | Actual clicks |
|---|---|---|---|---|
| Healthy site | 3 | 0 | 1,260,000 | 23,678 |
| Struggling site | 2 | 0 | 2,868 | 0 |
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:
| State | What it means | What it points at |
|---|---|---|
| Discovered – currently not indexed | Google knows the URL and has not fetched it | a crawl problem: budget, demand, or server |
| Crawled – currently not indexed | Google fetched it and chose not to index | a judgement about the content |
| URL is unknown to Google | never seen at all | a discovery problem: no links, no crawl |
| Submitted and indexed | in 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 abovelastCrawlTime— the most underused field in the toolrobotsTxtStateandindexingState— rules out the boring causespageFetchState— what the crawler actually gotgoogleCanonicalversususerCanonical— 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
- Open Page Indexing and read the census by state. Ignore the sitemap’s indexed count entirely.
- Pick your five most important URLs and run URL Inspection on each. Write down
coverageStateandlastCrawlTime. - If the crawl dates are months old: your problem is crawl, and content edits are not being seen.
- If the crawl dates are recent and the state is “Crawled – not indexed”: Google is reading you and declining. That is the content conversation.
- 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.