changedetection.io is a self-hosted website change detection and monitoring tool designed for developers, DevOps teams, and power users who need to track changes on websites without relying on paid SaaS solutions. It detects content modifications, price fluctuations, restock events, PDF updates, and even website defacement by comparing page snapshots over time. Built with Python and powered by Playwright or WebDriver for JavaScript-heavy sites, it provides a full-featured web interface with no registration required. The tool is ideal for those who value privacy, want full control over their monitoring data, or need advanced features like conditional alerts and browser automation that other services lack.
It supports both lightweight HTTP fetching for static pages and full-browser emulation via Playwright to handle dynamic content, login flows, and AJAX-loaded elements. With built-in visual selectors, JSONPath/XPath/CSS filters, proxy support, and notifications to Discord, Slack, Email, Telegram, and more, changedetection.io offers enterprise-grade monitoring capabilities in a free, open-source package. Users can also leverage its Chrome extension to instantly add any webpage they’re viewing to their monitor list.
What You Get
- Browser-based change detection with Playwright/WebDriver - Monitor dynamic websites that require JavaScript execution by using an integrated Chrome browser instance to render pages, log in, and interact with elements before detecting changes.
- Visual Selector tool - Point-and-click interface to select specific HTML elements (e.g., price tags, product names) for monitoring, eliminating the need to write XPath or CSS selectors manually.
- Browser Steps automation - Configure multi-step interactions like logging in, filling forms, clicking buttons, or accepting cookies before monitoring a page — enabling detection behind authentication walls.
- Conditional alerts - Trigger notifications only when specific conditions are met, such as price above/below a threshold, presence/absence of keywords, or percentage change thresholds.
- PDF monitoring - Track text changes, file size, and checksums of PDF files to detect updates in legal documents, reports, or product manuals.
- JSON API and JSONPath monitoring - Extract and compare data from JSON responses using JSONPath or jq filters to monitor API endpoints for changes.
- Multiple notification channels - Send alerts via Discord, Slack, Telegram, Email, Webhook, Microsoft Teams, Gitter, and over 50 other services via Apprise integration.
- Screenshot inclusion in alerts - Automatically attach a visual screenshot of the page when a change is detected for immediate context.
- Per-watch proxy configuration - Route each monitored URL through a different proxy server to bypass geo-restrictions or avoid rate limits.
- Customizable scheduling - Set check intervals per watch, limit monitoring to business hours or specific time zones, and schedule checks for weekends only.
- Chrome extension integration - Install the browser extension to instantly add any page you’re viewing directly into your monitoring list with one click.
- RSS feed generation - Automatically generate RSS feeds based on detected changes, enabling integration with any RSS reader or automation workflow.
Common Use Cases
- Building a price drop tracker for e-commerce - Monitor product pages on Amazon, Best Buy, or Nike to get notified when prices drop below a set threshold using the built-in price detection and conditional alerts.
- Tracking government or regulatory updates - Watch official websites for changes to laws, health advisories, or policy documents — critical for compliance teams in finance or healthcare.
- Restock alerts for limited products - Monitor product pages on retailers like StockX, Foot Locker, or Discogs to get instant alerts when rare sneakers or Pokémon cards return to stock.
- Website defacement monitoring for security teams - Detect unauthorized changes to corporate or public-facing websites, with screenshots and notifications to respond quickly.
- Monitoring job portals for new openings - Set up watches on company career pages or BambooHR to get notified when new positions are posted, automating your job search.
- DevOps teams monitoring critical endpoints - Track API responses or JSON feeds for service health, version updates, or configuration changes without building custom scrapers.
- Personal productivity automation - Track your favorite blog, news site, or whiskey retailer to know when new content or deals are published — without subscribing to emails.
- RegTech and compliance monitoring - Automate tracking of regulatory filings, SEC disclosures, or EU directive updates to stay compliant without manual checks.
- Monitoring PDF documents for legal changes - Watch for amendments in contracts, terms of service, or academic publications by detecting text or checksum changes.
- Cross-platform web automation glue - Use change detection to trigger custom webhooks when a webpage updates, integrating with Home Assistant, Zapier, or internal tools.
Under The Hood
Changedetection.io is a web-based change monitoring tool designed to detect alterations in web content, particularly useful for tracking dynamic or JavaScript-heavy websites. It provides a flexible and extensible platform that supports various fetching strategies, notifications, and user interfaces.
Architecture
The project adopts a monolithic architecture with clear module boundaries and separation of concerns. It emphasizes modularity through design patterns such as strategy and plugin-based extensibility.
- Follows a monolithic structure with well-defined layers for content fetching, diffing, and notification handling
- Implements strategy pattern to support multiple content retrieval methods like browser automation and direct HTTP requests
- Employs a plugin architecture that allows for extensibility in functionality and notification channels
- Organizes components to support scalable growth while maintaining a cohesive core structure
Tech Stack
The project is built using Python and Flask, leveraging a wide array of libraries to deliver its functionality across web scraping, UI rendering, and user interaction.
- Built with Python 3.10+ and Flask, complemented by Jinja2 for templating and Babel for internationalization
- Integrates powerful libraries such as requests, Playwright, Selenium, and OpenCV for content fetching and parsing
- Utilizes Docker for containerization and pre-commit hooks with ruff for linting and code consistency
- Employs pytest for testing, with support for CLI-based test execution and shell scripts for automation
Code Quality
The codebase reflects a mature approach to quality with structured testing, consistent error handling, and adherence to Python conventions.
- Maintains a comprehensive test suite covering core functionalities and user workflows
- Applies consistent error handling and logging practices using loguru for improved observability
- Enforces code style and linting through pre-commit hooks and ruff, ensuring maintainable standards
- Demonstrates moderate learning curve due to clear patterns and well-organized code structure
What Makes It Unique
The tool distinguishes itself through its innovative handling of JavaScript-heavy content and its extensible plugin ecosystem.
- Offers unique support for headless browser automation to detect changes in complex, dynamically rendered web pages
- Provides a rich plugin architecture that enables custom fetching strategies and notification integrations
- Combines modular design with a wide variety of built-in notification channels for flexible alerting
- Supports ARM-based systems and multi-stage Docker builds, enhancing deployment flexibility across environments