changedetection.io
dgtlmoon · Data engineering
GitHub stars
35,379Awaiting first sync
No measured star history yet
What is changedetection.io?
changedetection.io checks the web pages you care about and tells you when something on them changes. It suits price and stock tracking, watching competitor or regulator pages, and following data feeds. You run it on your own server, so your list of watched URLs stays private.
changedetection.io watches web pages and tells you when they change. It can follow a whole page or only selected parts, using CSS, XPath, JSONPath or jq filters, and it tracks product prices, restocks and PDF text. Alerts go to email, Slack, Discord, Telegram, Microsoft Teams, webhooks and many other services through the Apprise library.
Core capabilities
- Filters pages with CSS, XPath, JSONPath, jq, regular expressions and trigger text.
- Tracks product prices and restocks, with upper, lower and percentage limits.
- Sends alerts through Apprise to email, Slack, Discord, Teams, webhooks and more.
Choose exactly what to watch
Each watch can target part of a page with CSS selectors, XPath 1 and 2, JSONPath or jq, and filters such as Trigger on text, Ignore text and Extract text accept regular expressions. A fast plain HTTP fetcher handles simple pages, while a Chrome-based fetcher through Playwright or WebDriver handles sites that need JavaScript. With the Chrome fetcher, Browser Steps can log in, click buttons or fill in forms before each check, and the Visual Selector lets you pick elements on screen. PDF files can be watched for text, file size and checksum changes.
- Filters
- XPath
- jq
- Browser Steps
Alerts, schedules and AI summaries
Notifications use the Apprise library, so one watch can alert email, Slack, Discord, Telegram, Microsoft Teams, Office 365, webhooks and many other services. Titles and bodies can be customised with Jinja2 templates. Checks can run on a schedule in any timezone and be limited to certain days or hours. If you connect your own LLM provider, such as OpenAI, Gemini, Anthropic or a local Ollama server, it can write plain-language change summaries and drop changes that do not match a rule you describe. A REST API manages watches, tags and notifications from other tools.
- Notifications
- Apprise
- Scheduling
- AI
- REST API
Run it yourself under Apache-2.0
Run the dgtlmoon/changedetection.io Docker image with a datastore volume on port 5000, or use the docker-compose.yml in the repository, which has an optional browser service for JavaScript sites. It can also be installed from PyPI with pip3 install changedetection.io, and runs on Windows and on Raspberry Pi and other ARM devices. The code is released under the Apache-2.0 licence, though the changedetection.io name and logo are not covered by it. The same author sells a paid hosted subscription at changedetection.io that includes proxies and a Chrome browser.
- Self-hosted
- Docker
- pip
- Apache-2.0
Where it fits
Use cases
- 01
Track competitor prices and stock levels
Add the product page as a watch and turn on Re-stock & Price detection for single product pages. Set an upper or lower price, or a percentage change, to decide when you are notified. The dashboard shows price and restock history as a graph so you can spot patterns.
- 02
Follow regulator and policy pages
Add the pages of a regulator, government department or supplier's terms as watches. Use Remove text by selector or Ignore text to skip menus and footers, and set a schedule such as business hours only. Each change is shown as a diff by word, line or character, and a screenshot can be sent with the notification.
- 03
Watch an API or data feed for changes
Add a JSON endpoint as a watch and use a JSONPath or jq filter to keep only the fields you care about. A json: or jq: filter can also pull structured data embedded in an HTML page, such as a product's price. Send each change on to another system with a JSON notification or webhook.