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.