# Changelog of French Establishments · All Sites by SIREN (`corent1robert/french-establishments-scraper`) Actor

- **URL**: https://apify.com/corent1robert/french-establishments-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/corent1robert/french-establishments-scraper.md

## Changelog

All notable changes to this Actor are documented here.

The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). Actor versions use **MAJOR.MINOR** (Apify convention).

### \[1.3] - 2026-09-07

#### Added

- **Standby HTTP lookup** (`GET`/`POST` `/lookup`): `siren` or `sirens`, hard cap 5. Standby caps 20 active establishments per SIREN. Full dumps stay on Start.

### \[2026-09-01]

#### Changed

- Free plan cap: 20 rows per run. Anonymous Try off.

### \[1.2] - 2026-06-05

#### Changed

- **README — Related actors** — cross-links to French Accountants and Notaires.fr directories.
- Store snippet + README: company-register suite (French Companies, BODACC).

### \[1.1] - 2026-05-04

#### Fixed

- **Input validation: graceful exit instead of crash** — `throw new Error()` on empty/invalid SIREN list replaced with `await Actor.fail(statusMessage)`. The Actor now exits cleanly with a human-readable status message in the Apify console instead of crashing with a Node.js stacktrace.
- **No charge for failed SIRENs** — SIRENs not found in the official register or that fail during fetch are now logged only (warning/error in run log). Previously, an `_error` row was pushed to the dataset for each failed SIREN, billing the user for a result with no establishment data. Failed SIRENs are still counted in the run summary (`X failed`).

### \[1.0] - 2026-04-28

#### Added

- **Initial release.** Fetch all establishments (SIRET) for a list of French SIRENs using `recherche-entreprises.api.gouv.fr`.
- **Two-step resolution per SIREN:** (1) resolve company name, (2) fetch all matching establishments with `limite_matching_etablissements=25` + pagination.
- **Filters:** `activeOnly` (default on), `includeHeadquarter`, `maxPerSiren` cap.
- **Transform pipeline:** flat output rows with NAF labels, department/region names, headcount band labels, GPS coordinates.
- **Input validation:** SIREN normalization (trim, 9-digit pad, duplicate skip), clear errors on invalid input.
- **Reliability:** exponential back-off on HTTP 429/503 (up to 10 retries), per-SIREN try/catch so one failure does not abort the full run.
- **Dataset views:** "Establishments overview" table in the Apify Console.
- **Unit tests:** `node --test` for SIREN normalization, transform, HTTP helpers, and enrich logic.
- **Companion cross-link:** README references the French Companies Scraper for upstream SIREN discovery.
