# Changelog of PrizePicks Scraper — Player Props, Lines & Projections API (`logiover/prizepicks-scraper`) Actor

- **URL**: https://apify.com/logiover/prizepicks-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/prizepicks-scraper.md

## Changelog

### 2026-09-24

- **Fixed runs that finished successfully with an empty dataset.** A crawl that is blocked and a search that genuinely has no results both produce an empty file; the Actor now fails with an explicit `NO_ROWS` error and writes a `SUMMARY` record instead of reporting success.
- Diagnosis: The PrizePicks API answers proxy traffic with HTTP 403.
- Retry later or from a different network. The Actor will report the block rather than return an empty file.

### 2026-09-23

- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.

### 2026-09-01

- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.

### 2026-08-11

- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.

### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Declared 33 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Declared 34 nullable dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder or brittle to sparse modes.

### 2026-07-24

- Initial release. PrizePicks Scraper v1.0 with three modes: full active board (`projections`), single league (`league`), and the leagues catalog (`leagues`).
- Powered by PrizePicks' public JSON:API (partner host) — no API key, no login, no headless browser. US residential proxy with a fresh IP per retry.
- Runs with empty input `{}` — scrapes the full active board across every league, bounded by `maxResults` (default 1000).
- Rich, flattened rows (30+ fields): numeric `lineScore`/`flashSaleLineScore`, `oddsType` (Standard/Goblin/Demon), player (name, team, position, headshot), `opponent`/matchup, `boardTime` + `updatedAt` for line-movement tracking, and `isPromo`/flash-sale flags.
- Dropdown inputs for League, Odds type and Status; free-text league name/id and stat-type filters. Optional `promoOnly` and `includeLiveOnly` toggles.
- JSON:API `included` graph is joined per projection (player, league, stat type, game, projection type). Numbers stored as real numbers, booleans as real booleans; no all-null rows.
- Graceful long runs — pagination/fan-out stops after a ~4-minute time budget, pushes everything collected, and exits successfully.
- Three dataset views (Overview, Projections, Leagues) with a `_mode` tag on every row.
