# changedetection.io — Self-Hosted Website Change Monitoring > changedetection.io monitors websites for content changes and sends alerts. Track price drops, restock alerts, content updates, and page modifications automatically. ## Install Save in your project root: ## Quick Use ```bash docker run -d --name changedetection -p 5000:5000 -v changedetection-data:/datastore dgtlmoon/changedetection.io:latest ``` Open `http://localhost:5000` — add a URL and start monitoring for changes. ## Intro **changedetection.io** is a self-hosted website change detection and monitoring tool. It periodically checks web pages for content changes and sends notifications via email, Slack, Discord, Telegram, webhooks, and 70+ notification channels. Perfect for tracking price drops, monitoring competitor sites, catching restock alerts, and watching for content updates. With 31.1K+ GitHub stars, changedetection.io is the most popular open-source website monitoring tool, used by individuals and businesses for competitive intelligence, price monitoring, and content tracking. ## What changedetection.io Does - **Content Monitoring**: Detect any text change on any web page - **Visual Diff**: Highlighted visual comparison showing exactly what changed - **CSS/XPath Filters**: Monitor specific page sections (price, stock status, etc.) - **JavaScript Rendering**: Support for JavaScript-heavy sites via Playwright browser - **Price Tracking**: Extract and track prices with notifications on drops - **Notifications**: 70+ channels via Apprise (email, Slack, Discord, Telegram, webhooks, etc.) - **Scheduling**: Configurable check intervals per watch (minutes to days) - **Import/Export**: Bulk import URLs, export monitoring configurations - **API**: REST API for programmatic management - **Tags & Groups**: Organize monitored sites with tags ## Architecture ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Web UI │────▶│ changedetection│──▶│ Target │ │ (Flask) │ │ .io Server │ │ Websites │ └──────────────┘ └──────┬───────┘ └──────────────┘ │ ┌─────────────┼─────────────┐ │ │ │ ┌──────┴──┐ ┌─────┴───┐ ┌─────┴───┐ │Playwright│ │ Apprise │ │ SQLite │ │(JS sites)│ │ (Notify)│ │ (Data) │ └──────────┘ └─────────┘ └─────────┘ ``` ## Self-Hosting ### Docker Compose (with Playwright) ```yaml services: changedetection: image: dgtlmoon/changedetection.io:latest ports: - "5000:5000" environment: PLAYWRIGHT_DRIVER_URL: ws://playwright-chrome:3000 BASE_URL: http://localhost:5000 volumes: - changedetection-data:/datastore depends_on: - playwright-chrome playwright-chrome: image: dgtlmoon/sockpuppetbrowser:latest restart: unless-stopped environment: SCREEN_WIDTH: 1920 SCREEN_HEIGHT: 1080 volumes: changedetection-data: ``` ## Use Cases ### Price Drop Monitoring ``` Watch: https://amazon.com/product-page CSS Filter: #priceblock_ourprice Trigger: Text changed Notification: "Price changed from $99.99 to $79.99!" → Send to Telegram + Email ``` ### Competitor Monitoring ``` Watch: https://competitor.com/pricing CSS Filter: .pricing-table Check every: 6 hours Notification: "Competitor pricing page changed!" → Send to Slack #competitive-intel ``` ### Restock Alerts ``` Watch: https://store.com/limited-edition-item CSS Filter: .stock-status Trigger: Text contains "In Stock" Notification: "Item is back in stock!" → Send to Discord + Push notification ``` ### Content & News Monitoring ``` Watch: https://gov-website.com/policy-updates CSS Filter: .content-area Ignore: .sidebar, .footer, .ads Check every: 1 hour Notification: "Government policy page updated" → Send via Email ``` ## Key Features ### CSS/XPath Selectors ``` # Monitor only the price CSS: .product-price XPath: //span[@class="price"] # Monitor article content, ignore sidebar CSS: article.main-content CSS Remove: .ads, .related-posts, .comments # Monitor a table CSS: table.pricing-comparison ``` ### Notification Channels ``` Email (SMTP) Slack Discord Telegram ntfy Gotify PagerDuty Pushover Pushbullet Microsoft Teams Webhooks Matrix IFTTT Home Assistant Custom scripts ... and 60+ more via Apprise ``` ### Visual Diff changedetection.io shows exactly what changed: ``` Before: "Regular Price: $99.99" After: "Sale Price: $79.99" ← highlighted in green Removed: "Regular Price: $99.99" ← highlighted in red ``` ### API ```bash # Add a new watch curl -X POST http://localhost:5000/api/v1/watch -H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" -d '{"url": "https://example.com", "tag": "competitor", "minutes_between_check": 60}' # List all watches curl http://localhost:5000/api/v1/watch -H "x-api-key: YOUR_API_KEY" ``` ## changedetection.io vs Alternatives | Feature | changedetection.io | Visualping | Distill.io | Huginn | |---------|-------------------|------------|------------|--------| | Open Source | Yes | No | No | Yes | | Self-hosted | Yes | No | Browser ext. | Yes | | JS rendering | Playwright | Yes | Yes | Manual | | Visual diff | Yes | Yes | Yes | No | | Notifications | 70+ channels | Email | Email + more | Flexible | | Price tracking | Yes | No | Yes | Custom | | Ease of use | Easy | Easy | Easy | Complex | | Pricing | Free (self-host) | $10+/mo | Free + paid | Free | ## 常见问题 **Q: 可以监控需要登录的页面吗?** A: 可以。通过 Playwright 浏览器可以配置登录步骤(填写表单、点击按钮),支持 Cookie 注入和 Header 自定义。 **Q: 检查频率可以设到多高?** A: 最低可以设置为每分钟检查一次。但建议对大多数网站保持 15-60 分钟的间隔,避免被目标网站封禁 IP。 **Q: 需要 Playwright 容器吗?** A: 如果你监控的网站是纯 HTML(不依赖 JavaScript 渲染),不需要 Playwright。对于 React/Vue/Angular 等 SPA 网站,需要 Playwright 来渲染 JavaScript 内容。 ## 来源与致谢 - GitHub: [dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) — 31.1K+ ⭐ - 官网: [changedetection.io](https://changedetection.io) --- Source: https://tokrepo.com/en/workflows/ed2533e6-34d8-11f1-9bc6-00163e2b0d79 Author: AI Open Source