# Changelog of Open Beauty Facts Scraper — Cosmetics & Personal Care (`logiover/open-beauty-facts-scraper`) Actor

- **URL**: https://apify.com/logiover/open-beauty-facts-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/open-beauty-facts-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 200).

### 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, 79.8% 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

- **Nothing required + empty input works.** Removed the mandatory `mode` field (`required: []`). Empty input `{}` now returns data: it browses the most-scanned products across all categories instead of erroring.
- **Fixed null-input crash.** Previously an empty/missing input could throw (`Cannot destructure ... of undefined`); input now defaults to `{}` safely.
- **Graceful empty modes.** `category` with no category and `product` with no barcodes now fall back to a broad product listing rather than doing nothing.
- **New dropdowns.** Added a `country` filter (30 countries) and a `sort` order (most scanned / recently added / recently modified / name / most complete) as select menus. Categories, brands and barcodes stay free-text (open-ended).
- **Numbers as real numbers.** Added `uniqueScansN`, `completeness`, `createdT`, `lastModifiedT` as numeric fields, plus `nutriscoreGrade`. Existing field keys are unchanged.
- **Proxy.** No longer forces the dead/legacy proxy group (`SHADER`); defaults to Apify automatic proxy with a fresh IP per retry and a direct-connection fallback on the final attempt (public API).
- **Graceful runs.** Added a ~4-minute pagination time budget; the top level logs errors instead of hard-failing the run.
- **Schemas.** Added a nullable-safe dataset `fields` schema (title + description per field); numeric columns render with `format: number` and product links with `format: link`.
