Website Change Monitor
Pricing
$5.00 / 1,000 result items
Website Change Monitor
Monitor any list of URLs for true content changes — CSS-selector targeting, keyword watches, noise-filtered diffing and webhook-on-change. Built for scheduled runs. Pay per result.
Pricing
$5.00 / 1,000 result items
Rating
0.0
(0)
Developer
ziv shay
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Monitor any list of URLs for true content changes — and fire a webhook only when something real changes. CSS-selector targeting, keyword watches, noise-filtered diffing, and clean machine-consumable output. Built for scheduled runs. Pay per result.
Most "website change detection" actors diff raw HTML, so they fire on every page load — cache busters, session tokens, ad slots and timestamps all look like "changes." This actor normalizes the page first (strips scripts/styles/comments, volatile attributes, hashes, session ids, cache-buster query params, whitespace reflow) and compares against the last scheduled run, so you get signal, not noise.
What it does
- Fetches each URL, extracts the watched region (whole page or a CSS selector).
- Normalizes content and compares it to the previous run's snapshot (stored in a persistent named Key-Value store — it survives between scheduled runs).
- Emits a structured change-event per URL that actually changed: added/removed lines, counts, a unified-diff preview, a 0–1 change ratio, and keyword appeared/disappeared signals.
- A
minChangeRatiothreshold suppresses trivial edits.
Why it's different
- True-change detection, not raw-HTML diffing. Volatile noise is stripped before comparison, so you don't get paged on a cache-buster.
- State persists across scheduled runs. It compares against your last run, not within one run — the only way change detection actually works on a schedule.
- Clean output.
addedLines/removedLines/changeRatio/keywordsAppearedare webhook-ready — your consumer acts on the fields, no HTML parsing.
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | URLs to watch. Strings, or objects with per-URL url + selector + keywords. |
selector | string | Global CSS selector applied to URLs that don't set their own. Blank = whole <body>. |
keywords | array | Words to watch; run reports present + appeared/disappeared (e.g. In stock, Sold out). |
mode | string | text (default, ignores markup churn) or html. |
minChangeRatio | number | 0–1. Only flag a change when ≥ this fraction of lines changed. |
emitUnchanged | boolean | Also output unchanged URLs (default off → webhook fires only on real changes). |
storeArchive | boolean | Store previous content for line-level diffs (default on). |
proxyConfiguration | object | Apify proxy (recommended). |
Example input
{"startUrls": ["https://news.ycombinator.com",{ "url": "https://shop.example.com/item", "selector": ".price", "keywords": ["In stock", "Sold out"] }],"minChangeRatio": 0.02}
Output
One change-event per changed/first-seen/errored URL:
{"url": "https://shop.example.com/item","changed": true,"changeType": "changed","fingerprint": "a1b2c3d4e5f60718","previousFingerprint": "9988776655443322","addedLines": ["$24.99", "In stock"],"removedLines": ["$29.99", "Sold out"],"addedCount": 2,"removedCount": 2,"changeRatio": 0.5,"keywordsAppeared": ["In stock"],"keywordsDisappeared": ["Sold out"],"preview": "- $29.99\n- Sold out\n+ $24.99\n+ In stock","checkedAt": "2026-06-21T13:40:00.000Z","previousCheckedAt": "2026-06-21T12:40:00.000Z"}
changeType is one of: first_seen, unchanged, below_threshold, changed, error.
Schedule + webhook
- Schedule the actor (e.g. hourly/daily) — the named state store remembers the last snapshot between runs.
- Add an Apify webhook on run succeeded and, in your endpoint, act on rows where
changed: true. Or use the dataset'schanged/changeTypefields to filter.
Pricing
Pay per result — you're charged per change-event row returned. Default output mode only returns rows that changed (or were first-seen / errored), so steady-state monitoring of stable pages is cheap.
Built by MoneyMachine. Public data only; respect each site's terms and robots.