PageWatch

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.

Examples

Read a price once

curl -G 'https://pagewatch.erikssonanton2001.workers.dev/v1/extract' --data-urlencode 'url=https://shop.example/product/1' -d mode=price

Scrape a list into CSV

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

Watch a page and get a webhook

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"}'

Read the change feed

curl 'https://pagewatch.erikssonanton2001.workers.dev/m/<id>/feed.rss'

Check now

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.

Modes

text, attr, list, table, price, events, page, links, json. See openapi.json for parameters.

Pricing

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.002Extract data from a public page (pay per call)
POST /v1/pro/monitors$0.25Create a 30-day monitor with 15-minute checks (pay once)

Limits

Page size600 KB per page; larger pages are rejected (422)
Free extractions30 per day per client, then HTTP 429
Free monitors3 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 capacity400 active monitors in total (service-wide)
Per-host politenessrobots.txt is obeyed; scheduled checks fetch a host at most once per 15 minutes
Request shapehttp/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
RenderingStatic HTML and JSON only. No JavaScript is executed. JSON-LD, Open Graph and microdata are read.

Honest notes

Privacy

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.