# Changelog of iTunes & Apple Media Scraper — Songs, Apps & Podcasts (`logiover/itunes-search-scraper`) Actor

- **URL**: https://apify.com/logiover/itunes-search-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/itunes-search-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

- Normalized Apple's `-1` unavailable-price sentinel to `null`, omitted null proxy options from direct requests, and enforced the documented per-term result cap locally.
- 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.
- Normalized Apple's -1 unavailable/not-for-sale price sentinel to null, omitted null proxy options from direct requests, and enforced maxResults locally when Apple returned more than its requested per-term limit; the exact Console-default search now produces 400 rows with zero negative prices.

### 2026-07-18

- Maintenance & reliability pass — re-verified end-to-end against live data via the Apify API; confirmed the Actor completes successfully and returns non-empty, well-formed results within the 5-minute quality window on its default input.
- Refreshed build so the latest version is current; no change to inputs, output fields or scraping logic.

### 2026-07-12

- **No required inputs** — nothing is mandatory anymore. Running with empty input `{}` returns a large dataset of popular music (a spread of chart-topping artists) instead of doing nothing.
- **Proxy fix** — removed the forced (dead) `DATACENTER` proxy group; now uses automatic Apify Proxy, with a **direct-connection fallback on the final retry** since iTunes is a public API.
- **Numbers as numbers** — `trackId`, `trackPrice`, `collectionPrice`, `averageUserRating`, `userRatingCount`, and `trackTimeMillis` are now emitted as real numbers instead of strings.
- **Friendlier input** — `country` is now a **Store Country dropdown** (44 iTunes storefronts) instead of a free-text field; the media `entity` dropdown gained more options (Music Artist, Music Video, All Media, etc.).
- **Graceful runs** — top-level errors are logged, not thrown, so a partial dataset still finishes as a successful run.
- **Schemas** — added a `fields` JSON-schema (title + description + type per field) to the dataset schema; numeric display formats aligned with the new numeric types.
