changedetection.io watches web pages for you and tells you when something on them changes. You add a URL, choose how often it should be re-checked, and from then on the app keeps each version, produces a word, line or character-level diff of what moved, and sends the notification wherever you want it.
It is a Python (Flask) application with a browser interface, shipped as a Docker image, so docker run -d -p 5000:5000 dgtlmoon/changedetection.io gives you a working instance with no account, no external service and no page data leaving your host. Every watch keeps its own history, so a page can be reopened to see exactly what it said last week.
Alerts go out by e-mail, Discord, Slack, Telegram, generic webhook and a long list of further providers. An optional AI layer — any OpenAI-compatible endpoint, including a local Ollama, vLLM or llama.cpp server through LiteLLM — turns a raw diff into a plain-language summary such as “price dropped from $89.99 to $67.00”, and can suppress diffs that do not match a plain-English intent. A REST API and an MCP endpoint let other tools drive the watch list directly.
Docker is the supported route: the image runs on linux/amd64 and linux/arm64, stores everything in a mounted data volume and needs no separate database. A docker-compose.yml in the repository shows the volume and port wiring. A hosted subscription ($8.99/month, with proxies) exists for people who would rather not run infrastructure, but the self-hosted build is the same open-source application with nothing held back.
Uptime monitors such as Uptime Kuma answer “is it up?”; changedetection.io answers “did the content change?”. That covers the pages that never fail but quietly change: government notices, price lists, release notes that ship without an RSS feed, job boards and stock levels.