# PageWatch > PageWatch extracts structured data from public static web pages (text, attributes, lists, tables, prices, events, links, JSON) and monitors pages for changes, with RSS, ICS and signed webhook alerts. No JavaScript rendering. ## Base URL https://pagewatch.erikssonanton2001.workers.dev ## Free endpoints - GET /v1/extract - Extract data from one public page (free, 30 per day per client) - POST /v1/monitors - Create a monitor (free plan: min interval 60 min, 3 active per client, 30 days) - DELETE /v1/monitors/{id} - Delete a monitor and its events (Authorization: Bearer ) - POST /v1/monitors/{id}/renew - Extend a free monitor by 30 days (re-activates expired or broken monitors) (Authorization: Bearer ) - POST /v1/monitors/{id}/check-now - Run a check immediately (once per 10 minutes) (Authorization: Bearer ) - GET /m/{id}/events.json - Change log of a monitor (public by id) - GET /m/{id}/latest.json - Latest extracted value and status - GET /m/{id}/feed.rss - RSS 2.0 feed of the latest 50 events - GET /m/{id}/calendar.ics - ICS calendar (events-mode monitors) ## Paid endpoints (x402 v2, exact scheme, eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, pay to 0x9f950fbeE661D8867750750F600Ff03fb7BAbe8D) - GET /v1/pro/extract - $0.002 - Same as the free /v1/extract but without the 30 requests per day limit: fetch one public static HTML or JSON page and return structured data (text, attr, list, table, price, events, page, links, json) as JSON, CSV or ICS. Honours robots.txt. No JavaScript rendering. Failed calls (4xx/5xx) are not settled. - POST /v1/pro/monitors - $0.25 - Creates a monitor that checks a public static page every 15 minutes (or slower) for 30 days and records every change. Up to 5 signed webhook URLs, an RSS feed, a JSON event log and (events mode) an ICS calendar. No per-client cap on the number of monitors; the global cap still applies. The response carries the manage token once. Failed calls (4xx/5xx) are not settled. An unpaid request returns HTTP 402 with a PAYMENT-REQUIRED header (base64 JSON). Retry with a PAYMENT-SIGNATURE header; @x402/fetch does this automatically. You are charged only when the response status is below 400. ## Extraction Modes: text, attr, list, table, price, events, page, links, json. Parameters: url, mode, selector, attr, fields, match, jsonpath, sameHost, all, tableIndex, format. Formats: json (default), csv, ics (events mode). ## Monitors POST /v1/monitors with JSON {url, mode, selector?, attr?, fields?, interval_minutes?, webhook_url?}. The response contains the manage_token (shown once), webhook_secret (if a webhook was given), feed_url and events_url. Webhook delivery: one POST with JSON {monitor_id, url, kind, old, new, at, summary} and the header X-PageWatch-Signature: sha256=. 5 second timeout, redirects are not followed, at most 3 attempts. ## MCP https://pagewatch.erikssonanton2001.workers.dev/mcp (streamable HTTP, JSON-RPC 2.0). Tools: extract_page, watch_page, get_changes. Pass paid=true to extract_page or watch_page to get x402 payment requirements for the paid endpoints. ## Limits and honesty notes - 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. - Pages that build their content with JavaScript return little or nothing; there is no headless browser. - Pages behind a login, paywall or bot protection are out of scope. No cookies or credentials are ever sent. - Checks are best-effort: the service runs on a free Cloudflare plan with cron every 15 minutes; a check can be late when many monitors are due. - Selectors break when a site changes its markup. After 3 failures a monitor slows down and after 10 it stops with a 'broken' event. - Webhooks get at most 3 delivery attempts (one per cron run). Use the RSS feed or events.json as the source of truth. - Anyone who knows a monitor id can read its feed. Do not monitor pages whose content you cannot share. ## 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. ## Other - OpenAPI: https://pagewatch.erikssonanton2001.workers.dev/openapi.json - Crawler: https://pagewatch.erikssonanton2001.workers.dev/bot