TL;DR — Quick Summary
Deploy Changedetection.io to monitor website changes. Track price drops, content updates, API responses, and regulatory pages with notifications via email, Slack, Ntfy, and webhooks.
Why Changedetection.io?
Manually checking websites for updates is tedious. Changedetection.io does it for you:
- Price tracking — Get alerted when a product drops in price.
- Competitor monitoring — Know when competitors update pricing or features.
- Regulatory compliance — Track government policy pages for changes.
- API monitoring — Watch JSON endpoints for schema or value changes.
- Job listings — Get notified about new positions instantly.
Prerequisites
- Docker on any machine.
- At least 128 MB RAM.
Step 1: Deploy with Docker
docker run -d \
--name changedetection \
--restart=always \
-p 5000:5000 \
-v changedetection-data:/datastore \
dgtlmoon/changedetection.io
For JavaScript-rendered pages, add Playwright:
# docker-compose.yml
version: "3"
services:
changedetection:
image: dgtlmoon/changedetection.io
ports:
- "5000:5000"
volumes:
- ./data:/datastore
environment:
- PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000
restart: always
playwright-chrome:
image: dgtlmoon/sockpuppetbrowser:latest
restart: always
Step 2: Monitoring Strategies
| Use Case | CSS Selector | Check Interval |
|---|---|---|
| Product price | .price, #product-price | Every 2 hours |
| Blog/news updates | article, .post-list | Every 6 hours |
| API response | (JSON mode) | Every 15 minutes |
| Government regulation | #content, .regulation-text | Daily |
| Job listings | .job-list, #positions | Every hour |
| Competitor pricing | .pricing-table | Every 4 hours |
Step 3: Notification Setup
Configure in Settings > Notifications using Apprise URLs:
# Email
mailto://user:password@smtp.gmail.com?to=alerts@example.com
# Slack
slack://TokenA/TokenB/TokenC/#channel
# Ntfy
ntfy://ntfy.example.com/alerts
# Discord
discord://WebhookID/WebhookToken
# Telegram
tgram://BotToken/ChatID
Step 4: Advanced Filters
Use triggers to only alert on meaningful changes:
| Filter | Example | Purpose |
|---|---|---|
| Text added | ”In stock” appeared | Product back in stock |
| Text removed | ”Available” disappeared | Product sold out |
| Threshold | Price changed by >10% | Significant price drops |
| Ignore text | ”Last updated:“ | Skip dynamic timestamps |
Troubleshooting
| Problem | Solution |
|---|---|
| Too many false alerts | Add CSS selectors to target specific content; use “Ignore text” filters |
| JavaScript page not rendering | Enable Playwright browser container in docker-compose |
| Check timing is off | Verify the schedule format; minimum interval is 1 minute |
| Notifications not sending | Test the Apprise URL in Settings > Test Notification |
| Page requires login | Use the “Request headers” option to send cookies or auth tokens |
Summary
- One Docker container monitors unlimited URLs.
- CSS selectors target specific page elements to avoid false alerts.
- 70+ notification services via Apprise integration.
- Playwright option for JavaScript-rendered pages.