watch a page → webhook on change

Website Change Monitoring API

Watch any URL and get a webhook the moment it changes — a price drops, a competitor ships, a status page flips, a term-of-service edits. Pick what "change" means: the page's content, one CSS selector, or its screenshot. One API, real headless-browser checks.

POST /v1/monitors registers a URL to watch and takes a first snapshot as the baseline. On each scheduled check rasterly re-renders the page, hashes it by your chosen mode, and — if it differs from last time — POSTs a webhook. It's built on the same render engine as the screenshot and extract endpoints, so JavaScript-rendered pages are handled, not just static HTML.

Try it

request — watch a product price
curl -X POST "https://api.rasterly.dev/v1/monitors" \
  -H "X-Api-Key: sk_live_..." \
  -H "content-type: application/json" \
  -d '{
    "url": "https://shop.example/p/42",
    "mode": "selector",
    "selector": ".price",
    "interval_minutes": 30,
    "webhook": "https://your-app.com/hooks/rasterly"
  }'
webhook payload — sent on change
{
  "event": "monitor.changed",
  "id": "bd67542f-...",
  "url": "https://shop.example/p/42",
  "mode": "selector",
  "changed": true,
  "hash": "6a2641...",
  "previous_hash": "4e1c48...",
  "sample": "$79.00",
  "checked_at": "2026-08-19T08:00:00Z"
}

Three modes

Manage them

What it's for

Why rasterly

Same render engine as the rest of the toolkit, so checks handle modern JS pages and cost about a second of CPU each. Monitoring is a small monthly subscription per set of monitors rather than a per-call fee — predictable, and it pairs naturally with the structured-data and screenshot endpoints you may already use.

FAQ

What kinds of change can it detect?
Three modes. content watches the page's clean Markdown, so any copy/content change fires. selector watches one CSS selector's text — point it at a price, a stock badge or a status line to alert only on that. visual watches a screenshot, so any pixel-level change fires (broadest, noisiest).
How do I get notified?
Set a webhook URL when you create the monitor. On a detected change rasterly POSTs a JSON payload — event, monitor id, url, new and previous hash, timestamp and a text sample — to your endpoint. Wire it to Slack, email or a queue.
How often does it check?
You set interval_minutes per monitor (minimum 5). A scheduler re-checks each monitor when due; you can also force an immediate check with POST /v1/monitors/:id/check.
Does it work on JavaScript-heavy pages?
Yes — every check renders the page in a real headless browser and waits for network idle before hashing, so client-rendered prices, SPA dashboards and dynamic status pages are captured, not just static HTML.
Get an API key See pricing