Website Change Monitor | Page Diff Alerts avatar

Website Change Monitor | Page Diff Alerts

Pricing

from $80.00 / 1,000 url change detecteds

Go to Apify Store
Website Change Monitor | Page Diff Alerts

Website Change Monitor | Page Diff Alerts

Monitor public web pages and receive source-linked added/removed text, change alerts, and portfolio diff reports. Unchanged checks emit no rows and no event charge.

Pricing

from $80.00 / 1,000 url change detecteds

Rating

0.0

(0)

Developer

naoki anzai

naoki anzai

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Competitive intelligence, product operations, and web teams use this Actor to track approved public pages. Input public URLs with optional CSS focus and noise filters. Get source-linked added/removed text, change alerts, snapshots, and portfolio digest reports.

Store Quickstart

The first run stores a free baseline. Schedule the same input to receive rows only when the watched content changes.

{
"targets": [
{
"name": "Competitor pricing",
"url": "https://example.com/pricing",
"cssSelector": "main",
"ignoreSelectors": [".cookie-banner"]
}
],
"initialRunMode": "baseline_only",
"generateDigest": true,
"emitSnapshots": false,
"emitUnchanged": false,
"maxDiffSegments": 20,
"maxChargeUsd": 10,
"snapshotKey": "competitor-pricing",
"dryRun": false
}

An unchanged run writes zero dataset rows and creates zero event charges.

Run the next report

Input examples

Pricing-page watch

{
"targets": [
{
"name": "Pricing",
"url": "https://example.com/pricing",
"cssSelector": "main",
"ignoreSelectors": [".last-updated"]
}
],
"initialRunMode": "baseline_only",
"stripDates": true,
"generateDigest": true,
"maxChargeUsd": 10,
"snapshotKey": "pricing-watch",
"dryRun": false
}

Product documentation watch

{
"targets": [
{
"name": "API changelog",
"url": "https://example.com/changelog",
"cssSelector": "article",
"ignoreSelectors": []
},
{
"name": "API limits",
"url": "https://example.com/docs/limits",
"cssSelector": "main",
"ignoreSelectors": ["nav"]
}
],
"initialRunMode": "baseline_only",
"stripDates": false,
"stripVolatileNumbers": false,
"generateDigest": true,
"maxDiffSegments": 30,
"maxChargeUsd": 10,
"snapshotKey": "api-docs-watch",
"dryRun": false
}

Use emit_backfill only when you explicitly want the current page captured as the first change row.

{
"targets": [
{
"name": "Terms page",
"url": "https://example.com/terms",
"cssSelector": "main",
"ignoreSelectors": []
}
],
"initialRunMode": "emit_backfill",
"generateDigest": false,
"emitSnapshots": false,
"maxChargeUsd": 0.1,
"snapshotKey": "terms-trial",
"dryRun": false
}

Sample output

{
"rowType": "url_change",
"billingEventName": "url-change-detected",
"targetName": "Competitor pricing",
"sourceUrl": "https://example.com/pricing",
"changeKind": "content_hash_diff",
"addedSegments": ["The Pro plan now includes priority support."],
"removedSegments": ["The Pro plan includes standard support."],
"addedSegmentCount": 1,
"removedSegmentCount": 1,
"changeRatio": 0.25,
"contentHash": "bcf38e4a58839f6c7686c3f1",
"previousContentHash": "dba4a91988d5ed0d5f3dbd31",
"checkedAt": "2026-07-27T01:00:00.000Z"
}

Each change row includes the source URL, final URL, HTTP status, current and previous hashes, bounded added/removed text segments, a change ratio, and a stable key. Digest rows summarize all changed targets in the run.

Pricing

EventPriceDelivered when
url-change-detected$0.08A normalized watched region changes, or an explicit backfill is requested
url-snapshot$0.02emitSnapshots is enabled and a public page is fetched successfully
change-digest-report$5.00At least one change exists and generateDigest is enabled

maxChargeUsd is checked before delivery. The Actor fails before pushing billable rows if the configured output would exceed the buyer-approved cap.

Change controls

  • cssSelector limits the watched region to a simple ID, class, or tag selector.
  • ignoreSelectors removes known noisy regions.
  • stripDates removes common timestamps before hashing.
  • stripVolatileNumbers normalizes long counters.
  • maxDiffSegments bounds the added and removed text included in each row.
  • snapshotKey keeps recurring watches isolated.

Compliance and limitations

  • Public HTTP(S) pages supplied by the buyer only.
  • Private networks, metadata endpoints, non-HTTP URLs, disallowed robots paths, access challenges, and login walls fail closed.
  • Redirect count, response size, and request time are bounded.
  • Results are source-linked observations and do not determine legal, security, compliance, or financial conclusions.
  • Lightweight CSS focus is not a full browser selector engine, and text diffs do not represent pixel-level layout changes.

See also