Content Change Monitor: Website Change Detection & AI Alerts avatar

Content Change Monitor: Website Change Detection & AI Alerts

Pricing

from $2.00 / 1,000 page checkeds

Go to Apify Store
Content Change Monitor: Website Change Detection & AI Alerts

Content Change Monitor: Website Change Detection & AI Alerts

Website change monitor with AI: get alerts only when a page change matters, like prices, outages, releases and policy updates. Email, Slack, Discord or webhook, with before/after screenshots. Pay per check, built for AI agents.

Pricing

from $2.00 / 1,000 page checkeds

Rating

0.0

(0)

Developer

Pardha Saradhi Mallela

Pardha Saradhi Mallela

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Security

Limited permissions

Share

Content Change Monitor — get alerted only when a webpage change matters

Most website monitors alert on every timestamp, view counter and rotating ad. Content Change Monitor filters that noise out and tells you only when something real changes: a price, an outage, a new release, a policy update.

  • Noise filtered out: timestamps, counters, ads, session tokens and reordered widgets are ignored
  • AI judge: tell it what matters in plain English, e.g. "only alert if a price changes"
  • Alerts where you work: email, Slack, Discord or webhook, with before/after screenshots
  • Pay per use: from $0.002 per check, no subscription, and our own failures are free
  • Built for AI agents: call it with just a URL through the Apify API or MCP, get a one-line answer

What people use it for

  • Competitor pricing: plans, tiers and limits on pricing pages
  • Outages: status pages of the services you depend on
  • Releases: changelogs, release notes, API docs
  • Legal: terms of service and privacy policies
  • Prices and stock: product pages and fares, with drop-only alerts
  • Jobs and notices: job boards, government and regulator announcements
  • Any public webpage you need to keep an eye on

Quick start

  1. Add the pages you want to watch and click Start. The first run saves a baseline of each page.
  2. Schedule it (hourly, daily…). Every run compares against the last one.
  3. Add emailTo, or a Slack/Discord webhookUrl, to get alerts.
{
"targets": [{ "url": "https://example.com/pricing", "label": "Competitor pricing" }],
"aiInstruction": "only notify if a price changes",
"webhookUrl": "https://hooks.slack.com/services/XXX",
"webhookFormat": "slack"
}

The smallest input is { "targets": [{ "url": "https://example.com" }] }; everything else has a sensible default.

Output: one record per page per run.

{
"url": "https://example.com/pricing",
"label": "Competitor pricing",
"status": "changed",
"significant": true,
"category": "price_change",
"summary": "Pro plan moved from $49 to $59 per month",
"diff": { "removed": [{ "text": "$49" }], "added": [{ "text": "$59" }] },
"screenshotBefore": "https://…", "screenshotAfter": "https://…"
}

Each run also saves a short summary (OUTPUT) with changed: true/false and a one-line summary, so a script or an AI agent can answer "did anything change?" without reading the dataset.

Pricing

Pay per event. No subscription, no monthly minimum, no platform-usage fees.

EventPriceWhen
Page checked$0.002each page fetched and compared
Change detected$0.01a significant change was found
AI review$0.004the built-in AI judged a change (about 5% of checks; free with your own key)
Screenshots$0.002before/after pictures of a change (only if includeScreenshots is on)
Browser render$0.002a page that needed a real browser (JavaScript-heavy sites)
Residential proxy$0.002a check through a residential proxy (only if you enable it)

Example: 100 pages checked daily for a month ≈ $6.90.

Not charged: checks that fail because of the Actor itself, and pages that robots.txt disallows. Set a maximum charge per run and the Actor stops cleanly at that limit.

How it decides what matters

  1. Noise rules remove what changes on every visit: timestamps ("updated 3 minutes ago"), counters, ads, tracking parameters, session tokens, generated class names and rotating widgets.
  2. Size check: tiny changes are ignored, except prices, versions, dates, service status and policy wording, which always get through, however small.
  3. AI review: what's left is judged by AI, guided by your aiInstruction. Use the built-in AI, or your own OpenAI, Anthropic, Gemini or OpenAI-compatible key (llmProvider, llmApiKey). AI review is optional: set useAiAdjudication: false to use the rules alone.

Pages that keep flipping between two versions are marked flapping and don't alert.

Compare modes

modeComparesBest for
text (default)the readable content of the pagedocs, policies, news, changelogs
htmlthe markup, including attributeswhen a link or attribute matters
structuredproduct data (JSON-LD, microdata, OpenGraph)prices, stock, ratings
priceonly the product's own price, currency and stockprice tracking

Price mode ignores recommendation and "was" prices. Fine-tune it with priceDirection (any, drop or rise), minPriceChangePercent, and pricePick (first, lowest or highest when a page lists several prices).

Use selector to watch one part of a page, and ignoreSelectors or ignorePatterns to skip parts.

Content behind a click? Give the target actions (click, waitFor, fill, scrollTo, wait) to reach it, for example opening a panel before reading a fare. If a step fails, the check reports action_failed instead of comparing the wrong page.

Alerts

  • Email: up to 5 recipients, one digest per run or one email per change. With includeScreenshots, the before/after pictures are included, with the change highlighted. First alert in Spam? Mark it "Not spam" and add the sender to your contacts.
  • Slack / Discord: set webhookFormat to slack or discord and paste the webhook URL.
  • Webhook (JSON): one signed POST per run. With webhookSecret set, verify the X-Actor-Signature header against the raw body:
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');

For AI agents

  • Pay per use, nothing up front: an agent pays only for the checks it runs, and the run's maximum charge is always respected.
  • Minimal input: { "url": "https://example.com" } works.
  • One-line answer: read changed and summary from the run's OUTPUT record.
  • Works with the Apify API, client libraries and Apify's MCP server (Claude, Cursor and other MCP clients).

Reliability

  • A problem with one page never fails the run. A 404, a timeout or a blocked page becomes a record with a clear status and reason, and the other pages are still checked.
  • Statuses: baseline_created, baseline_migrated, unchanged, changed, insignificant, flapping, unreachable, blocked, selector_miss, timeout, skipped_robots, error.
  • Upgrades don't cause false alerts: when the noise rules improve, saved baselines are updated first, so you aren't alerted about the upgrade itself.

Limits

  • Public pages only: no logins or paywalls.
  • robots.txt is always respected, with no bypass.
  • Strong bot protection (Cloudflare challenges, DataDome and similar) is reported as blocked, not worked around. A residential proxy (proxyConfiguration) helps with sites that block datacenter IPs.
  • Geo-blocked pages need a residential proxy in the right country.
  • Polite by design: pages on the same site are checked one at a time, so 200 pages on one site take longer than 200 pages on different sites.
  • No crawling: it checks the URLs you give it, up to 1,000 per run.

Your data

Only the changed excerpt and a few surrounding words are sent to the built-in AI for review, never the full page, your list of pages or anything that identifies you. The built-in AI runs on business-grade AI services that never use your content to train their models. With your own key, the excerpt goes only to your provider, and your key is never stored or logged. To keep page content away from AI entirely, use structured or price mode, or set useAiAdjudication: false.

Questions or ideas?

Open an issue on the Issues tab. Every report is read, and breakages are fixed quickly.