The GPU you wanted went back in stock at 2 a.m. By the time you checked, it was gone — and the store's "notify me" button clearly reports to someone's marketing database, not your inbox. Or your competitor changed pricing on their services page and nobody noticed until a client forwarded a screenshot.
changedetection.io watches page content, not just whether the server returns 200. ~32k GitHub stars, self-hostable, and built for the question "did this specific thing on the page change?" — price, stock status, legal text, careers listings, JSON API fields, even PDF contents.
What it actually does
changedetection.io is website change monitoring. Add a URL (or JSON API endpoint), set a check interval, and get notified when the content differs from the last snapshot. Diff view shows what changed — by word, line, or character.
Smart filtering. CSS selectors, XPath, JSONPath, and jq narrow monitoring to one price element or one API field instead of alerting every time the footer copyright year updates. Ignore rules, regex filters, and "trigger only when text contains X" cut noise dramatically.
JavaScript-heavy sites. Basic HTTP fetcher for static pages; add Playwright via sockpuppetbrowser in Docker Compose when the price lives behind client-side rendering. Browser Steps let you click login buttons, accept cookies, or fill search forms before the snapshot runs.
Restock and price tracking. Product page mode extracts schema.org metadata — upper/lower price thresholds, percentage change alerts, back-in-stock notifications. The use case that sells homelabbers on the tool.
Notifications everywhere. Apprise integration supports Discord, Slack, Telegram, email, ntfy, webhooks, Microsoft Teams, and dozens more. Pipe alerts into n8n via webhook when a change should trigger a workflow, not just an email.
JSON API monitoring. Watch API responses directly — filter with jq, alert when a field crosses a threshold. Handy for internal dashboards that don't have a proper alerting layer.
changedetection.io vs Uptime Kuma
We covered Uptime Kuma for availability — is the site up, is SSL expiring, is the port open?
changedetection.io answers did the content change? A site can return HTTP 200 while the price doubled or the homepage got defaced. Run both: Kuma for "is it alive," changedetection for "is it still correct." Many teams do.
Why self-host?
Sensitive URL lists stay private. Competitor pages, client staging sites, regulatory feeds, pricing you don't want on a SaaS vendor's server — self-hosting keeps the watch list on your Canadian VPS.
No per-watch billing. Monitor twenty URLs or two hundred on the same container. You pay for the server, not seat or watch limits.
Compliance and defacement. Security and RegTech teams use it for unexpected HTML changes on public-facing pages — PCI-adjacent monitoring without sending page content through a third-party SaaS if you self-host.
What running it takes
Docker is the standard path. Image: dgtlmoon/changedetection.io on port 5000.
docker run -d --restart always \
-p 127.0.0.1:5000:5000 \
-v changedetection-data:/datastore \
--name changedetection.io \
dgtlmoon/changedetection.io
Or docker compose up -d from the project repo — add sockpuppetbrowser when you need JavaScript rendering. Mount /datastore persistently; that's your watches and history.
Sizing: lightweight for basic HTTP watches — 512 MB to 1 GB RAM is often enough. Playwright sidecar and many concurrent checks want 2 GB+. Respect robots.txt and site terms; aggressive polling gets you blocked.
HTTPS via reverse proxy; set BASE_URL so notification links point at your public domain. Bind to localhost behind the proxy unless you want the admin UI on the open internet — lock it down if exposed.
Back up the datastore volume. Test a notification channel before relying on it for restock alerts at 2 a.m.
Who it's for (and who should skip it)
Good fit: deal hunters tracking restocks, agencies watching competitor pricing, ops teams monitoring legal or policy pages, homelabbers who want price alerts without SaaS, developers watching JSON APIs and career pages.
Maybe skip it: if you only need uptime checks — Uptime Kuma is simpler for that. If you won't tune CSS filters, you'll drown in footer-change alerts until you do. If monitoring hundreds of JS-heavy sites without a browser fetcher, results will disappoint.
Hosting it in Canada
We run changedetection.io on Canadian Docker hosting — persistent datastore backups, TLS, optional sockpuppetbrowser for JS sites, and ntfy/Slack notification wiring. Pair with Uptime Kuma on the same VPS when you want availability and content monitoring together.
Tell us how many watches and whether you need JavaScript rendering — we'll size RAM and set up the compose stack so restock alerts actually fire.