Website Change Monitor avatar

Website Change Monitor

Pricing

from $2.50 / 1,000 page check completeds

Go to Apify Store
Website Change Monitor

Website Change Monitor

Monitor company web pages for content changes. Returns content hash, changed yes/no, and a short diff summary. Ideal for pricing, careers, and impresszum watch lists across CEE/EU SMEs.

Pricing

from $2.50 / 1,000 page check completeds

Rating

0.0

(0)

Developer

Viktor Kondas

Viktor Kondas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Monitor company web pages for content changes — content hash, changed flag, and a short diff summary.

Standalone Apify actor for pricing, careers, impresszum/privacy, and homepage watch lists. Pairs well with the Google Maps CEE Supplier Shortlist Builder and Website Intelligence + Contact Extractor when you already have company URLs.

Optional next step after Website Intel: schedule this actor on key pages (pricing, careers, legal) to catch updates.

What it does

  • Fetches each watch URL (HTTP first, Playwright + residential proxy fallback).
  • Normalizes HTML (strips scripts/styles/noise) and computes a SHA-256 content hash.
  • Compares against the previous snapshot in a named Apify Key-Value store (persists across scheduled runs).
  • Returns changed yes/no, isBaseline on first check, and a short diff summary.
  • Built for n8n, Make, Zapier, and vibe-coder agent workflows.

Who it's for

  1. Sales / ops teams watching competitor pricing or careers pages.
  2. Procurement teams monitoring supplier impresszum / compliance pages.
  3. Agencies running client watch lists on a schedule.
  4. Vibe coders wiring change alerts into Slack / Telegram / CRM.
  5. Market researchers tracking public page churn across SME lists.

What this actor is — and is not

This actor helps you detect public page content changes. It does not interpret legal meaning, prove intent, or replace a full visual regression suite.

Use the output for:

  • change alerts
  • watch-list scheduling
  • evidence that a page moved

Do not treat a hash change as automatic proof of a price or policy change without reading the page.

What data you get

FieldDescription
url, finalUrl, statusCodeRequest identity
contentHash, previousHashSHA-256 of normalized text
changed, isBaselineChange flags (baseline = first snapshot)
diffSummaryShort human-readable change hint
contentLength, previousContentLengthNormalized text lengths
checkedAt, previousCheckedAtTimestamps
errorSet when the page could not be fetched

How to use it

  1. Configure input — URL list, snapshot store name, proxy.
  2. Run on Apify cloud (recommended on a schedule) or locally with apify run.
  3. Download dataset as JSON, CSV, or Excel from the run page.

Input presets

Wise terms & privacy (Store example)

{
"urls": [
"https://wise.com/terms-and-conditions",
"https://wise.com/privacy-policy"
],
"maxUrls": 2,
"snapshotStoreName": "website-change-monitor-snapshots",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Published Store example: Wise terms & privacy — change monitor demo.

SME homepage, about & privacy (QA / prefill)

{
"urls": [
"https://www.vibecoderslife.com/",
"https://www.vibecoderslife.com/about",
"https://www.projectisconsulting.com/adatvedelem"
],
"maxUrls": 3,
"snapshotStoreName": "website-change-monitor-snapshots",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Store input prefill uses this small SME set so Apify automated QA finishes within 5 minutes. First run saves baselines (isBaseline: true); later scheduled runs report changed.

Competitor pricing watch

{
"urls": [
"https://example-competitor.com/pricing",
"https://example-competitor.com/careers"
],
"maxUrls": 20,
"snapshotStoreName": "website-change-monitor-snapshots",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

After Google Maps / Website Intel

{
"urls": [
"https://example-clinic.hu/",
"https://example-clinic.hu/impresszum",
"https://example-clinic.hu/arak"
],
"maxUrls": 50,
"snapshotStoreName": "website-change-monitor-snapshots",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output example

{
"url": "https://www.vibecoderslife.com/",
"finalUrl": "https://www.vibecoderslife.com/",
"statusCode": 200,
"contentHash": "e3b0c44298fc1c149afbf4c8996fb924…",
"previousHash": null,
"changed": false,
"isBaseline": true,
"diffSummary": "Baseline snapshot saved — no previous hash to compare.",
"contentLength": 18422,
"previousContentLength": null,
"checkedAt": "2026-07-20T10:20:00.000Z",
"previousCheckedAt": null,
"error": null
}

Snapshots, scheduling, and noise

FeatureSupport
Named KV storeDefault website-change-monitor-snapshots persists hashes across runs
NormalizationScripts/styles/comments stripped; whitespace collapsed
First runAlways isBaseline: true (expected for Store demos)
Schedule tipApify Schedule daily/hourly — only later runs show real changed: true

Tips to avoid Store QA timeouts

  • Keep prefill / public-task demos at maxUrls: 3.
  • Prefer fast SME pages over heavy enterprise SPAs.
  • Raise maxUrls only for paid production watch lists.

Secrets and local development

  • Never commit apify/website-change-monitor/.env — it is listed in .gitignore.
  • apify push excludes .env via .gitignore and .actorignore.
  • Docker builds exclude .env via .dockerignore.
  • On Apify cloud, customers configure Proxy via input — not from your local .env.
  • For local runs only, copy .env.example.env and add APIFY_TOKEN if you call the platform.
  • Only .env.example (placeholders, no real keys) is in git.

FAQ

Why is everything unchanged / baseline on the first run?
There is no previous hash yet. Schedule the actor or run it again — the second run compares against the saved snapshot.

Will cookie banners flip changed every day?
Normalization removes scripts/styles and collapses whitespace, which reduces noise. Highly dynamic personalization can still cause flips — watch stable pages (pricing, impresszum) when possible.

Do I need an LLM key?
No. Diff summaries are deterministic. No Apify AI event fee.

How many URLs can I check per run?
Up to 200 (maxUrls). Prefill/demo stays at 3.

Local development

cd apify/website-change-monitor
npm install
npm test
npm run build
npm run dry-run
apify run --input-file=INPUT.smoke.json

Dry run fetches the SME hero URLs twice (baseline → unchanged). Install Playwright Chromium once: npx playwright install chromium.

Pricing

Pay-per-event: $2.50 per 1,000 page checks (page-check event @ $0.0025), minimum charge $0.10 per run.

Enable Pay per event + usage in Apify Console so platform compute/proxy costs are passed through to users.

ActorRole
Google Maps CEE Supplier ShortlistDiscover local suppliers
Website Intelligence + ContactEnrich websites (contacts, tech, compliance)
Dealer / Distributor LocatorExpand brand locator pages
PDF Procurement Document ExtractorFind certs / reports / datasheets
Website Change Monitor (this Actor)Watch pages for changes

Each Actor runs standalone; use them as an optional suite when chaining discovery → enrichment → monitoring.

Feedback

Open an issue on the actor’s Apify page or contact Vibe Coder's Life.