# get_sitemap_coverage

> Compares your latest stored sitemap with the pages that had web search impressions in the window, and lists recent sitemap snapshots. Use it to spot gaps…

**Source:** [https://queryhippo.com/docs/tools/get_sitemap_coverage](https://queryhippo.com/docs/tools/get_sitemap_coverage)

Which sitemap pages get no search impressions, and which pages with impressions are missing from my sitemap?

- Read-only
- No external calls

## When to use it

Compares your latest stored sitemap with the pages that had web search impressions in the window, and lists recent sitemap snapshots. Use it to spot gaps between what you submit and what appears in search.

## Ask your AI

- Which pages in my sitemap got no impressions in the last 28 days?
- Are there pages getting search impressions that aren't in my sitemap?

## Parameters

| Name | Type | Details | What it means |
| --- | --- | --- | --- |
| `propertyId` (required) | `string` | 1–200 characters; pattern ^[a-zA-Z0-9._:-]+$ | The ID of the site to read, as returned by list_sites. You must own the site or have been granted access to it. |
| `days` | `7 or 28` | default 28 | Window of 7 or 28 complete days for the impressions. Defaults to 28. |

## What it returns

Counts of sitemap URLs with and without impressions, pages with impressions that aren't in the sitemap, and URLs that differ only by a trailing slash, http/https or www; up to 200 sitemap URLs without impressions (with lastmod) and up to 200 pages missing from the sitemap (with impressions and clicks); the sitemap day, the window and caveats. It also lists up to 90 sitemap snapshots, newest first, with each one's state, URL count and URLs added or removed. status is no_sitemap_snapshot or no_page_data when there is nothing to compare.

Fields of the result:

| Name | Type | Details |
| --- | --- | --- |
| `coverage` | `object` | — |
| `coverage.version` | `"1.0.0"` | — |
| `coverage.status` | `"ready" \| "no_sitemap_snapshot" \| "no_page_data"` | — |
| `coverage.sitemap_day` | `string or null` | pattern ^\\d{4}-\\d{2}-\\d{2}$ |
| `coverage.window` | `object or null` | — |
| `coverage.page_days` | `integer` | minimum 0 |
| `coverage.truncated_page_days` | `integer` | minimum 0 |
| `coverage.counts` | `object` | — |
| `coverage.without_impressions` | `array of object` | at most 200 items |
| `coverage.not_in_sitemap` | `array of object` | at most 200 items |
| `coverage.caveats` | `array of string` | at most 10 items |
| `coverage.source` | `"google" \| "fixture" or null` | — |
| `history` | `array of object` | at most 90 items |
| `error` | `object` | returned on its own, instead of the other fields |
| `error.code` | `"intent_history_unavailable" \| "intent_accounting_pending" \| "google_reconnect_required" \| "unauthorized" \| "not_found_or_forbidden" \| "dependency_unavailable" \| "quota_exceeded" \| "invalid_input" \| "invalid_source" \| "stale_attempt" \| "conflict" \| "unknown_commit" \| "not_configured"` | — |
| `error.retryable` | `boolean` | — |
| `error.message` | `string` | — |
| `error.correlation_id` | `string` | 1–200 characters; pattern ^[a-zA-Z0-9._:-]+$ |

## Notes

- A sitemap page with no impressions isn't proof that it's unindexed; it may simply not have been shown in search during the window.
- Read-only: it reads data QueryHippo has already stored. It does not start a collection, fetch anything or call an AI model.

## Description your AI sees

> Compare the property's latest sitemap snapshot with finalized Search Console web page impressions: sitemap URLs without impressions, pages with impressions missing from the sitemap, and sitemap snapshot history. Deterministic; no fetches or external calls.

## Full schemas

**Input schema**

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "propertyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-zA-Z0-9._:-]+$"
    },
    "days": {
      "default": 28,
      "anyOf": [
        {
          "type": "number",
          "const": 7
        },
        {
          "type": "number",
          "const": 28
        }
      ]
    }
  },
  "required": [
    "propertyId"
  ],
  "additionalProperties": false
}
```

**Output schema**

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "coverage": {
      "type": "object",
      "properties": {
        "version": {
          "type": "string",
          "const": "1.0.0"
        },
        "status": {
          "type": "string",
          "enum": [
            "ready",
            "no_sitemap_snapshot",
            "no_page_data"
          ]
        },
        "sitemap_day": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
            },
            {
              "type": "null"
            }
          ]
        },
        "window": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "start": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                },
                "end": {
                  "type": "string",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
                }
              },
              "required": [
                "start",
                "end"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "page_days": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "truncated_page_days": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "counts": {
          "type": "object",
          "properties": {
            "sitemap_urls": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "with_impressions": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "without_impressions": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "not_in_sitemap": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "variant_mismatches": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            }
          },
          "required": [
            "sitemap_urls",
            "with_impressions",
            "without_impressions",
            "not_in_sitemap",
            "variant_mismatches"
          ],
          "additionalProperties": false
        },
        "without_impressions": {
          "maxItems": 200,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "lastmod": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "url",
              "lastmod"
            ],
            "additionalProperties": false
          }
        },
        "not_in_sitemap": {
          "maxItems": 200,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "impressions": {
                "type": "number",
                "minimum": 0
              },
              "clicks": {
                "type": "number",
                "minimum": 0
              }
            },
            "required": [
              "url",
              "impressions",
              "clicks"
            ],
            "additionalProperties": false
          }
        },
        "caveats": {
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 300
          }
        },
        "source": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "google",
                "fixture"
              ]
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": [
        "version",
        "status",
        "sitemap_day",
        "window",
        "page_days",
        "truncated_page_days",
        "counts",
        "without_impressions",
        "not_in_sitemap",
        "caveats",
        "source"
      ],
      "additionalProperties": false
    },
    "history": {
      "maxItems": 90,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "fetching",
              "complete",
              "failed"
            ]
          },
          "outcome": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "ok",
                  "partial",
                  "no_sitemap",
                  "unreachable"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "url_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9007199254740991
          },
          "added_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "removed_count": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "gsc_submitted": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "truncated": {
            "type": "boolean"
          }
        },
        "required": [
          "day",
          "state",
          "outcome",
          "url_count",
          "added_count",
          "removed_count",
          "gsc_submitted",
          "truncated"
        ],
        "additionalProperties": false
      }
    },
    "error": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "enum": [
            "intent_history_unavailable",
            "intent_accounting_pending",
            "google_reconnect_required",
            "unauthorized",
            "not_found_or_forbidden",
            "dependency_unavailable",
            "quota_exceeded",
            "invalid_input",
            "invalid_source",
            "stale_attempt",
            "conflict",
            "unknown_commit",
            "not_configured"
          ]
        },
        "retryable": {
          "type": "boolean"
        },
        "message": {
          "type": "string"
        },
        "correlation_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200,
          "pattern": "^[a-zA-Z0-9._:-]+$"
        }
      },
      "required": [
        "code",
        "retryable",
        "message",
        "correlation_id"
      ],
      "additionalProperties": false
    }
  },
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "coverage",
        "history"
      ],
      "not": {
        "required": [
          "error"
        ]
      }
    },
    {
      "required": [
        "error"
      ],
      "maxProperties": 1
    }
  ]
}
```
