changedetection.io: Self-Hosted Website Monitoring with AI Filters and Price Alerts
Best and simplest tool for website change detection, web page monitoring, and website change alerts. Perfect for tracking content changes, price drops, restock alerts, and website defacement monitoring:all for free or enjoy our SaaS plan!
At a glance
- What is it?
- changedetection.io is a Python-based, Apache-2.0 licensed tool for tracking changes on web pages, PDFs, and JSON APIs. It stands out for its AI-powered change rules and flexible notification options, but the AI features are currently only in the hosted service.
- Who is it for?
- Adopt changedetection.io if you need a self-hosted, free website change monitor with granular filters, PDF tracking, and multi-channel notifications, and you are comfortable running Docker or Python. Skip it if you rely on the AI change rules or visual selector, because those are only in the paid hosted service as of June 2026.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Problem It Solves and Who It Is For
changedetection.io solves the problem of knowing when a webpage changes without manually refreshing it. It is for people who need to track price drops, restock alerts, defacement, or regulatory updates. The README lists use cases like monitoring government sites, job portals, and JSON APIs. It also covers PDF text changes and checksums. The target user is someone who wants control over the monitoring frequency and notification channels, and who prefers self-hosting over paid services. The project explicitly notes that with paid alternatives, 'you are the product,' which signals a privacy-conscious audience. It is not for people who want a fully managed service without setup, unless they choose the $8.99/month hosted option.
How It Works: Fetchers, Filters, and Diffing
The core mechanism is periodic fetching of a page, extracting text, and comparing it to the previous version. You can choose between a fast non-JS fetcher and a Chrome-based fetcher via WebDriver or Playwright. The README mentions 'Switch between fast non-JS and Chrome JS based fetchers.' For pages that require JavaScript to render content, you need the Playwright or WebDriver fetcher. The tool supports xPath 1 and 2, CSS selectors, JSONPath, and jq for targeting specific elements. You can also apply filters like 'Trigger on text,' 'Remove text by selector,' 'Ignore text,' and 'Extract text,' using regex. Before extraction, you can execute JavaScript, which is useful for logging in. After a change is detected, it sends notifications via Discord, Email, Slack, Telegram, Webhook, and more. The diff view lets you see changes by word, line, or character.
Getting It Running: Commands and Config Keys
The README does not give explicit installation commands, but the project is Python-based and offers Docker. The homepage and repository imply a Docker image is the standard way. You would pull the image and run a container, mapping a volume for persistent storage. The configuration is done through the web UI after startup. Key settings include the watch URL, the check frequency, the fetcher type, and notification channels. For the AI features, you configure a provider like OpenAI, Gemini, Anthropic, or Ollama, and select 'OpenAI-compatible (vLLM, LM Studio, llama.cpp)' for self-hosted endpoints. The README mentions pointing to your server's '/v1' URL. For browser steps, you enable Playwright and then add steps like filling text boxes or clicking buttons. The Visual Selector tool is available only when connected to a Playwright content fetcher, which is included in the subscription service according to the README.
AI-Powered Alerts: The Promise and the Catch
The AI change detection rules let you write plain-English intents like 'notify me only when the price drops below $50.' The AI evaluates each diff against that intent and suppresses irrelevant changes. The AI change summaries turn raw diffs into readable messages like 'Price dropped from $89.99 to $67.00.' The README notes that GPT-4o-mini and Gemini Flash handle this well at low cost, and you can run locally with Ollama, vLLM, LM Studio, or any OpenAI-compatible endpoint. However, a critical detail: the README states 'Note: Available in our subscription/hosted service from June 2026.' That means as of the last push (July 2026), these AI features are not in the self-hosted open source version. This is a significant limitation for self-hosters who want the smart filtering. The visual selector is also tied to the hosted service's Playwright fetcher. So the headline features are not part of the open source package.
Limitations and Wrong Tool Cases
One genuine limitation is that the AI features are not available in the self-hosted version, as noted above. Another is that the non-JS fetcher may miss content on JavaScript-heavy sites, so you must rely on Playwright or WebDriver, which adds complexity. The README says 'Requires Playwright to be enabled' for browser steps, which implies additional setup. Also, the project's focus on privacy means you run your own infrastructure, which is a cost in time and maintenance. It is the wrong tool if you need to monitor many sites with heavy JavaScript and do not want to manage a Playwright service. It is also wrong if you want a quick hosted solution without the subscription fee, because the free self-hosted version lacks the AI filters that reduce noise. For simple checks on static pages, the tool works, but for dynamic content, you must invest in the fetcher setup.
Alternatives and How They Differ
A common alternative is a hosted service like Visualping or Distill.io, which offer similar change detection with a point-and-click interface. The key difference is that these are closed-source, and you rely on their infrastructure, which the README warns against for sensitive URLs. Another alternative is a simple cron job with curl and diff, which gives you full control but lacks the advanced filters, notification integrations, and visual diff. changedetection.io sits between those: it is self-hosted but provides a web UI and rich features. The proxy per watch configuration is a differentiator, allowing you to route requests through different proxies, which is useful for avoiding IP blocks. The README recommends Bright Data as a proxy service, which is a commercial tie-in. The alternative approach is to use a generic monitoring tool like Uptime Kuma, which focuses on availability rather than content changes, so it would not detect a price drop on a page that stays up.
Maintenance, Upgrades, and License Implications
The project is under active development, with recent releases in July 2026 and May 2026, so you can expect regular updates. The license is Apache-2.0, which permits commercial use, modification, and distribution, with the requirement to preserve copyright notices. This is permissive, so you can fork it for internal use without open-sourcing your changes. However, the README mentions a hosted SaaS plan, which indicates that the project's business model relies on the hosted service, not on restricting the open source code. That means the open source version may lag behind in features like the AI filters. Maintenance cost includes updating the Docker image, managing the database (likely SQLite), and handling any breaking changes. You also need to maintain the fetcher integrations if you use Playwright or WebDriver. There is no mention of a migration path or upgrade notes in the README, so you should test upgrades in a staging environment. The repository is not archived, and the last push is recent, which suggests continued support.
Editorial conclusion
Adopt changedetection.io if you need a self-hosted, free website change monitor with granular filters, PDF tracking, and multi-channel notifications, and you are comfortable running Docker or Python. Skip it if you rely on the AI change rules or visual selector, because those are only in the paid hosted service as of June 2026. Before deploying, verify that your target sites do not block non-JS fetchers, and test the Playwright or WebDriver integration if you need JavaScript rendering.
Community notes