Website Change Monitor & Diff Alerts
Pricing
from $3.00 / 1,000 page checkeds
Website Change Monitor & Diff Alerts
Watch pages (terms, price lists, competitor sites, documentation) and report what changed between runs with a normalized text diff and severity.
Pricing
from $3.00 / 1,000 page checkeds
Rating
0.0
(0)
Developer
Daniel Michałek
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Watch any list of public pages — competitor pricing, terms and conditions, public price lists, documentation, job pages, regulatory notices — and get a precise answer to one question every run: what changed since last time? The Actor stores a normalized text snapshot of every page in a named key-value store, compares the current page with it and reports NEW, UNCHANGED, MINOR, CHANGED or ERROR together with the added and removed lines.
What it does
- Fetches each URL with timeouts, retries and polite per-host delays; no browser needed for server-rendered pages.
- Extracts the main content: scripts, styles, navigation, header, footer, sidebars and cookie banners are removed automatically, or you pass a CSS selector such as
mainor#pricing. - Normalizes whitespace and removes volatile fragments you define as regular expressions (dates, counters, timestamps) so they never trigger false alerts.
- Compares against the previous snapshot with a line diff and classifies the result;
MINORversusCHANGEDis controlled by a configurable threshold. - Saves the new snapshot, pushes one dataset item per page and writes a Markdown
REPORTwith changed pages first, including the added and removed lines. - Works with Apify schedules and integrations: run it hourly or daily and connect the dataset to Slack, e-mail, Make, Zapier or a webhook; filter on
status.
Input
| Field | Type | Default | Description |
|---|---|---|---|
| urls | array of strings | required | Pages to watch (max 2000 per run). |
| selector | string | "" | CSS selector to scope the comparison. |
| ignorePatterns | array of strings | [] | Regular expressions removed before comparing (dates, counters). |
| minorThreshold | number | 0.02 | Changes below this share of lines are MINOR. |
| includeDiff | boolean | true | Include up to 20 added / 20 removed lines per changed page. |
| emitUnchanged | boolean | true | When false, unchanged pages are not pushed (and not billed). |
| stateStoreName | string | website-change-monitor-snapshots | Named key-value store holding snapshots (created by the Actor on the first run); one per schedule. If the store is not accessible under the Actor's limited permissions, the run uses its default store and reports state.mode = default-fallback in OUTPUT. |
| maxItems | integer | 200 | Hard cap on checked pages per run. |
Output
One dataset item per page: status, changedRatio, added, removed, addedSample, removedSample, title, titleChanged, wordCount, textHash, previousHash, previousCheckedAt, httpStatus and error for failed fetches. The overview view lists changes first. The key-value store holds REPORT (Markdown) and OUTPUT with counts per status.
Example item (shortened):
{"finalUrl": "https://competitor.example/pricing","status": "CHANGED","changedRatio": 0.18,"added": 2,"removed": 1,"addedSample": ["Pro: 35 EUR / month", "Annual plans available"],"removedSample": ["Pro: 30 EUR / month"],"previousCheckedAt": "2026-10-20T06:00:03.120Z"}
Pricing and cost control
Pay per event: Page checked (page-checked) — one event per page fetched in a run, including unchanged pages (set emitUnchanged to false to pay only for pages with news). maxItems caps the number of pages per run. A daily check of 100 pages costs 100 events per day and runs in about a minute at 256 MB.
Limitations and fair use
- Server-rendered HTML only; content injected by JavaScript after load is not seen. Pages that are entirely client-rendered produce a low
wordCountso you can spot them. - Snapshots are capped at 200 KB of text per page; larger pages are compared on the first 200 KB.
- Only publicly reachable pages: no logins, paywalls or CAPTCHA solving, and robots directives are respected by not crawling beyond the URLs you list.
- The diff is textual; image or layout changes are not detected.
Example
Input: three public pages with date patterns ignored. First run: three NEW items (snapshots created). Next run: UNCHANGED for untouched pages and CHANGED with the exact lines for a page whose price list moved. See examples/input.json and examples/output.json.
Use cases
- Competitive intelligence: pricing, plans, feature pages, campaign landing pages.
- Compliance: terms of service, privacy policies, supplier conditions, insurance terms.
- Operations: public documentation and API changelogs that break integrations.
- Sales: career pages and "news" pages of target accounts as buying signals.