# Changelog of Efficity Consultants · Full profiles infos (emails, phones) (`corent1robert/efficity-consultants`) Actor

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

## Changelog

All notable changes to this Actor are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### \[1.1.1] - 2026-08-27

#### Fixed

- **Try Apify** no longer times out at 5 minutes after scanning the whole France directory. Short runs (Try / 5-minute timeout / Limited permissions) and the **Free plan** cap at **20 consultants**, stop listing once that cap is reached, and finish with dataset rows instead of `TIMED-OUT`.

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

#### Changed

- README Also available: retired eXp / Espaces Atypiques Store listings removed — use the French Real Estate Agents hub.
- **Throughput:** Directory and profile phases use a **worker pool** (`mapPool`) so the next request starts as soon as a slot frees — faster than fixed `Promise.all` batches when response times vary. Defaults **40** (directory) / **55** (profiles); caps **80** / **100**. `undici` connection pool sized accordingly.
- **Profile phase:** Each worker now **pushes to the dataset inside the pool** (streaming rows) instead of buffering all parsed profiles then pushing — faster time-to-first-row, lower peak memory, and throughput includes parse + push in the progress rate. Progress log shows **warming up...** until ~20 profiles so ETA is less misleading at the start.
- **Logging:** Run output uses **`apify` `log`** (secret-safe) with the same lines mirrored to **RUN_LOG** in the key-value store.
- **Platform status:** `Actor.setStatusMessage` strings are ASCII English (no Unicode ellipsis in status lines).
- **`actor.json`:** Added **categories** for the Store; **`generatedBy`** at top level; **seoDescription** tightened; version **1.1**.
- **Input schema:** Field titles and descriptions reframed for buyers (outcomes and when to use limits), not implementation jargon.
- **README:** Expanded with **How it works**, **Sample output**, **Run log**, and clearer **Local development** notes.

#### Fixed

- **Listing phase logs:** Progress updates every **5%** (and 100%) with elapsed time; the earlier modulo condition almost never matched batch size, so only a 100% line appeared.

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

#### Changed

- **Local runs:** After the run, the dataset is exported to **`output.csv`** at the project root (Excel-friendly UTF-8 BOM, `;` separator).
- **CSV layout:** Fixed column order with readable headers; arrays (`phones`, `specialties`, `services`) as `value | value`; `priceM2Estimate` split into four columns; unknown fields appended as `Extra: …`.

#### Added

- **Full directory mode** — Scans `consultants-immobiliers` root for city (`v_`), department (`d_`), and region (`r_`) listing pages, collects unique consultant slugs, then fetches each profile.
- **URLs mode** — Enriches specific `https://www.efficity.com/{slug}/` profile URLs.
- **Dataset fields** — Name, headline, subtitle, city/department hints, phones, decoded email (Cloudflare), photo URL, Immodvisor link and rating text, specialties, services, short and full “about” text, optional local m² price band when present.
- **RUN_LOG** — Console output mirrored to the default key-value store for live progress.
- **`Actor.setStatusMessage`** on Apify Cloud for readable run status.
- **English** Console schemas and README for the Store.
