Sitemap changes

GET/api/v1/sitemap/changesMCP get_sitemap_changes3 domains free, then 2 credits/day each

Watch any site's sitemap and get the pages it added or removed each day.

Endpoints

  • GET

    Path/api/v1/sitemap/watches

    What it doesList watched domains with status, free tier and latest crawl.

  • POST

    Path/api/v1/sitemap/watches

    What it doesWatch a domain. Body { "domain": "example.com" }. Adding it again is a no-op.

  • DELETE

    Path/api/v1/sitemap/watches?domain=

    What it doesStop watching a domain. Its change history is kept.

  • GET

    Path/api/v1/sitemap/changes?domain=

    What it doesPage URLs added or removed, newest day first.

  • GET

    Path/api/v1/sitemap/history?domain=&days=

    What it doesDaily page count and added / removed counts.

How it works

  • Each watched domain is crawled once a day around 09:00 UTC+8, starting from the Sitemap: lines in robots.txt (or /sitemap.xml).
  • The first crawl only records the page list. Changes are reported from the next day.
  • A page counts as added when it was not seen in the previous 30 days, and as removed after 7 days in a row without it.
  • If the page count drops below 70% of the baseline, the day is flagged suspicious and no removals are counted. Same when some sitemap files fail (complete: false).
  • You can only query domains you watch. www.example.com and example.com are separate sites.

Parameters

  • domain

    Typestring

    RequiredYes

    DescriptionA domain you watch.

  • date

    Typestring

    Required—

    DescriptionOne day, YYYY-MM-DD (UTC+8). Omit for the last 30 days.

  • change

    Typestring

    Required—

    Descriptionadded or removed. Omit for both.

  • scope

    Typestring

    Required—

    Descriptionprimary (default) skips translated copies under locale prefixes like /de/; all includes them.

  • page

    Typeinteger

    Required—

    DescriptionPage number, starting at 1.

  • pageSize

    Typeinteger

    Required—

    DescriptionURLs per page, 1–200. Default 50.

Request

shell
# Watch a domain (crawled daily from tomorrow 09:00 UTC+8)
curl -X POST "https://seo-api.org/api/v1/sitemap/watches" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"example.com"}'

# Pages it added in the last 30 days
curl "https://seo-api.org/api/v1/sitemap/changes?domain=example.com&change=added" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

items holds one row per URL change: snapshotDate, change, url, section (first path segment) and locale. total is the number of matching rows.

200 OK
{
  "ok": true,
  "data": {
    "items": [
      {
        "snapshotDate": "2026-10-29",
        "domain": "example.com",
        "change": "added",
        "url": "https://example.com/tools/new-tool",
        "section": "tools",
        "locale": null
      }
    ],
    "total": 1,
    "page": 1,
    "pageSize": 50
  }
}

Billing

Queries are free. The first 3 domains you watch (oldest first) are free; each extra domain costs 2 credits per day it is crawled successfully. The baseline day and failed crawls cost nothing. When credits run out, extra domains pause and resume on their own once your balance covers a day.

Errors

  • SEO_API.MISSING_API_KEY

    HTTP401

    MeaningNo Authorization header or x-api-key header.

  • SEO_API.INVALID_API_KEY

    HTTP401

    MeaningThe key does not exist or was revoked.

  • SEO_API.INVALID_DOMAIN

    HTTP400

    MeaningThe domain parameter is missing or is not a domain (IPs are rejected).

  • BILLING.INSUFFICIENT_CREDITS

    HTTP402

    MeaningThe account has no credits left. Repeat lookups within 24 hours still work.

  • SYSTEM.INTERNAL_SERVER_ERROR

    HTTP500

    MeaningSomething failed on our side. Retry with backoff.

Call it over MCP

Tools list_sitemap_watches, add_sitemap_watch, remove_sitemap_watch, get_sitemap_changes and get_sitemap_history. Arguments match the REST parameters.

tools/call
{
  "name": "get_sitemap_changes",
  "arguments": {
    "domain": "example.com",
    "change": "added"
  }
}

Call it from the CLI

terminal
npx @seo-api/cli sitemap add example.com
npx @seo-api/cli sitemap list
npx @seo-api/cli sitemap changes example.com --added

Other APIs