# Changelog of OpenSky Flight Scraper — Live Aircraft & ADS-B Data (`logiover/opensky-flight-scraper`) Actor

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

## Changelog

### 2026-10-15

- Every request now has a hard time limit, so a proxy connection that stalls can no longer hold up the run or push it past its timeout.
- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.
- Runs with a short timeout (API and AI-agent calls) now finish inside it with what they collected, instead of being cut off.
- Memory is managed within the run's own limit, which removes a rare out-of-memory crash on large pages.
- The default used when the field is left out for `maxResults` is now 6,666 (was 500).

### 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: 18 columns returned, 88.9% of cells populated.
- Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
- Noted that 1 column(s) came back empty in this sample (`originCountry`); these are under review.

### 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 `{}` now returns live aircraft worldwide (full global grid), bounded by `maxResults`.
- **New `region` dropdown** — pick Worldwide / Europe / North America / Middle East & Asia / Africa / Oceania / South America instead of hand-entering coordinates. Bounding box and custom-center inputs still work and take priority.
- **New `maxResults`** — default 500 keeps empty/worldwide runs fast and cheap; raise up to 20000 to capture every aircraft in view. Scanning now stops early once the cap is hit.
- **Numbers are real numbers** — `velocity`, `trueTrack`, and `verticalRate` are now numeric (were strings). `snapshotTime` is now a numeric Unix timestamp (was a string). `onGround` is now a real boolean (was `"true"`/`"false"` strings). Added `geoAltitude` (geometric altitude, meters).
- **Proxy** — defaults to Apify Proxy (AUTO); automatically falls back to a direct connection on the final retry (the adsb.lol API is open).
- **Graceful runs** — added a ~4 minute time budget; the run pushes what it has and exits successfully rather than hard-failing.
- **Schema** — added `fields` (with nullable-safe types) to the dataset schema so numeric columns render correctly and null values don't get rejected.
