---
title: "Deploy changedetection.io"
description: "Get alerts when web pages, prices or stock change, with JS rendering."
category: "Automation"
url: https://railway.com/deploy/website-change-monitor
---

# Deploy changedetection.io

Get alerts when web pages, prices or stock change, with JS rendering.

**[Deploy changedetection.io on Railway](https://railway.com/template/website-change-monitor)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/website-change-monitor/manifest.json

- **Creator:** blueorange
- **Category:** Automation

## Template content

### browser https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/chromium.svg

- **Image:** dgtlmoon/sockpuppetbrowser:latest

### changedetection https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/changedetection.svg

- **Source:** https://github.com/gridalpha/changedetection-io-railway
- **Public domain:** Yes

## Documentation

# Deploy and Host changedetection.io on Railway

![changedetection.io logo](https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/changedetection.svg)

changedetection.io is an open source **website change monitor**. You give it a list of URLs, it checks them on a schedule, and when the content changes it alerts you by email, Slack, Discord, Telegram, Microsoft Teams, webhooks or any of the 85-plus services supported through Apprise. It can watch a whole page or just one part of it, track prices and restocks, follow JSON APIs, and run multi-step browser actions to log in or click before checking. It's Apache-2.0 licensed with about 35,800 GitHub stars. This template runs it on Railway with a persistent volume for your watches and history, plus a headless Chrome service so pages that load with JavaScript are checked correctly. A password is generated for the web UI and session cookies are hardened for HTTPS. The official hosted service is $8.99/month; self-hosting on Railway costs about $5–15/month with no watch limits beyond your resources.

---

## What This Template Deploys

| Service | Purpose |
|---|---|
| **changedetection** | `ghcr.io/dgtlmoon/changedetection.io` with a small Railway wrapper, on port `5000` with a public domain. Web UI, scheduler and fetchers. Volume at `/datastore`. |
| **browser** | `dgtlmoon/sockpuppetbrowser`, a headless Chrome pool. Renders JavaScript-heavy pages for the Playwright fetcher over the private network. |

The wrapper derives changedetection.io's salted password hash from `CHANGEDETECTION_PASSWORD` at every boot and turns on secure cookies and HSTS, because the upstream image has no setting for either.

---

## About Hosting changedetection.io

Plenty of important things on the web have no notification button: a price drop, a back-in-stock product, a new job posting, a changed policy page, a government form update, a competitor's pricing table. changedetection.io turns any of them into an alert.

**Two fetchers.** The fast plain-HTTP fetcher works for most static pages. For sites that build their content with JavaScript, choose the Chrome fetcher per watch; requests go to the `browser` service, which runs up to three Chrome processes at a time.

**Watch only what matters.** Use CSS or XPath filters, or the visual selector, to watch one element, such as a price, a table or a headline, and ignore ads and timestamps. Text filters can trigger only when certain words appear or disappear.

**Price and restock tracking.** Built-in restock and price detection reads product data from shop pages and alerts you on thresholds instead of every small change.

**Browser steps.** For pages behind a login or a cookie banner, record steps such as typing, clicking and waiting, and changedetection.io replays them before each check.

**Visual diffs.** Every check is stored as a snapshot, and the history page shows additions and removals side by side or inline, with screenshots when the Chrome fetcher is used.

**Schedules and tags.** Set a check interval per watch or per tag, from minutes to weeks, and use tags to group, pause or mute watches.

**Notifications everywhere.** Notification URLs use Apprise syntax, so one setting can send to email, chat apps, push services or your own webhook, with the diff included.

Typical cost: **~$5–15/month** on Railway for both services, depending on how many watches use Chrome and how often they run. The hosted changedetection.io plan is $8.99/month for up to 5,000 URLs.

---

## Deploy changedetection.io in Under 5 Minutes

1. Click **Deploy on Railway**. Both services start; your watches will live on the `/datastore` volume.
2. Copy `CHANGEDETECTION_PASSWORD` from the **changedetection** service's **Variables**.
3. Open the public domain and sign in with that password.
4. Add a URL to watch, choose the fetch method and check interval, and save.
5. In **Settings** and **Notifications**, add an Apprise URL for Slack, Discord, email or a webhook.

The first check runs right away; later changes appear as highlighted diffs in the history.

---

## Common Use Cases

- **Price drops.** Watch product pages and get alerted when the price falls below your target.
- **Restock alerts.** Know when sold-out items are back.
- **Competitor tracking.** See changes to competitors' pricing, features and landing pages.
- **Job postings.** Get notified when a careers page adds a new role.
- **Compliance and legal pages.** Track terms, privacy policies and regulatory notices.
- **API and JSON monitoring.** Watch a JSON endpoint and filter to the fields you care about.
- **Docs and changelogs.** Know when a vendor updates documentation or release notes you depend on.
- **Tickets and appointments.** Get alerted when tickets or appointment slots open up.
- **Government and school updates.** Follow announcement pages that offer no email list.

---

## Configuration

| Variable | Required | Description |
|---|---|---|
| `CHANGEDETECTION_PASSWORD` | 🔐 Auto-generated | Web UI password. The salted hash is derived from it on every boot. |
| `BASE_URL` | ✅ Auto-set | `https://` plus the public domain, used in notification links. |
| `PLAYWRIGHT_DRIVER_URL` | ✅ Auto-set | WebSocket address of the private Chrome service. |
| `FETCH_WORKERS` | ✅ Set | `5` pages checked at the same time. |
| `HIDE_REFERER` | ✅ Set | `true`, so watched sites don't see where requests come from. |
| `TZ` | ✅ Set | `UTC`. Set your timezone for schedules. |
| `PORT` | ✅ Set | `5000`. |
| `MAX_CONCURRENT_CHROME_PROCESSES` | ✅ Set | `3` on the browser service. |
| `SCREEN_WIDTH`, `SCREEN_HEIGHT`, `SCREEN_DEPTH` | ✅ Set | Chrome viewport `1920` by `1024`. |

**Changing the password.** Update `CHANGEDETECTION_PASSWORD` and redeploy. While it's set, it overrides any password saved in the settings page.

**Proxies.** Some sites block data center traffic. Add HTTP or SOCKS proxies in **Settings** and pick one per watch.

**More throughput.** Raise `FETCH_WORKERS`, and give the browser service more memory before raising `MAX_CONCURRENT_CHROME_PROCESSES`.

---

## changedetection.io vs. Alternatives

| | changedetection.io on Railway | changedetection.io hosted | Visualping | Distill.io |
|---|---|---|---|---|
| **Monthly cost** | ~$5–15 usage | $8.99 | Free tier, then paid | Free tier, then paid |
| **Self-hosted** | ✅ Yes | ❌ No | ❌ No | ⚠️ Browser extension |
| **JavaScript rendering** | ✅ Chrome service | ✅ Yes | ✅ Yes | ✅ Yes |
| **Price and restock tracking** | ✅ Yes | ✅ Yes | ⚠️ Limited | ⚠️ Limited |
| **Browser steps before checks** | ✅ Yes | ✅ Yes | ⚠️ Paid | ✅ Yes |
| **Notification channels** | ✅ 85+ via Apprise | ✅ Yes | ⚠️ Fewer | ⚠️ Fewer |
| **License** | ✅ Apache-2.0 | ⚠️ Hosted service | ❌ Proprietary | ❌ Proprietary |

---

## Dependencies for changedetection.io Hosting

- Railway account. Hobby works for a modest number of watches; Pro for many Chrome-rendered checks.
- A notification destination: email, Slack, Discord, Telegram or a webhook.
- Optional: an RSS reader, since each watch also offers an RSS feed of its changes.
- Optional: a proxy service for sites that block data center IP addresses.

### Deployment Dependencies

- [changedetection.io on GitHub](https://github.com/dgtlmoon/changedetection.io): source code and releases
- [changedetection.io wiki](https://github.com/dgtlmoon/changedetection.io/wiki): filters, browser steps and notifications
- [Apprise notification services](https://github.com/caronc/apprise/wiki): notification URL formats
- [changedetection-io-railway](https://github.com/gridalpha/changedetection-io-railway): the Railway wrapper used here

### Implementation Details

The app image follows upstream's `latest` tag, so redeploys pick up new releases; the current one is 0.70.3. The browser service also tracks `latest`. Watches, snapshots and settings are stored as files under `/datastore`, so back up the volume to keep your history. Only the changedetection service has a public domain; Chrome is reachable only over Railway's private network. The wrapper runs upstream's own entry point after setting the password hash and cookie flags, so everything else behaves like the official image.

---

## Frequently Asked Questions

**What is changedetection.io?**
An Apache-2.0, self-hosted tool that checks web pages on a schedule and alerts you when they change, with filters, price tracking and browser automation.

**How much does it cost?**
About $5–15/month on Railway for both services. The hosted plan is $8.99/month for up to 5,000 URLs.

**How do I sign in?**
Use the `CHANGEDETECTION_PASSWORD` from the changedetection service's Variables.

**Why use the Chrome fetcher?**
Some sites build their content with JavaScript. The Chrome fetcher renders the page like a browser before comparing it.

**Which notification services work?**
Anything Apprise supports, including email, Slack, Discord, Telegram, Teams, Pushover, ntfy and generic webhooks.

**Where are my watches stored?**
On the Railway volume at `/datastore`, including every snapshot and the change history.

---

## Why Deploy and Host changedetection.io on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying changedetection.io on Railway, you get your own website change monitor with JavaScript rendering and alerts everywhere, without watch limits or a subscription.


## Similar templates

- [N8N Main + Worker](https://railway.com/deploy/n8n-main-worker) — Deploy and Host N8N with Inactive worker.
- [Evolution API with n8n](https://railway.com/deploy/evolution-api-with-n8n) — Automate WhatsApp workflows with Evolution API, n8n, and Postgres.
- [Postgres Backup](https://railway.com/deploy/postgres-s3-backups) — Cron-based PostgreSQL backup to bucket storage

Open this page in a browser: https://railway.com/deploy/website-change-monitor
