# Changelog of FDA Data Scraper - openFDA Recalls & Events (`logiover/fda-data-scraper`) Actor

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

- Corrected `device/recall` newest sorting to openFDA's live `event_date_posted` field; exact verification saved 40 correctly ordered current recall rows.
- Added the 17 device-recall fields observed in the live payload to the dataset contract and overview, including recall IDs/dates/status, FEI, product codes, 510(k)s and native `openfda` metadata.
- Auto routing now gets a final direct verification, route exhaustion fails explicitly, and a first-batch schema/storage failure can no longer be counted as saved data.
- 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.
- Corrected device recalls to sort by openFDA's live `event_date_posted` field, added a direct final-route verification for auto proxy selection, and made total route failure fail explicitly instead of succeeding empty.
- Declared all 17 additional fields observed in the live device-recall feed and fixed saved-row accounting so first-batch schema or storage failures cannot be reported as successful output.

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

- Added a **Sort Order** dropdown (Newest first / Oldest first / Default). It automatically sorts by each dataset's primary date field (report date for recalls, receive date for adverse events, decision date for 510(k)s, etc.).
- Confirmed no input is required — running with empty input `{}` returns the most recent Drug Recalls, bounded by Max Records.
- Added a full dataset field schema (titles + descriptions) for the common recall/enforcement fields; other openFDA fields still pass through untouched.
- Added a 4-minute pagination time budget and top-level error handling so long runs finish gracefully with whatever was collected.

### 2026-06-28

- Health check passed — actor verified working end-to-end on Apify platform.
- Changelog refreshed for Store quality compliance.

### 2026-06-20

- Maintenance & reliability pass: re-verified end-to-end against live data and confirmed the Actor completes successfully within the 5-minute quality window on the default input.
- Refreshed the prefilled example input and tuned run defaults for faster, lower-cost runs.
