# Changelog of Reddit Subreddit Scraper (`devilscrapes/reddit-subreddit-scraper`) Actor

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

## Reddit Subreddit Scraper — Changelog

### 0.6 — 2026-08-25

- **Fix the #1 cause of the 56% customer-run failure rate:** Reddit blocks
  unauthenticated `.json` requests two ways — a plain `403`, or a redirect
  to a login page that curl_cffi follows to a final `200 text/html` body.
  The second form's `r.json()` call raised an uncaught `JSONDecodeError`
  (not `OSError`/`RuntimeError`), which crashed the *entire* multi-subreddit
  run instead of skipping the one blocked subreddit.
- The scraper never rotated proxy session or browser-impersonation identity
  on a block — it opened exactly one session with one fixed exit IP for the
  whole run and gave up on the first 403. `_RedditSession` now retries with
  a fresh proxy exit IP + a fresh Firefox/Safari fingerprint on every block
  signal (403 or the 200-non-JSON wall page), up to 4 attempts.
- A run where every subreddit ends up blocked now fails loud
  (`RedditBlockedError` → `Actor.fail`) with a clear status message instead
  of silently reporting SUCCEEDED with 0 rows — a genuinely empty listing
  (real JSON, zero children) still succeeds unchanged.

### 0.5 — 2026-06-07

- **Fix "Under maintenance" risk:** proxy `default`/`prefill` in `input_schema.json` was `{useApifyProxy: true}` with no group, so Apify's daily auto-QA ran on a datacenter IP — where Reddit 403s most fingerprints. Both now pin `apifyProxyGroups: ["RESIDENTIAL"]`. Code already rotates firefox/safari `BROWSER_PROFILES` (verified). Mirrors the willhaben-austria-cars fix.

### 0.1.0 — 2026-05-15

- Initial scaffolded release.

### 0.2.0 — 2026-08-19

- Validate input BEFORE charging `actor-start`. Validation lived inside
  `run()`, an async generator, so it did not execute until after the charge —
  a bad input billed the customer for a traceback.
- `validate_input()` now enforces the `mode` / `timeFilter` enums that
  `input_schema.json` only applies to the Console form, and normalises the
  `r/` prefix users paste. An API-started run with `mode="banana"` used to get
  a Reddit 404 that read downstream as "no results".
- Tests: 2 -> 14.
