# Changelog of RSS Feed Scraper — Atom, Podcast & Multi-Feed Aggregator (`devilscrapes/rss-feed-scraper`) Actor

- **URL**: https://apify.com/devilscrapes/rss-feed-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/devilscrapes/rss-feed-scraper.md

## RSS / Atom Feed Scraper — Changelog

### 0.5 — 2026-09-04

- Fix: implement the two reliability features the README already advertised
  but the code never had. `_fetch_feed` now retries on `408 / 429 / 5xx` and
  transport-level errors, up to 5 attempts per feed, exponential backoff
  (2s base, 30s cap), honouring `Retry-After` (both delay-seconds and
  HTTP-date forms) when present, and capping total per-feed retry wait at
  60s so one pathological feed can't eat the run's timeout.
- Fix: within-run deduplication by GUID / Atom `id` across all feeds in a
  run, with a stable fallback key (link, else title+published) for items
  with a null/missing id — no distinct items silently collapse. Dedup count
  is logged.
- Fault isolation preserved: a feed that exhausts its retries is skipped,
  never crashes the run.
- No PPE/billing change: `Actor.charge("result", ...)` in `main.py` already
  fires only after `Actor.push_data(batch)`, and dedup happens inside the
  `scraper.run()` generator before an item is ever yielded/pushed — so
  duplicates were never billable and still aren't.

### 0.1.0 — 2026-05-15

- Initial scaffolded release.
