# Changelog of GBIF Biodiversity Scraper — Species, Occurrences & Datasets (`logiover/gbif-biodiversity-scraper`) Actor

- **URL**: https://apify.com/logiover/gbif-biodiversity-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/gbif-biodiversity-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 prefilled example for `maxResults` is now 333 (was 500).
- The default used when the field is left out for `maxResults` is now 6,666 (was 300).

### 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: 26 columns returned, 92.8% 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.

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

- **All filters optional** — removed the required `mode`; empty input `{}` now returns the most recent occurrence records (GBIF has 3.9B+).
- **New `country` dropdown** (50+ countries by ISO 3166-1 alpha-2) instead of free text.
- **Numbers stored as real numbers**: `key`, `taxonKey`, `year`, `decimalLatitude`, `decimalLongitude` (previously several were strings).
- **Better species output**: species search now fills `taxonKey` from the GBIF backbone key and `basisOfRecord` from the taxonomic rank (were null before).
- **Proxy**: default is now Apify automatic proxy (was OFF); it **rotates to a fresh IP on every request/retry**, validates the response shape (rejects soft-empty bodies from bad proxy IPs and retries), and falls back to a direct connection on the final attempt — preventing intermittent 0-row runs.
- **Graceful & bounded**: ~4-minute pagination time budget across all modes; top level logs errors instead of hard-failing.
- Dataset schema gained a full `fields` JSON-schema with titles + descriptions; numeric fields display as numbers.
