# Changelog of PyPI Package Scraper — Downloads, Deps & Metadata (`logiover/pypi-package-scraper`) Actor

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

## Changelog

### 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.
- Output verified on a live run: 16 columns returned, 82.7% of cells populated.
- Run reliability reviewed: 96.6% 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.

### 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** — empty input `{}` runs the default 'Top Packages' mode and returns the 100 most-downloaded PyPI packages enriched with full metadata. Providing an empty package list in 'Packages' mode now also falls back to the top packages instead of exiting empty.
- **Clearer `mode` dropdown** — reordered so the zero-config default (Top Packages) is first, with plain-language labels.
- **More reliable download counts** — `recentDownloads` now falls back to the 30-day download count from the top-PyPI list when pypistats.org is rate-limited, so the number is populated far more often. Stored as a real number.
- **Proxy** — defaults to Apify Proxy (AUTO); automatically falls back to a direct connection on the final retry (all PyPI/pypistats APIs are open).
- **Robustness** — switched the HTTP client import from `crawlee` to the declared `got-scraping` dependency, and updated the top-packages source URL to its current canonical host (hugovk.dev).
- **Schema** — added `fields` (with nullable-safe types) to the dataset schema so columns render with correct types and null values are not rejected.
