SpecWatch

DOCS

SpecWatch for developers and agents.

SpecWatch checks public product pages for broken links, specification changes, and price or availability drift. This page documents everything an automated client — a script, an integration, an AI agent — can reach without an account, and the conventions the site follows. The full workspace API behind the web app is session-authenticated; a documented programmatic API for paid plans is on the roadmap. If you need it sooner, tell us.

Machine-readable surface

Public endpoints

Health

curl -s https://specwatch.me/api/health
{"ok":true}

Check one page

POST /api/scan takes a JSON body {"url": "https://example.com/product-page"} and runs the same check the landing page's form runs: outbound links on the page are followed, spec signals are extracted, and the result is returned as JSON with a summary, per-finding detail, and any word-level changes against the page's previous scan. No account is needed.

curl -s -X POST https://specwatch.me/api/scan \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com/product-page"}'

Responses: 200 with the scan result; 400 for a non-public or malformed URL; 403 when a workspace's daily scan budget is spent; 429 when you hit the rate limit. Scans take a few seconds to a minute.

Rate limits

Public endpoints are rate-limited per client IP. Every limited response carries standard headers so you can self-throttle:

HeaderMeaning
RateLimit-LimitRequests allowed in the window
RateLimit-RemainingRequests left in the window
RateLimit-ResetSeconds until the window resets
Retry-AfterOn 429 only: seconds to wait before retrying

Current limits: POST /api/scan — 10 requests per 10 minutes; POST /api/leads (browser-only, same-origin) — 10 per hour; authentication endpoints are stricter still.

Content negotiation

Every content page (this one, the home page, pricing, about, contact, privacy, terms) is also served as Markdown when you ask for it:

curl -s -H 'Accept: text/markdown' https://specwatch.me/

You get a non-empty Markdown body with Content-Type: text/markdown and Vary: Accept; asking for text/html returns the normal page.

Errors

Unknown paths return a real 404 — as Markdown when you accept Markdown, as a small HTML page otherwise — pointing back to these docs, llms.txt, and the sitemap. No soft-404 app shells.

Use policy

Only check pages you have a legitimate interest in monitoring — your own product pages, or pages you are authorized to watch. Do not use the API to attack, overload, or circumvent the protections of any website (see the terms).