FR
live

Changedetection.io monitors any website without code — and tells you before your customers find out

Changedetection.io hit 32,500 GitHub stars in July 2026 with v0.55.8 adding LLM-powered change filtering and Playwright-based JavaScript rendering. A ten-line Docker Compose file is all it takes to track your competitors’ pricing pages, stock availability, and TOS changes before they even know they changed them.

Changedetection.io monitors any website without code — ETTAYEB illustration

Changedetection.io crossed 32,500 GitHub stars in July 2026. Version 0.55.8, released July 13, 2026, shipped LLM-powered change summaries and intelligent noise filtering — features that turn a website watcher into a competitive intelligence tool. Created by dgtlmoon under the Apache 2.0 license, it monitors content, prices, stock status, and visual diffs from a single Docker container in ten lines of YAML. If your competitor changes their pricing on a Friday night, you’ll know Saturday morning — not Monday when your clients break the news.

Five detection modes, not one

Most “website monitors” compare HTML checksums and call it a day. Changedetection.io ships five distinct detection modes that you can stack on a single watch.

Text diffing. Word-by-word, line-by-line, or character-by-character comparison with a built-in diff viewer that highlights additions in green and deletions in red. You see exactly what moved in a TOS clause, a price tag, or a security advisory — no need to re-read the whole page.

Visual screenshot diffing. When Playwright is enabled (headless Chromium), Changedetection.io captures a screenshot on each check and compares the pixels. This catches changes on JavaScript-heavy pages where the HTML stays the same but the rendered output shifts — landing pages, dashboards, dynamic pricing widgets. The feature is included in the $8.99/month SaaS plan and available self-hosted via the sockpuppetbrowser container.

Price and stock monitoring. Flip the “Re-stock & Price detection” switch and Changedetection.io automatically extracts product metadata (schema.org, Open Graph) from any e-commerce page. You get a price dashboard with configurable thresholds: alert me if the price drops below $50, falls by more than 15%, or climbs back above a ceiling. Same logic for stock: the product flips from “Out of Stock” to “In Stock,” you get the notification.

JSON monitoring. Changedetection.io parses JSON API responses with JSONPath or jq. Monitor a pricing endpoint, a stock availability API, or a structured data feed without writing a single scraper. It also extracts JSON embedded in HTML (application/ld+json) — ideal for tracking prices on e-commerce sites that only expose them through schema.org markup.

PDF monitoring. Track text changes inside PDFs, plus file size and checksum differences. A new version of a regulated tariff, a rate card, or a documentation PDF triggers an alert without any manual checking.

The real power lies in the filters. Isolate the relevant part of the page with a CSS selector, xPath, or the Visual Selector tool (click the element in the browser, Changedetection.io generates the selector). Layer on conditional trigger rules — “only alert if the price is below $100,” “ignore footer and navigation changes” — and you eliminate the noise that makes other tools unusable.

Playwright — a real browser, not a curl impersonator

The Achilles’ heel of change detection tools has always been JavaScript. A React, Vue, or Next.js page that renders content dynamically looks blank to a plain HTTP fetch. Changedetection.io solves this with Playwright, a headless Chromium browser driven over the WebSocket protocol.

Self-hosting Playwright takes one extra container. Add sockpuppetbrowser to your compose file, uncomment PLAYWRIGHT_DRIVER_URL, and every watch that needs JS gets full rendering — CSS, fonts, Canvas, the lot.

The Playwright layer also unlocks Browser Steps: a recorded sequence of actions replayed before each check. Real examples from the community:

  • Log into a customer account to monitor an authenticated page.
  • Accept cookies and dismiss popups that hide content.
  • Fill a search form and capture the results page.
  • Add an item to the cart to verify the price doesn’t change between the product page and checkout.
  • Switch currency or country on an international e-commerce site.

Browser Steps are recorded through the web UI — no Puppeteer scripts to maintain, no code required. That’s the “without writing code” in this article’s title.

85 notification channels, one URL format

Changedetection.io uses the Apprise library to push notifications to 85 different services. The model is dead simple: paste a notification URL into the watch’s edit tab, and alerts fire automatically when a change is detected.

The channels that matter most in 2026:

  • Messaging: Discord, Slack, Telegram, Matrix, Microsoft Teams, Rocket.Chat, Google Chat, Mattermost, Zulip.
  • Email: Standard SMTP, Office 365, or through Apprise.
  • Push: Ntfy, Gotify, Pushover, Pushbullet.
  • Webhooks: Arbitrary JSON to any HTTP endpoint — perfect for triggering an n8n workflow, a Zapier webhook, or a custom notification.
  • ITSM and on-call: PagerDuty, OpsGenie, SIGNL4.

Every notification supports Jinja2 templating for the title and body. Include the price drop percentage, the product name, the change timestamp — right in the Slack or Telegram alert, no dashboard visit needed.

AI that filters the noise — available since June 2026

The feature that pushes Changedetection.io into a different league in 2026 is LLM integration. Available in the SaaS plan since June 2026 and rolling into the self-hosted version, it works on two levels.

Natural-language change rules. Instead of writing a complex CSS filter, you type something like “notify me only when the price drops below $50” or “ignore navigation and footer changes.” The LLM evaluates every detected diff against your intent and silently suppresses everything irrelevant. Zero false positives, zero noise.

Smart change summaries. Instead of staring at a raw diff, your notification reads “Price dropped from $89.99 to $67.00” or “3 new products added to the listing.” Summaries work globally or per-watch, with full control over the prompt sent to the model.

