Safti Consultants · Full profiles infos (emails, phones) avatar

Safti Consultants · Full profiles infos (emails, phones)

Pricing

from $9.99 / 1,000 results

Go to Apify Store
Safti Consultants · Full profiles infos (emails, phones)

Safti Consultants · Full profiles infos (emails, phones)

Export SAFTI advisors from the public finder: contacts, RSAC, areas, listings, socials, bios. Full France run or paste profile URLs. CRM-ready. Custom work: corentin@outreacher.fr

Pricing

from $9.99 / 1,000 results

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

SAFTI France Advisors Scraper

Export SAFTI real estate advisors from the public finder at safti.fr/trouver-un-conseiller. You get export-ready rows: names, phones, RSAC, coverage areas, listings count, social links, and full presentation text — for CRM, prospecting, or territory mapping.

Built for: Lead lists · Territory mapping · CRM enrichment · Market research

Custom automation or integrations: corentin@outreacher.fr


What does it do?

ModeWhat you getBest for
Full directoryEvery advisor listed on the paginated finder, then one row per profile pageNational or large-scale export
URLsOnly the profile pages you pasteRefreshing or enriching an existing list

The site embeds structured data in the first HTML response (__NEXT_DATA__). This Actor uses HTTP only (no browser): listing pages for slugs, then profile pages for full text, RSAC, and social links.

Email: The public JSON does not include an email field. Rows set email to the usual pattern prenom.nom@safti.fr (accent-stripped, lowercase) and emailDerived: true so you can tell guessed addresses from any future scraped value. Always verify before sending mail.


How it works

  1. Full directory: Load page 1 of the finder to read the total advisor count and page size, build the page range, then fetch listing pages with a bounded worker pool (your Directory parallelism input, default 40). Each page contributes advisor slugs; duplicates are removed as you go.
  2. URLs: Parse safti.fr/votre-conseiller-safti/{slug}/ links into slugs (duplicates removed).
  3. Profiles: Same pool pattern for profile URLs (Profile parallelism, default 55). Each slot runs fetch → parse embedded JSON → pushData so rows appear while other profiles still load.
  4. Local only: After a successful run, write output.csv next to the project (UTF-8 BOM, ; separator) for Excel.

Output fields

CategoryFields
Identityslug, displayName, firstName, lastName, subtitle / principalArea
Geographycity, postCode, ville, departement, otherAreas, locations
Contactemail, emailDerived, phones, profileUrl, photoUrl
Compliance / trustrsac, nbProperties, googleMBRating, googleMBUrl
Socialfacebook, linkedin, instagram, twitter
CopyaboutFull (presentation text)

Use the Dataset view Advisors — Overview for a slim table; the default dataset contains full rows.


Sample output (one advisor)

{
"slug": "sophie-charlon",
"profileUrl": "https://www.safti.fr/votre-conseiller-safti/sophie-charlon",
"displayName": "Sophie CHARLON",
"subtitle": "MONTELEGER (26760)",
"city": "MONTELEGER",
"postCode": "26760",
"email": "sophie.charlon@safti.fr",
"emailDerived": true,
"phones": ["+33 6 87 36 90 96"],
"rsac": "848 775 078 RSAC ROMANS",
"nbProperties": 2
}

Run log and status

  • Console / Apify log: Phase banners (====), progress lines, counts, and duration — English only.
  • RUN_LOG: The same lines are written to the default key-value store as RUN_LOG (text) so you can follow progress while the run is active.
  • Run page: On Apify Cloud, short status messages describe the current phase (listing, fetching profiles, done).

Quick start (Apify Console)

  1. Create a run and choose Full directory or URLs.
  2. For URLs, paste links such as https://www.safti.fr/votre-conseiller-safti/sophie-charlon/.
  3. Optional: set Max advisors via API or local input.json for a trial (Full directory only). The form prefill for quick tests does not change API defaults (0 = no cap).
  4. Open Dataset for JSON/CSV export, or Key-value store → RUN_LOG for live text progress.

Input examples

Full directory (no cap):

{
"mode": "list"
}

Full directory — first 50 advisors after listing:

{
"mode": "list",
"maxResults": 50
}

URLs only:

{
"mode": "urls",
"startUrls": [{ "url": "https://www.safti.fr/votre-conseiller-safti/sophie-charlon/" }]
}

Local development

npm install
npm test
apify run
  • Local runs: defaults from input.json are merged first; then Actor.getInput() overwrites (so apify run / CLI input wins).
  • Apify Cloud: input.json is ignored — only the run input from the Console or API is used (so mode: "urls" is not overwritten by a leftover file in the image).
  • Dataset JSON files are written under storage/datasets/default/.
  • After a run, output.csv is written at the project root when not on Apify Cloud.

Important

  • Public data only — Use exported data in line with applicable law and your own compliance review.
  • Availability — The site layout or embedded JSON shape can change; if a run returns empty rows, check the Actor version and open an issue with a sample URL.

Support

Contact corentin@outreacher.fr if you need a custom scraper, scheduling, or data delivery integration.