You check a product page to see if it's back in stock. You bookmark a government site to catch when the rules change. You manually revisit a competitor's pricing page every Monday. All of this is a solved problem: changedetection.io watches those pages for you and sends a notification the moment anything changes.
32,000+ GitHub stars, Apache-2.0, Python, Docker single command, $8.99/mo cloud or self-hosted free. Now with AI-powered change filtering and summaries via any LLM.
What changedetection.io is
changedetection.io (changedetection.io, github.com/dgtlmoon/changedetection.io) is a self-hosted website change detection and monitoring tool. Python backend, Docker deployment, browser-based UI. Apache-2.0 licensed. Built by dgtlmoon (Web Technologies s.r.o., Europe). Cloud plan at $8.99/month (5,000 URLs, Chrome browser included). Self-hosted free.
Core workflow
Add a URL. Set a check interval (5 minutes+). Choose what to monitor (whole page or a specific element). Set a notification destination. When the page changes, you get an alert. That's the core loop - everything else is refinement of that loop.
Fetching - static and JavaScript pages
Two fetching modes: fast built-in HTTP fetcher for static pages, and Playwright/WebDriver Chrome fetcher for JavaScript-heavy sites. The Chrome fetcher handles SPAs, dynamic content, pages behind cookie consent banners - anything that doesn't work with a simple HTTP GET. Switch per-watch based on what the target site needs.
Visual Selector - target exactly what you care about
Point and click to select exactly which element on the page to monitor. Requires Playwright. Instead of watching the entire page (and getting noise from ads, timestamps, cookie banners), you click the element - a price, a stock status badge, a news headline - and changedetection.io monitors only that. Returns the CSS selector for that element automatically.
Browser Steps - interact before monitoring
Some pages require interaction before you can see the content you want to monitor. Browser Steps lets you script that interaction: fill in a search field, click a button, log in with username and password, accept cookie consent, navigate to a specific state. After the steps run, the Visual Selector targets the element, and change detection proceeds from there. Useful for monitoring content behind login walls, search results, filtered product listings.
AI-powered change detection (2026)
Two AI features, both available in self-hosted with your own API key (available in the cloud plan from June 2026):
AI change rules - write a plain-English intent: "notify me only when the price drops below 50 EUR", "alert me when the item comes back in stock", "ignore navigation and footer changes". The LLM evaluates every detected diff against your intent and silently suppresses irrelevant changes. Fewer false positives, zero noise.
AI change summaries - instead of a raw diff, your notification reads "Price dropped from 89.99 to 67.00" or "3 new products added to the listing". Works globally or per-watch, with full control over the prompt.
Works with OpenAI, Gemini, Anthropic, Ollama, vLLM, LM Studio, LM Studio, LiteLLM, or any OpenAI-compatible endpoint. GPT-4o-mini and Gemini Flash handle this well at fractions of a cent per check.
Selectors - extract exactly what changed
CSS selectors, XPath (1.0 with LXML re:test/re:match/re:replace), JSONPath, jq. For JSON APIs - monitor API endpoints directly, extract specific fields, get notified when a value changes. Combine with regex filters to ignore specific patterns, or text triggers to only alert when a specific word appears or disappears.
Notifications - 85+ formats via Apprise
changedetection.io uses the Apprise library for notifications. Any service Apprise supports works: Discord, Slack, Telegram, Email, Matrix, NTFY, Rocket.Chat, Office 365, PagerDuty, Pushover, Gotify, ntfy.sh, webhooks, and 75+ more. Set multiple notification URLs per watch. Include a screenshot with the notification. Custom notification templates.
Restock and price monitoring
Dedicated restock detection mode: changedetection.io understands "in stock" vs "out of stock" language patterns and common e-commerce structured data. Set a watch to restock mode, point at a product page, get notified the moment the item comes back. Price change mode extracts prices and notifies on drops. Both work with the Visual Selector for precise targeting on complex product pages.
Other useful features
RSS feed output: any watch can generate an RSS feed of changes, for consumption in your RSS reader. JSON API for programmatic access and integration. Import a list of URLs in bulk. Chrome extension to add the current page directly from the browser. Per-watch proxy configuration. Conditional triggers (only notify when a specific text appears or disappears). Ignore text rules (always ignore this pattern). Recheck schedule overrides per watch. Email screenshot on change.
Self-hosting
One Docker command: docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore dgtlmoon/changedetection.io
Visit http://localhost:5000. No database setup, no configuration files - data stored in the mounted volume as JSON. Add the Playwright Chrome fetcher as a second container for JavaScript support. Minimal resource footprint on a basic VPS or Raspberry Pi.
Use cases
Price and restock monitoring (e-commerce, limited releases, sold-out products). Government and regulatory page monitoring (rules change quietly). Security advisory monitoring (CVE pages, vendor security bulletins). Real estate listing changes. Competitor content monitoring. Job board new listings. Software release pages. API endpoint monitoring for data changes. Compliance monitoring for legal document changes.
vs paid alternatives
Visualping, Distill.io, and similar services charge per check or per URL, with data going through their servers. changedetection.io self-hosted: unlimited URLs, unlimited checks, your data stays on your machine, free. The $8.99/month cloud plan is half the price of comparable hosted services and includes a real Chrome browser for JavaScript sites.
My take
changedetection.io does one thing and does it well: tells you when a web page changed. The AI addition in 2026 turns it from a blunt tool into a precise one - instead of "something on this page changed", you get "the price you were tracking dropped below your threshold". Combined with Playwright Browser Steps for login-gated content and the Visual Selector for pinpoint targeting, it covers every monitoring use case I've run into. Runs on a Raspberry Pi, costs nothing to self-host, takes two minutes to set up.
PIPOLINE · DEVOPS CONSULTING
Need help setting up changedetection.io for your team?
Docker Compose, Traefik, Playwright container, AI integration with Ollama or OpenAI, notification routing to Slack or Discord, and watch configurations for your specific monitoring use cases.
Get in touch at pipoline.com
Member discussion