# Changelog of WHO Global Health Observatory Scraper (`logiover/who-gho-scraper`) Actor

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

- Confirmed from WHO's official migration page that `ghoapi.azureedge.net` is deprecated from the end of 2025, while the announced World Health Data Hub OData link is still only a placeholder; retained the last documented public contract and disclosed the availability risk.
- Limited data requests to two deadline-aware attempts (proxy then direct), made indicator-name enrichment a single short best-effort request, and kept the indicator code as a safe name fallback.
- Sent `countryFilter` to WHO as an OData filter and reduced capped pages to the exact remaining row count instead of downloading 1,000 rows for a 40-row run.
- Added the nullable `spatialDimensionType` field to the dataset contract so real indicator catalogue rows no longer fail schema validation.
- 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.
- Changed WHO pagination to persist every completed 1,000-row page immediately, preventing a slow final page or platform timeout from discarding thousands of already-fetched records.
- Made request retries aware of the actual Actor deadline, reserved time for a clean exit, and bounded each data request to one proxy attempt followed by one direct attempt.
- Bounded the default output to 5,000 rows, documented the timeout requirements for unlimited exports, and made zero-record upstream failures fail explicitly instead of reporting a misleading successful empty run.
- Added `spatialDimensionType` and relabeled the legacy `country` column as a spatial code so WHO aggregate rows such as `GLOBAL`, `SEAR`, and `WB_HI` are no longer misrepresented as ISO3 countries.
- Declared all 11 emitted fields as nullable and restored `spatialDimensionType`, fixing the live indicators-mode schema-validation failure.
- Kept country filtering inside the WHO OData query and reduced capped pages to the exact remaining row count instead of downloading a full 1,000-row page for small runs.
- Made indicator-name enrichment a single short best-effort request with indicator-code fallback, so deprecated metadata latency cannot block the actual data fetch.
- Verified WHO's official migration notice and documented that the GHO endpoint is deprecated while the advertised WHDH OData replacement link still has no usable URL; avoided a speculative migration.

### 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.
