A sales manager at a medical supplies firm in Konya starts every morning by refreshing the tender page of a metropolitan municipality and the purchase notices of two hospitals. One Friday a notice goes up at 17:40, and she sees it on Tuesday. The time left is too short to prepare the bid. In the same week, the legal team learns that a software supplier quietly changed its terms of use, but only when the new invoice arrives.
Both problems have the same fix: a tool that watches the page and writes to you when it changes. This guide covers how monitoring works, which comparison to use, how to stop false alerts, how often to check, where the monitor should run and when a proxy belongs in the setup. Price and stock tracking has its own guide: How to Track Competitor Prices in E-Commerce.
What is website change monitoring, and what is it for?
Website change monitoring means a program loads a page on a schedule, keeps a copy and tells you when a new copy differs from the last one. It replaces refreshing by hand, which fails on a Friday evening or during a holiday.
The useful targets are often not prices: tender notices for a company that sells to the public sector, a supplier's terms of use for a legal team, a job board for HR, release notes for IT. Checking whether a site is up or down is a different job, uptime monitoring: this guide is about what the page says, not whether it loads.
How does website change monitoring work, step by step?
Every tool runs the same seven steps on each check:
- Address and viewpoint. You enter the URL. Some tools also let you choose the country the check comes from.
- Loading the page. A plain HTTP request downloads the HTML. Pages that build their content with JavaScript need a real browser, otherwise the monitor sees an empty frame (Static vs Dynamic Pages).
- Choosing the part to watch. You point at one section, such as the table of notices. No-code tools let you click on it; underneath, this becomes a CSS selector or an XPath expression (CSS Selector vs XPath).
- Cleaning the text. Extra spaces are trimmed, and dates or counters are dropped if you set a rule for them.
- Comparing. The clean text is compared line by line with the previous copy.
- Filtering. Rules decide whether the difference deserves an alert, for example only added lines or lines with a keyword.
- Alerting and saving. The tool sends the difference and stores the new copy in its history.
Step 2 can be lighter. A server can tag a page with an ETag or a Last-Modified date. A client that sends these back asks whether the page changed, and if not, the server answers 304 Not Modified without the page body. MDN explains conditional requests, and the rules are in RFC 9110.
Two shortcuts come first: an RSS feed, if the site has one, and sitemap lastmod dates, which show which pages changed (How to Find a Website's Sitemap).
What is the difference between text, element and visual comparison?
Text comparison looks at the words on the page, line by line. It produces the least noise and reads well in an alert. It misses design changes: a new banner image does not change any text.
Element comparison watches one part of the page, such as the list of open tenders, and ignores the rest. The weak point is the selector: after a redesign, the element may get a new name and the monitor finds nothing.
Visual comparison compares screenshots pixel by pixel. It catches a new logo or a changed layout, but it is the noisiest option and always needs a real browser, so it puts the most load on the site.
A terms page gets text comparison, a tender list gets element comparison, and a campaign banner gets visual comparison. If a supplier changes "30 days' notice of termination" to "15 days", text comparison shows exactly that one line.
Cloud service, browser extension or your own server?
A search for a "Visualping alternative" is often a question of where the monitor should run. Facts checked in September 2026; plans change.
| Route | Example | Where it runs | Which IP the site sees | Shortest interval | Proxy | Good for |
|---|---|---|---|---|---|---|
| Browser extension | Distill local monitor | Your browser, kept open | Your own IP | 5 seconds | Not supported | One person, a few pages |
| Cloud service | Visualping, Distill cloud | The service's servers | The service's IP (Visualping: California by default) | 2 minutes on higher plans | From the service's location list | Teams with nothing to install |
| Your own server | changedetection.io in Docker | Your server | The server's IP, or your proxy | You decide | Per monitor, in proxies.json | Many pages, data in-house, IT support |
Distill has two modes. Its documentation says local monitors check in your browser, can run every 5 seconds and do not support proxies, while cloud monitors keep working with your computer off and do support proxies.
Visualping is a cloud service. It checks from a US (California) IP by default, and each job can pick another location from a "Check from" menu, as its help centre explains. In September 2026, Türkiye was not on that list, which matters if you need the Turkish version of a page.
changedetection.io is open-source software under the Apache 2.0 licence. You run it with Docker, open it in the browser on port 5000, and every copy stays on your machine. Version 0.60.7 came out on 17 September 2026; the project repository has the install command. The same team also sells a hosted version.
How do you stop false alerts from dates, ads and session codes?
A monitor that alerts on every check gets ignored. The noise usually comes from:
- "Updated 3 minutes ago" lines and visitor counters
- Rotating banners, ads and cookie notices
- Security tokens and session IDs in the HTML, new on every visit
- A/B tests and "recommended for you" boxes
- Lists that come back in a different order
The first fix is scope. Watch only the section you care about and compare its text, not its HTML: session codes live in the HTML, so an HTML comparison sees a change every time. On a tender list, watch the notice titles, not the column with today's date.
The second fix is rules. In changedetection.io they sit under Edit > Filters & Triggers. "Ignore lines containing" drops lines that match a word or a regular expression, such as a date pattern. "Keyword triggers - Trigger/wait for text" alerts only when a word such as "tender" appears. Under Text filtering you can keep only "Added lines", and "Only trigger when unique lines appear in all history" stays quiet when old content just moves around. The official tutorial shows these options.
How often should you check, and how do you keep the load on the site low?
Match the interval to how often the page really changes and what a late alert costs. A terms page needs one check a day, a tender list one an hour during working hours. The price tracking guide has a detailed section on choosing a check frequency.
A plain request downloads one HTML file; a browser also loads images, scripts and fonts, often dozens of requests per check. Use the browser only where needed, and:
- Add a small random delay to check times, so monitors do not hit one site at once.
- In changedetection.io,
reuse_time_minimuminproxies.jsonsets how many seconds must pass before a proxy is used again. - Read the site's robots.txt. RFC 9309 says its rules are not access authorisation, but crawlers are asked to respect them.
If the site answers 403 or 429, lower the frequency, switch back to a plain request, ask the owner or stop watching that page. What the codes mean is in HTTP Status Codes in Web Scraping. Changing proxies until one gets through is not a fix.
Why add a proxy to website change monitoring?
There are two honest reasons.
The page looks different by country. A site can show another language, campaign or terms text to visitors from Türkiye, Germany or the US. A monitor in California may watch the US version while you need the Turkish one. How sites guess your country is in Why Is My IP Location Wrong?, and the same effect in search in How to Search Google from Another Country.
Your office IP should not carry the monitors. If a site rate-limits the office IP because of dozens of monitors, colleagues browsing it are slowed down too. A separate exit IP keeps the two apart; it does not raise the limit the site sets.
For a steady view from one country, an ISP Proxy gives a fixed address, and a Sticky Proxy keeps one IP for 1-60 minutes. To see a page as home users in a country see it, use a Residential Proxy (how to use a residential proxy). Public government pages often need no proxy, or a datacenter one is enough (Residential vs. Datacenter Proxy). Here a proxy shows you the right version of a page; it is not a way to hide from the site.
Advanced: a proxy per monitor in changedetection.io
If all monitors share one proxy, set HTTP_PROXY and HTTPS_PROXY as in Using a Proxy with wget; they cover the plain requests fetcher, and the browser fetcher reads playwright_proxy_server. To give each monitor its own country, create proxies.json in the datastore folder, as the proxy configuration wiki describes:
{
"tr": {
"label": "Türkiye",
"url": "http://user-country-tr:pass@pr.proxynet.io:8000",
"reuse_time_minimum": 300
},
"de": {
"label": "Germany",
"url": "http://user-country-de:pass@pr.proxynet.io:8000",
"reuse_time_minimum": 300
}
}label is the name the interface shows, and url is the proxy address. The -country-tr part of the username sets the country; copy the exact username for each country from the Proxynet panel. The app adds a "No proxy" choice by itself.
Then open a monitor, go to Edit > Request, pick "Türkiye" or "Germany" under "Proxy" and save. The file is read on each page load, so no restart is needed; if the entries are missing, check the JSON for a typo. You can also add proxies under Settings > CAPTCHA & Proxies. SOCKS5 addresses start with socks5://, but the interface notes that SOCKS5 with a username and password works only with the plain requests fetcher; for the browser fetcher, use the HTTP address or allow your server's IP in the panel.
To confirm it works, watch a page that shows your IP and country, once with "Türkiye" and once with "No proxy" (Is My Proxy Working?).
Use cases
- Tender and public notices: monitors on procurement and announcement pages (web crawler).
- Competitor terms and policies: return policy, terms of use and campaign pages (brand protection).
- Market changes: new products and changed copy across a sector (market research).
- Prices and stock: a separate job, see price monitoring.
- Alerts into other systems: pass each change to a ticket, a sheet or a chat room (n8n Web Scraping).
- Legal limits: what you may collect depends on the country and the data (Is Data & Web Scraping Legal?).
Common mistakes
- Watching the whole page. Every date and banner becomes an alert.
- Comparing HTML instead of text. Session codes change on each visit, so alerts never stop.
- Watching a JavaScript page with a plain request. The monitor compares two empty frames.
- Checking every minute. Most pages change a few times a week.
- Ignoring
403or429, or forcing through with new proxies. Both mean the site wants you to slow down or stop. - Checking from the wrong country. You watch the US version while your customers see the Turkish one.
- Sending every alert to everyone. Route each monitor to the person who acts on it.
Decision guide
| Need | Recommendation |
|---|---|
| A few pages, your computer is on all day | Browser extension (Distill local monitor); pick a section, compare text |
| 24/7 monitoring, nothing to install | A cloud service; check that it offers your country |
| Dozens or hundreds of pages, data kept in-house | changedetection.io on your own server with Docker |
| The page differs by country | A country proxy per monitor (proxies.json); static ISP or sticky residential |
| False alerts on every check | Pick a section, compare text, ignore date lines, alert only on added lines |
| JavaScript content, the monitor sees an empty page | A browser fetcher, with a lower frequency |
The site answers 403 or 429 | Check less often, read robots.txt, ask the owner or stop; do not try to get around it |
Frequently asked questions
What does Distill Web Monitor do?
It watches a page, or part of one, and alerts you when it changes. Local monitors run in your browser, which must stay open; monitors added from its web app run in Distill's cloud.
How do I get notified when a website changes?
Set up a monitor on the page and connect an alert channel. Most tools send email and can also post to Slack, Telegram or a webhook. changedetection.io uses the Apprise library and lists more than 85 notification types.
Can I monitor a website for changes for free?
Yes. Distill's local monitors and a self-hosted changedetection.io cost nothing beyond your own hardware. Free cloud plans limit how many pages you watch and how often they are checked.
Should I use a free proxy with changedetection.io?
No. A free proxy sends every page you watch, and often your login details, through a stranger's server. The risks are in Are Free Proxies and Web Proxy Sites Safe?.
Why does changedetection.io show a 403 error?
The site refused the request, often because the monitor checks too often or the site does not want automated visits there. Lower the frequency, read robots.txt and the terms, and ask the owner. If the answer stays the same, stop the monitor.
Can I see the history of changes on a page?
A monitor keeps every copy from the day you set it up. For older versions, the Internet Archive's Wayback Machine often has snapshots.
Summary
Website change monitoring works when you watch the right part of a page. Pick the section that matters, compare its text, ignore dates and counters, and alert only on new lines. Check as often as the page really changes, and pick the route by page count and where the data should live. When the country matters, give each monitor its own proxy; our proxy services page shows the options.




