# Changelog of Sofascore Match Stats, xG & Lineups Scraper (`incognito_mode/sofascore-match-analytics-scraper`) Actor

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

## Changelog

### Unreleased — 2026-09-27

- Fixes every run failing with `403 {"reason": "challenge"}` since
  2026-09-24. Sofascore now refuses a `User-Agent` claiming a Chrome older
  than a cutoff that trails the current stable release (148 when measured,
  with 154 stable), and the client had Chrome 136 hardcoded. No proxy tier
  could help, since the block was never about the IP.
- The Chrome version is now resolved at the start of each run from Google's
  Chrome release feed, falling back to an estimate from Chrome's four-week
  release cadence, so it can no longer go stale. `User-Agent`, `Sec-Ch-Ua`
  and the platform headers are generated together and always agree.

### 1.0.27 — 2026-08-31

- Datacenter proxy budget raised from 4 IPs to 12, and residential given its
  own separate budget of 3. Sofascore refuses Apify's datacenter egress on the
  first request of essentially every platform run, and a measured run needed 4
  IPs for two requests — the whole old budget. A run that hit one more block
  would have fallen through to a metered residential proxy that free-plan
  accounts do not have, and failed. The free tier now absorbs that.
- `max_escalations` raised 8 → 16 so the client's own ceiling can no longer
  shadow the tier budgets and strand the last tier.

### 1.0 — 2026-08-23

First release.

- Deep per-match data from Sofascore, fed by match IDs or plain Sofascore
  match URLs.
- **xG shotmaps** with pitch coordinates, body part, situation and outcome.
- **Lineups** with 33 per-player statistics and Sofascore ratings, formations
  and substitutions.
- **Attack-momentum graphs** and **average-position maps**.
- Incident timelines, team statistics, bookmaker odds, votes, win
  probability, managers, head-to-head, best players, team streaks, heatmaps
  and comments.
- Every sub-resource is a separate switch, and each one is one extra request
  per match — so a narrow run is a cheap run.
