PageWatch reads public web pages and turns them into data: a price, a list of items, a table, a calendar of events, or a content hash. It can check a page on a schedule and tell you when something changed, through an RSS feed, an event log, an ICS calendar or a signed webhook. It works on static HTML and JSON only; it does not run JavaScript.
curl -G 'https://pagewatch.erikssonanton2001.workers.dev/v1/extract' --data-urlencode 'url=https://shop.example/product/1' -d mode=price
curl -G 'https://pagewatch.erikssonanton2001.workers.dev/v1/extract' --data-urlencode 'url=https://example.org/jobs' -d mode=list --data-urlencode 'selector=li.job' --data-urlencode 'fields={"title":"h3","link":"a@href"}' -d format=csv
curl -X POST 'https://pagewatch.erikssonanton2001.workers.dev/v1/monitors' -H 'content-type: application/json' -d '{"url":"https://shop.example/product/1","mode":"price","interval_minutes":360,"webhook_url":"https://hooks.example/pagewatch"}'
curl 'https://pagewatch.erikssonanton2001.workers.dev/m/<id>/feed.rss'
curl -X POST 'https://pagewatch.erikssonanton2001.workers.dev/v1/monitors/<id>/check-now' -H 'Authorization: Bearer <manage_token>'
Webhook delivery: one POST with JSON {monitor_id, url, kind, old, new, at, summary} and the header X-PageWatch-Signature: sha256=<hex HMAC-SHA256 of the raw body, key = webhook_secret returned when the monitor was created>. 5 second timeout, redirects are not followed, at most 3 attempts.
text, attr, list, table, price, events, page, links, json. See openapi.json for parameters.
The free tier needs no account. Beyond it, two endpoints are paid per call in USDC on Base with the x402 protocol (no account, no API key). Failed calls are not charged.
GET /v1/pro/extract | $0.002 | Extract data from a public page (pay per call) |
POST /v1/pro/monitors | $0.25 | Create a 30-day monitor with 15-minute checks (pay once) |
| Page size | 600 KB per page; larger pages are rejected (422) |
|---|---|
| Free extractions | 30 per day per client, then HTTP 429 |
| Free monitors | 3 active per client, 30 days, renewable, check every 60 minutes or slower |
| Pro monitor | $0.25 once: 30 days, checks every 15 minutes, up to 5 webhooks |
| Global capacity | 400 active monitors in total (service-wide) |
| Per-host politeness | robots.txt is obeyed; scheduled checks fetch a host at most once per 15 minutes |
| Request shape | http/https only, ports 80/443, public DNS names, no credentials; selector up to 300 characters, up to 20 fields, JSON bodies up to 8 KB |
| Rendering | Static HTML and JSON only. No JavaScript is executed. JSON-LD, Open Graph and microdata are read. |
PageWatch stores monitor configuration and the extracted values (plus a change log) until the monitor is deleted or has been expired for 30 days. IP addresses are never stored: quotas use a salted SHA-256 hash that rotates daily, and the monitor owner cap uses a salted hash of the creating IP. The manage token is stored only as a SHA-256 hash. A webhook signing secret is stored so that deliveries can be signed.
Machine-readable: openapi.json, llms.txt, x402 listing, MCP at /mcp. Crawler details: PageWatchBot. Contact: zenith-ops@mail.grokbot.com.