# Changelog of SAFTI · Advisor Emails & Phones (`corent1robert/safti-france-consultants`) Actor

- **URL**: https://apify.com/corent1robert/safti-france-consultants/changelog.md
- **Full Actor documentation**: https://apify.com/corent1robert/safti-france-consultants.md

## Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### \[1.4] - 2026-09-29

#### Changed

- Console default **20** rows (`0` = unlimited for paying users).
- Free accounts hard-capped at **5** rows even when `maxResults` is 0.
- Charge-then-push: no dataset write when `chargedCount === 0`.
- Pay-per-event: email ~$4/1k, phone ~$2.49/1k, basic ~$1.49/1k, actor-start $0.01.

### \[1.3.0] - 2026-08-24

Store version: **1.3**.

#### Fixed

- Full France runs no longer die on a 5-minute timeout mid-profile: remaining advisors are saved from the directory list (name, phone, city) so the dataset is complete. Open profiles for bios and RSAC while time remains (~15 minutes for all ~6,400).
- Default run timeout is 8 hours so Console **Start** is not capped at 5 minutes.

#### Changed

- README Also available: retired eXp / Espaces Atypiques Store listings removed — use the French Real Estate Agents hub.
- **Max advisors** is visible in the Console (`0` = national directory).
- Rows set `profileEnriched` (`true` from a profile page, `false` from the listing).

### \[1.2.0] - 2026-04-04

#### Fixed

- **Input merge on Apify Cloud:** `input.json` is no longer merged when `Actor.isAtHome()` — the run input from the Console/API always wins. This fixes `mode: "urls"` being overridden so URL-only runs no longer scan the full directory.

### \[1.1.0] - 2026-04-04

#### Added

- **`email`**: inferred as `prenom.nom@safti.fr` from first and last name (accents removed, lowercase) when the site does not expose an address.
- **`emailDerived`**: `true` when the email was guessed (so it is distinguishable from any future scraped field).

### \[1.0.0] - 2026-04-04

#### Added

- Initial release: **Full directory** mode (paginated `trouver-un-conseiller` listing + profile pages) and **URLs** mode (`/votre-conseiller-safti/{slug}/`).
- Dataset fields: identity, geography, phones (normalized `+33` format), RSAC, social links, presentation text, listings count, optional Google rating fields.
- **RUN_LOG** key-value mirror of structured logs; local **output.csv** export when running via CLI.
- Input schema with hidden performance fields; `maxResults` prefill for Console quick tests only (default 0 = no limit).
