# Changelog of Chess.com Player Scraper — Profile & Ratings (`devilscrapes/chess-com-scraper`) Actor

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

## Changelog — chess-com-scraper

### 0.1.0 — 2026-09-05

- Scaffolded (T01): Actor boots, validates input, resolves proxy config.
- Real Chess.com fetch logic implemented (T04/T06/T08): `client.py` fetches
  `/pub/player/{username}`, `/stats`, `/games/archives` and
  `/games/{YYYY}/{MM}` via `curl-cffi` with rotating `firefox133`/
  `firefox135` impersonation (chrome\* profiles are Cloudflare-challenged
  on this host — never used); `parser.py` maps the raw JSON onto
  `ResultRow`/`GameTypeRating`/`GameSummary`; `main.py` runs a sequential
  per-username loop with fault isolation — a 404'd username is skipped
  with a `WARNING` and the run continues (REQ-2/REQ-3), while a
  Cloudflare challenge response (`ChallengeBlockedError`) propagates
  uncaught to a non-zero exit (REQ-4). `include_games` opt-in resolves
  and fetches the most recent games month, skipping individual malformed
  games without dropping the row (REQ-10).
- Added `promo.json` (GTM manifest).
