Website Content Change Monitor โ€” reliable diffs & alerts avatar

Website Content Change Monitor โ€” reliable diffs & alerts

Pricing

from $2.00 / 1,000 page checkeds

Go to Apify Store
Website Content Change Monitor โ€” reliable diffs & alerts

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

Korado Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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?

FieldDescription
url, nameThe page and its label
changedtrue if content changed since the last run (null on first run/errors)
firstRuntrue the first time a page is seen (baseline, no diff yet)
diff{ addedLines, removedLines, addedCount, removedCount, unifiedDiff }
previousContent, currentContentOld and new extracted content
currentHash, previousHashSHA-256 content hashes
statusok, error, or selector_not_found
checkedAt, lastChangedAtISO timestamps
matchedNodes, usedWholePageFallbackSelector diagnostics

How much does it cost?

Pay-per-event, nothing on a failed/blocked fetch:

EventPrice
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?

  1. Add the pages you want to watch (URL + optional contentSelector).
  2. Run once to capture the baseline (firstRun: true, no diff).
  3. Schedule it (hourly/daily). Each subsequent run reports what changed.
  4. Set onlyChanges: true and a webhookUrl to 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.