webchanges anonymously checks web content (including images) and commands for changes, delivering instant notifications and AI-powered summaries to your favorite platform.
Highlights
AI-powered change summaries via Gemini (ai_google differ, BETA).
Structural diffs for JSON and XML via the deepdiff differ.
Visual diffs for images via the image differ (BETA).
Bypass TLS/JA3 fingerprinting with the optional curl_cffi HTTP client.
JSON-Schema-validated jobs.yaml and config.yaml for editor autocompletion and inline validation.
Requirements
webchanges requires . For the best experience, use the current version of Python; older Python versions are supported for 3 years after they’re replaced. Free-threaded Python is supported, though some
optional dependencies may not be.
For Generative AI summaries (BETA), you need a free API Key from Google Cloud AI Studio (see here).
Installation
Install webchanges with uv (recommended):
uv pip install webchanges
or with pip:
pip install webchanges
Other ways to run
In a Docker container: a minimal implementation (no browser) is here, and one with a browser is here.
As a GitHub Action: an implementation is here.
Documentation 
The documentation is hosted on Read the Docs.
Quick Start
Initialize
Run the following command to create the default config.yaml (configuration) and jobs.yaml (jobs) files and open an editor to add your jobs:
webchanges --edit-jobsRun the following command to change the default configuration, e.g. to receive change notifications (”reports”) by email and/or one of many other methods:
webchanges --edit-config
Run
To check the sources in your jobs and report on (e.g. display or via email) any changes found from the last time the program ran, just run:
webchanges
Schedule
webchanges leverages the power of a system scheduler:
On Linux you can use cron, with the help of a tool like crontab.guru (help here);
On Windows you can use Windows Task Scheduler;
Code
The code, issues tracker, and discussions are hosted on GitHub.
Contributing
We welcome any contribution no matter how small, both as pull requests or issue reports.
More information for code and documentation contributors is here, and our wishlist is here.
License
See the complete licenses (released under the MIT License but redistributing modified source code, dated 30 July 2020, from urlwatch 2.21 licensed under a BSD 3-Clause License).
Relationship with urlwatch
This project is a fork of urlwatch 2.21 and has since added many features; see the comparison.
Metadata
Release files for webchanges 3.37.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| webchanges-3.37.0.tar.gz | 211.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| webchanges-3.37.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 444.5 kB
Release files / webchanges-3.37.0.tar.gz
| Download URL | webchanges-3.37.0.tar.gz |
|---|---|
| Size | 211.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1494a794f93741ecf739a36063b186647234edfe570ddfacb7dc28562a853273
|
|
BLAKE2b-256 checksum How to use checksums |
b158bc04c7d8b8544ebe9dc8e69d880459bae4429a2819ddaa146e7083a79e19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency logRelease files / webchanges-3.37.0-py3-none-any.whl
| Download URL | webchanges-3.37.0-py3-none-any.whl |
|---|---|
| Size | 233.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f996f9bbabf219bd0520ab15d39ee176779a24b0ed4de3e5c0d67c310d5d650
|
|
BLAKE2b-256 checksum How to use checksums |
413741addb5ae1d7dcc9c2a9438eab29908fedf57cbc07d050286f0c45b70cdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 2, 2026.
Transparency log