Website Content Change Monitor โ reliable diffs & alerts
Pricing
from $2.00 / 1,000 page checkeds
Website Content Change Monitor โ reliable diffs & alerts
Monitor any web page for content changes with a CSS selector or whole-page text. Get a unified diff, added/removed lines, previous & current content, and webhook alerts. Export data, run via API, schedule runs, or integrate with other tools.
Pricing
from $2.00 / 1,000 page checkeds
Rating
0.0
(0)
Developer
Korado Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Website Content Change Monitor ๐
Monitor any web page for content changes โ a price, a changelog, a policy, a job listing, a competitor's copy โ and get a clean diff the moment it changes. Point it at a URL (optionally a CSS selector), and every run compares the page to the previous snapshot and tells you exactly what changed. Export data, run via API, schedule runs, or integrate with other tools.
What can this monitor do?
- ๐ Detect changes across runs โ snapshots persist in a named key-value store, so scheduled runs catch changes between checks (not just within one run).
- ๐ฏ Watch a region or the whole page โ target a CSS selector, or monitor the full page text.
- ๐งฎ Real diffs โ unified diff plus added/removed lines, previous content and current content, and a stable content hash.
- ๐งฑ Reliable by design โ HTTP-first with proxy retry; a missing selector becomes a clean, explained state (optionally whole-page fallback) instead of a failed run. One bad page never aborts the batch.
- ๐ฃ Alerts โ POST every changed page to a webhook; include an email address in the record for an Apify email integration.
- ๐ซ No false positives โ text mode normalizes whitespace/markup so cosmetic reflows don't read as changes.
What data do I get per page?
| Field | Description |
|---|---|
url, name | The page and its label |
changed | true if content changed since the last run (null on first run/errors) |
firstRun | true the first time a page is seen (baseline, no diff yet) |
diff | { addedLines, removedLines, addedCount, removedCount, unifiedDiff } |
previousContent, currentContent | Old and new extracted content |
currentHash, previousHash | SHA-256 content hashes |
status | ok, error, or selector_not_found |
checkedAt, lastChangedAt | ISO timestamps |
matchedNodes, usedWholePageFallback | Selector diagnostics |
How much does it cost?
Pay-per-event, nothing on a failed/blocked fetch:
| Event | Price |
|---|---|
| Page checked | $0.002 |
| Change detected | $0.01 |
Monitoring 100 pages daily where 5 change โ 100 ร $0.002 + 5 ร $0.01 = $0.25/day.
How do I use it?
- Add the pages you want to watch (URL + optional
contentSelector). - Run once to capture the baseline (
firstRun: true, no diff). - Schedule it (hourly/daily). Each subsequent run reports what changed.
- Set
onlyChanges: trueand awebhookUrlto get pinged only when something moves.
Input
{"pages": [{ "url": "https://apify.com/change-log", "contentSelector": "main", "name": "Apify changelog" },{ "url": "https://example.com/pricing", "contentSelector": ".price" }],"onlyChanges": true,"webhookUrl": "https://hooks.example.com/notify"}
Single-page (compatible with other content checkers):
{ "url": "https://www.apify.com/change-log", "contentSelector": ".change-log ul:nth-of-type(1)", "sendNotificationTo": "you@company.com" }
Output (a changed page)
{"url": "https://example.com/pricing","changed": true,"firstRun": false,"diff": { "addedCount": 1, "removedCount": 1, "addedLines": ["$29 / mo"], "removedLines": ["$19 / mo"], "unifiedDiff": "โฆ" },"previousContent": "Pro plan $19 / mo","currentContent": "Pro plan $29 / mo","checkedAt": "2026-08-26T10:00:00Z","lastChangedAt": "2026-08-26T10:00:00Z"}
What can you do with the data?
- ๐ฒ Price & promo monitoring โ alert when a competitor changes pricing.
- ๐ Changelog / policy / ToS tracking โ know the moment terms change.
- ๐ฃ Competitor copy & positioning โ watch landing pages and messaging.
- ๐ผ Listings & availability โ jobs, tenders, stock, real-estate pages.
- ๐ค Trigger workflows โ webhook straight into Slack, Make, Zapier, or your app.
FAQ
How are changes detected across runs? Each page's normalized content is
hashed and stored in a named key-value store (stateStore). The next run compares
against it. Use distinct stateStore names to run independent monitors.
What if my CSS selector stops matching? By default wholePageFallback keeps
the run healthy by monitoring the whole page text; set it to false to instead
get an explicit selector_not_found status.
Does it handle JavaScript-rendered pages? It fetches server-rendered HTML (fast and reliable for most monitored content). For heavily client-rendered regions, target a selector present in the initial HTML or an underlying data URL.
Text or HTML comparison? Text by default (ignores cosmetic markup/whitespace).
Set extractHtml: true to compare raw inner HTML.
Will a failed fetch cost me? No. Only successful checks and detected changes are billed.
Can I get only the pages that changed? Yes โ set onlyChanges: true.
Can I run it on a schedule and via API? Yes โ schedule it in Apify or call it via the Apify API/SDK like any actor.
Is scraping public pages legal? You're responsible for complying with each site's terms and applicable law. This actor reads publicly accessible pages only.