# Changelog of Spotify Scraper - Tracks, Albums, Artists & Playlists (`logiover/spotify-scraper`) Actor

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

## Changelog

### 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 22 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Declared 43 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-23

Initial release.

- **8 modes** over Spotify's own Web Player GraphQL backend (the private `api-partner.spotify.com/pathfinder` API the open.spotify.com player uses): `search`, `artist`, `album`, `playlist`, `newReleases`, plus `tracks` / `albums` / `artists` batch.
- **Keyless anonymous auth** — reproduces the Web Player handshake internally: TOTP-signed anonymous access token (`open.spotify.com/api/token`) + `client-token` (`clienttoken.spotify.com`). No API key, login, OAuth or cookie required from the user. Multiple TOTP secret versions are tried to survive server-side rotation.
- **Persisted-query self-healing** — ships verified-good GraphQL query hashes and lazily refreshes them from the live web-player bundle if Spotify rotates them (`PersistedQueryNotFound`), so the Actor keeps working across client updates.
- **Volume** — search paginates each entity type up to ~1,000 results; playlists and discographies paginate fully (hundreds to thousands of rows per run). Acceptance run: 550 tracks for a single broad query.
- **Rich, typed output** — numbers as numbers (play counts, durations, followers, monthly listeners, world rank, track/disc numbers), booleans as booleans (explicit, verified, playable, collaborative). Cover art, labels, copyrights and canonical Spotify URLs included.
- **Reliability** — RESIDENTIAL proxy by default with a fresh IP per request, automatic token refresh on 401, and 429 rate-limit backoff. Graceful time budget (~4 min) so long paginations exit cleanly with data.
- **6 dataset views** (Overview, Tracks, Albums, Artists, Playlists, Podcasts) + all four schemas.
