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 CaseCSS SelectorCheck Interval
Product price.price, #product-priceEvery 2 hours
Blog/news updatesarticle, .post-listEvery 6 hours
API response(JSON mode)Every 15 minutes
Government regulation#content, .regulation-textDaily
Job listings.job-list, #positionsEvery hour
Competitor pricing.pricing-tableEvery 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:

FilterExamplePurpose
Text added”In stock” appearedProduct back in stock
Text removed”Available” disappearedProduct sold out
ThresholdPrice changed by >10%Significant price drops
Ignore text”Last updated:“Skip dynamic timestamps

Troubleshooting

ProblemSolution
Too many false alertsAdd CSS selectors to target specific content; use “Ignore text” filters
JavaScript page not renderingEnable Playwright browser container in docker-compose
Check timing is offVerify the schedule format; minimum interval is 1 minute
Notifications not sendingTest the Apprise URL in Settings > Test Notification
Page requires loginUse 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.