# Changelog of SofaScore Scraper | Live Scores & Match Data API (`parsebird/sofascore-scraper`) Actor

- **URL**: https://apify.com/parsebird/sofascore-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/parsebird/sofascore-scraper.md

## Changelog

### v1.4 — 2026-08-22

- Increased retry resilience for SofaScore requests (2 attempts, no backoff -> 5 attempts with backoff) to fix a high rate of dropped records from transient residential-proxy tunnel failures (`ERR_TUNNEL_CONNECTION_FAILED`); brings this actor in line with the same fix already applied in tennis-scraper
- Lowered max memory from 4096 MB to 1024 MB — the actor only ever navigates a browser to small JSON API responses, never renders real pages, so 4 GB was unused headroom driving up compute cost

### v1.3 — 2026-08-17

- Renamed the `stateKey` input field to `monitoringLabel` for clarity; behavior is unchanged

### v1.2 — 2026-08-03

- Added a one-retry fallback for transient residential-proxy tunnel failures, which were causing occasional dropped records under normal operation

### v1.1 — 2026-08-03

- Fixed proxy authentication (username/password were embedded in the server URL instead of passed separately, causing proxy connections to hang)
- Fixed a character-encoding bug on the platform where non-ASCII names (e.g. accented characters) were mangled
- Hardcoded the residential, country-pinned proxy default in code so it applies even to API/CLI calls that omit the `proxy` field, since SofaScore blocks datacenter IPs and unpinned residential IPs even from a real browser

### v1.0 — 2026-08-03

- Initial release
- Four modes: search by keyword (team/player/tournament/match), paste SofaScore links, every live match right now, or scheduled fixtures for a date range
- Optional enrichment: statistics, lineups, incidents, odds, fan votes, standings, and full squads
- Incremental mode: tag records NEW, CHANGED, or UNCHANGED against a previous run sharing the same state key, with optional EXPIRED detection
- Resume an interrupted crawl from a previous run ID without re-fetching or re-charging already-processed records
- Pay-per-event pricing with two events (base record + detail enrichment) and configurable spending limits
