# Changelog of Website Change Monitor: Page Change Detection & Diffs (`humble-echidna/website-change-monitor`) Actor

- **URL**: https://apify.com/humble-echidna/website-change-monitor/changelog.md
- **Full Actor documentation**: https://apify.com/humble-echidna/website-change-monitor.md

## Changelog

Versions follow MAJOR.MINOR.PATCH (`src/version.py`); Apify shows MAJOR.MINOR from `.actor/actor.json`.
Every run logs its version and records it in the `RUN_STATS` key-value record.

### 0.1.1 (2026-10-03)

- A run no longer fails when the store it remembers earlier runs in can't be opened (403: the account already has
  a store of that name that this actor didn't create). It falls back to `humble-echidna-<name>`, and if that is
  refused too it runs without memory for that run. Users' existing memory is untouched: the usual name is tried first.

### 0.1.0 (unreleased)

First release.

- Pages the user lists (or a dataset of page URLs, e.g. Sitemap URL Extractor's) are checked against what the same
  monitor saw last time; only pages that are new, changed or removed (404/410 after being seen) are returned, with a
  unified diff, the added and removed lines, the headings they're under, and the current text.
- What's compared: the main content by default (the shared readability extractor, mms\_extract), or all visible text,
  or the elements a CSS selector matches. Link addresses are ignored unless `includeLinks`; the user's ignore
  patterns (regular expressions, with a 1 s timeout per page) replace volatile text by "…"; `watchFor` returns a
  change only when an added or removed line mentions one of the words.
- Memory: a named key-value store in the user's account (`website-change-monitor-memory`), one index record per
  monitor (named by `monitorName`, else the task id, else "default") and one text record per page, written only when
  the text changed. Settings are remembered per page: changing them compares the page afresh (not reported).
- Pricing: `apify-default-dataset-item` per returned page (new, changed, removed) and `unchanged-page` per page
  checked and found unchanged (shared `mms_common.spend.Spend`); failed, blocked or bot-checked pages aren't charged,
  and the maximum cost per run limits the pages read. "Max pages per run" input. Prices: $3.00 per 1,000 returned
  pages ($2.70 / $2.40 / $2.10 on Starter / Scale / Business), $1.50 per 1,000 unchanged pages, $0.00005 a run start.
- Sources: no fixed source; only URLs the user supplies, fetched through mms\_common (robots.txt, honest User-Agent,
  private-network guard, ports 80/443, no proxy). AI-crawler opt-outs aren't applied: the output is change alerts,
  not AI use (ACTOR-CHECKLIST 2b applies them to actors whose output is for AI use).
- Failure isolation: a failing page only affects itself; a bot check served with HTTP 200 is reported as blocked and
  never compared.
