Other blogsAI Tools

Changedetection alternative self hosted or hosted: a developer's view

urlwatch, changedetection.io and AyeWatch compared on config, extension points, AI and the upkeep each one leaves you.

Developers who search for a changedetection alternative self hosted usually want one of two things: a lighter tool they still control, or permission to stop running one at all. This comparison covers both. It puts urlwatch, changedetection.io and the hosted AyeWatch side by side on the things a developer cares about: config format, extension points and what breaks at 3am.

The three options at a glance

urlwatch changedetection.io AyeWatch
Where it runs Your machine, any Python host Your Docker host, pip, or $8.99/mo hosted Hosted by AyeWatch only
License BSD-style Apache 2.0 Commercial
Config YAML file Web UI, CSS/XPath, JSONPath, jq Plain-English rule per monitor
Output Unified diff by email, terminal, third parties 85+ notification types through Apprise Written summary to push, email, Slack, Discord, webhook
API None (it is a CLI) REST API REST API, signed webhooks, MCP server
AI None Optional, with your own LLM key or local model Built in, judges changes against your rule
Price Free Free self-hosted Free Preview, then from $9/mo

urlwatch: smallest footprint

urlwatch is a Python CLI. You keep a YAML list of jobs, schedule it with cron or a systemd timer, and read the diff in your inbox. It suits the developer who wants change detection to behave like any other script in the repo: versioned config, no daemon, no database.

The cost is that everything beyond fetch-and-diff is yours. Filtering out noise or sending alerts somewhere it does not already support means writing your own glue.

changedetection.io: the full self-hosted stack

changedetection.io is the feature-rich choice. One docker compose up -d gives you a web UI, a visual selector, Browser Steps that can log in or click through a flow before checking, restock and price tracking, JSON API monitoring and PDF text diffs. Notifications go through the Apprise library, so almost any endpoint works, including a custom JSON post.

Recent versions also accept an LLM connection. Point it at OpenAI, Gemini, Anthropic or a local Ollama or vLLM endpoint, and you can write intent rules such as "only alert if the price drops below $50" and receive AI summaries instead of raw diffs. You pay the model provider, or run the model yourself.

What you sign up for: keeping the container patched, the Chrome browser container healthy, proxies working, and the volume backed up.

AyeWatch: no host, same hooks

AyeWatch removes the box. A monitor is one or more URLs plus a sentence describing the change you want. The service fetches the page, compares the new version against your sentence and sends a short summary only when it matches. There is no selector to repair after a redesign and no ignore list for rotating content.

The integration surface is what makes it workable for developers:

  • REST API on every paid plan to create, list, update and delete monitors from code
  • Webhooks that deliver signed topic.update events with the AI summary in the payload
  • MCP server at https://ayewatch.ai/api/mcp, so a coding assistant can set up a monitor ("watch this changelog and tell me when a new version ships")
  • Slack and Discord routing per monitor

It also watches topics beyond your URL list: the web at large, plus X, Reddit, YouTube, LinkedIn, Instagram and TikTok. That covers the case where a dependency announces a breaking change in a forum thread before the docs update.

Paid plans start at $9 a month, with no contract. The Free Preview gives three runs without a card, which is enough to test a rule against a real changelog before you wire it into anything.

What breaks at 3am

Each option fails in its own way, and that is worth knowing before you choose.

  • urlwatch: the cron job stops running after an OS upgrade or a Python version change, and nothing tells you, because the tool that would alert you is the one that stopped.
  • changedetection.io: the browser container runs out of memory, a proxy gets blocked, or a target site redesigns and a selector matches nothing. The watch keeps running and simply reports no change.
  • AyeWatch: you do not get paged for the infrastructure, because it is not yours. What you can still get wrong is the rule. A sentence that is too narrow misses changes, so start broad and tighten it once you see the first alerts.

Which one to pick

  • You must keep data on your own hardware, or need logged-in flows: changedetection.io. Browser Steps has no equivalent in the other two.
  • You want a tiny, scriptable tool and diffs are enough: urlwatch.
  • You want the API and webhooks without owning the infrastructure: AyeWatch. For most developers watching public pages, this is the better trade, because the hours saved on upkeep are worth more than $9.

The full table of differences is on the AyeWatch vs changedetection.io page.

Browse guides by topic