On the model side, use whatever you’re already paying for: GPT-4o-mini and Gemini Flash handle these tasks at fractions of a cent per check. If you refuse to send your data to a third-party provider, Changedetection.io supports Ollama, vLLM, LM Studio, or any OpenAI-compatible self-hosted endpoint — just point it at your local server’s /v1 URL. The integration runs through LiteLLM, which gives access to 100+ providers and models.

A Docker Compose file, two minutes

The basic setup fits in ten lines. The advanced version with Playwright takes twenty.

yaml
services:
  changedetection:
    image: dgtlmoon/changedetection.io:latest
    container_name: changedetection
    ports:
      - "5000:5000"
    volumes:
      - changedetection-data:/datastore
    environment:
      - PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/?stealth=1
    restart: unless-stopped

  playwright-chrome:
    image: dgtlmoon/sockpuppetbrowser:latest
    container_name: playwright-chrome
    restart: unless-stopped
    shm_size: "2gb"

volumes:
  changedetection-data:
bash
docker compose up -d

Open http://localhost:5000, paste a URL into the “Add Watch” field, and you’ll receive your first alert two minutes later. No signup, no page limits, no quotas. Watch data lives in the Docker volume changedetection-data — a daily rsync to external storage handles backups.

Three precautions before going to production:

  1. SSL reverse proxy. Put Nginx or Caddy in front of port 5000. Your dashboard exposes the full list of URLs you’re watching — and potentially session cookies if you use Browser Steps.
  2. Admin password. Enable password protection in settings. The interface ships without authentication by default.
  3. Playwright resources. The sockpuppetbrowser container needs at least 2 GB of RAM (shm-size=2g). On a budget VPS, set up swap or keep your Playwright-requiring watches under a dozen.

Changedetection.io vs. the alternatives

Here’s how the options most people evaluate in 2026 stack up.

CriteriaChangedetection.ioVisualpingDistill Web MonitorSken.ioSelf-hosted price$0Not availableNot availableNot availableSaaS price$8.99/mo (5,000 URLs)Free up to 5 pages, then $10/moFree (extension), then $15/mo$19/moJavaScript renderingPlaywright (headless)Via their infraBrowser extensionCloudNotifications85+ (Apprise)Email, Slack, WebhooksEmail, Slack, WebhookEmail, Slack, TelegramVisual detectionScreenshot diffYesPartial (extension)YesAI / LLMNatural-language rules + summariesNoNoNoREST APIYes (OpenAPI)LimitedNoYesData locationYour serverCloud (AWS)Local (extension)Cloud

Changedetection.io wins on data sovereignty and the absence of limits in self-hosted mode. Visualping is simpler if you don’t want to run infrastructure. Distill still makes sense for occasional desktop use via its browser extension. Sken.io offers nothing Changedetection.io doesn’t already do, with a shinier UI.

The structural difference is that Changedetection.io is an open-source project with an optional SaaS tier that funds development — not a SaaS with a crippled free plan. The self-hosted version gets every feature (LLM integration coming soon), no quotas, no watermarks, no upsells.

What it doesn’t do, and why that’s fine

Changedetection.io is not a mass scraper. It’s built to monitor specific pages you’ve already identified, not to crawl an entire site or ingest a 50,000-product catalog. If you need to scrape all of Amazon, look at Scrapy or Crawl4AI.

It also doesn’t do sentiment analysis, automatic change classification (outside the LLM feature), or performance monitoring (load time, TTFB). For that, it lives alongside Uptime Kuma or Prometheus + Grafana, not in their place.

Finally, it doesn’t replace a regulatory watch tool or an RSS aggregator. Changedetection.io detects raw changes on web pages; it’s up to you to decide whether those changes matter — or to let the LLM do it for you.

Verdict

Install Changedetection.io if you’re already manually refreshing competitor pricing, stock, or TOS pages. The Docker Compose setup takes two minutes, and you immediately stop hitting F5 on your competitor’s page hoping to spot a change. The 85 notification channels guarantee the alert lands where you actually read it — not in an inbox you check once a week.

Add the Playwright container if the pages you’re watching rely on JavaScript. Without it, you’ll only see static HTML — meaning you’ll see nothing on a React or Next.js site. The 2 GB RAM overhead is the price of seeing what a real browser sees.

Stick with Visualping if you have no VPS and you’re tracking fewer than five pages. The interface is more polished, and the zero-infra trade-off outweighs the free plan’s limits.

Whatever you choose, stop monitoring manually. A tool that checks 24 times a day what you check once a week finds changes 168 times faster. When your competitor changes pricing on Friday night, that means you react Saturday morning — not the following Monday.

References

The cyber brief, every Tuesday

The flaws that matter and the patches to apply, in a ten-minute read.

No spam. One-click unsubscribe.
read next

On the same topic

Immich replaces Google Photos once you budget for a mini PC and real backups

Immich shipped version 3.0 on 2 July 2026, nine months after its first stable release and weeks after a two-year retrospective on its backing by nonprofit FUTO. It replaces Google Photos once you can afford roughly $300 of hardware and a disciplined off-site backup — skip either, and the migration trades Google’s reliability for a real chance of losing everything.

Coolify gives you a free Vercel on your own server in one command

Coolify shipped version 4.2.0 on July 21, 2026, and now sits at 59,800 GitHub stars. This open-source PaaS deploys your apps, databases, and 280 services to any Linux server with a single click — no per-GB billing, no bandwidth caps, no lock-in.

← Back to the feed

Type at least two characters.

navigate open esc dismiss