Website Change Detector

Watch a web page or one part of it (CSS selector) for content changes and get an e-mail or webhook with a unified diff of what changed.

Free tool: 20 requests per minute.

Result

Press “Run” to see the result.

POST /v1/page-watch with a url creates a watcher: the page is fetched at once to take a baseline, then every interval_minutes. Choose what is compared: an optional CSS selector (all matches), mode text (visible text with line breaks, scripts and styles removed), html (the markup, one tag per line) or regex (only what a pattern extracts, e.g. prices). Remove noise before comparing with ignore (up to 20 regular expressions) and ignore_presets (dates, times, numbers, including Vietnamese forms such as “ngày 11 tháng 11” and “5 phút trước”). The normalised content (up to 200 KB) is stored compressed with its SHA-256.

When the hash changes, a change event with a unified diff (truncated to 4 KB; the last 20 events are kept) is stored and sent to your webhook_url ({"event": "page.changed", "watcher", "added", "removed", "diff", "hash", "previous_hash"}) and to the verified e-mail of your account (at most one e-mail per watcher per hour, with daily caps). Three failed checks in a row raise one page.error alert. Sites answering 429 / 503 are left alone for their Retry-After (or a doubled interval); robots.txt is checked on creation and weekly, and our bot identifies itself as APIBoxBot.

GET /v1/page-watch lists your watchers, /{id} shows one with its events (include_snapshot=true adds the stored content), PATCH updates it (a new URL or rule starts a new baseline), DELETE removes it, /{id}/events returns the history and POST /{id}/check runs a test without changing anything. dry_run=true previews the normalised content without an account. Plans: Free 3 watchers every 60+ minutes, Starter 20 every 30+, Pro 100 every 15+ minutes.

Use this in your code

curl -X POST "https://apibox.io.vn/v1/page-watch" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.edu.vn/tuyen-sinh","name":"Tuyển sinh","selector":".news","ignore_presets":"dates","interval_minutes":60,"webhook_url":"https://example.com/hooks/page"}'

API documentation → Get a free API key

FAQ

How do I avoid alerts for counters and dates?

Use a CSS selector for the part you care about, add ignore_presets=dates,times,numbers or your own ignore patterns, and check the result with dry_run=true first.

Can it watch pages behind a login?

No. Only public pages are fetched, without cookies, and URLs disallowed for our bot by robots.txt are refused.

Do scheduled checks use my quota?

No. Creating, updating, test runs and previews count one request each; GET reads are free.