# IAD France Advisors · Phones & Emails by Region (`corent1robert/iad-scraper`) Actor

Get IAD France advisors as a CRM table by region or postcode. Names, phones, emails, cities, listings — one row per advisor. No login, no API key.

- **URL**: https://apify.com/corent1robert/iad-scraper.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation, Real estate, Automation
- **Stats:** 15 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.39 / 1,000 iad advisors

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## IAD France Advisors

**Start the Actor → get IAD France property advisors as a CRM table.** Pick a region (or a postcode). One export-ready row per person — name, phone, email, city, listings.

**No login. No API key. No IAD account.**

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| B2B supplier (proptech, insurance, mortgage) | Prospect IAD advisors in one territory | Region = Île-de-France, Basic, 25-row preview |
| Outbound / SDR | Personalised sequences with a LinkedIn URL | Premium (needs an autom.dev key) |
| Sales / CRM ops | Enrich a département file | Region + postcode `69` or `75`, Outreach / CRM view |
| Market research / data agency | National snapshot or monthly newcomers | All France, 100 rows — or **Only new since last run** |
| Agency / lead gen | Phones and emails for a campaign | [Phones in Rhône (69)](https://apify.com/corent1robert/iad-scraper/examples/iad-france-advisor-phones-emails) |

**What you get by default:** name, decoded phone, directory email, city, postal code, region, listings, reviews, profile URL.

**When to use Premium:** you need a LinkedIn URL per advisor for sequencing. Basic already includes phone and email.

### Quick start

1. Open this Actor in the [Apify Console](https://console.apify.com/). Leave **Data included** on Basic and **Region** on All France.
2. Keep **How many advisors** at `25` for a first look.
3. Click **Start** — rows appear in the Dataset tab as they complete.
4. For a territory: set **Region** (e.g. Île-de-France) or type a postcode (`75`, `69001`, `33, 44`). Set `0` for every match.

### Ready-made examples

| You want… | Task |
|-----------|------|
| CRM preview in Île-de-France (25) | [Export IAD advisors in Île-de-France for CRM](https://apify.com/corent1robert/iad-scraper/examples/iad-france-advisors-crm-export) |
| Phones and emails in Rhône (69) | [Get IAD France advisor phones and emails](https://apify.com/corent1robert/iad-scraper/examples/iad-france-advisor-phones-emails) |
| National snapshot (100) | [IAD France advisor directory snapshot](https://apify.com/corent1robert/iad-scraper/examples/iad-france-directory-snapshot) |
| Monthly newcomers (All France) | [IAD France monthly new advisors only](https://apify.com/corent1robert/iad-scraper/examples/iad-france-larger-advisor-sample) |

### What it extracts

| Field | Description |
|-------|-------------|
| `fullName`, `firstName`, `lastName` | Advisor name |
| `phone` | Phone when published on the card |
| `email` | Directory email (`firstname.lastname@iadfrance.fr`) |
| `city`, `postalCode`, `region` | Location |
| `url` | Public profile URL |
| `propertyCount`, `reviewsCount`, `reviewsRatingAverage` | Activity |
| `rsac`, `rsacPlace` | RSAC when published |
| `directory_change` | `new` on monthly-delta runs (empty otherwise) |
| `linkedin_url`, `linkedin_score` | Premium only |

### Typical fill rates

| Signal | Indicative rate |
|--------|-----------------|
| Directory email (pattern) | ~100% of saved rows |
| Phone when published on the card | High on active advisors |
| LinkedIn URL (Premium) | Depends on a public Google match |

The email is the **directory pattern**, not a verified personal inbox. Treat it as a starting point for outreach.

### How much does it cost to scrape IAD France advisors?

Pay-per-event. You pay for **saved rows**, not for profiles skipped by a region or postcode filter.

| Event | Price |
|-------|-------|
| **IAD Advisor** (Basic) | **$1.99 / 1,000** |
| **IAD Advisor + LinkedIn** (Premium) | **$7.00 / 1,000** |

| Scenario | Approx. cost |
|----------|----------------|
| 25 advisors — Basic (Try) | ~$0.05 |
| 1,000 advisors — Basic | ~$1.99 |
| Full directory ~16,000 — Basic | ~$32 |
| 50 advisors — Premium | ~$0.35 (+ autom.dev) |

HTTP-only (no browser). Platform compute is included in the row price for typical runs.

### Is scraping IAD France free?

Apify **Free plan: 20 advisors per run**. Paid plans follow the table above.

### Is it legal to scrape IAD France?

This Actor only reads the **public IAD France directory**. Names, locations, listing counts and RSAC numbers are published for public consultation. As with any file containing personal data, ensure your use complies with GDPR and applicable regulations.

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `tier` | string | `basic` | `basic` or `premium`. Premium needs `AUTOM_DEV_API_KEY`. |
| `region` | string | `all` | `all` or an IAD region key (`ile-de-france`, `pays-de-la-loire`, …). |
| `postalCodes` | string | — | Optional. `75`, `69001`, or `33, 44`. Department digits match as a prefix. |
| `maxResults` | integer | `25` | How many **matching** rows. `0` = every match. Free plan: 20 / run. |
| `onlyNewSinceLastRun` | string | `no` | `yes` = first run saves a baseline (0 billed rows); later runs export new slugs only. Same region + postcodes = same baseline. |

API-only (not shown in Console): `maxConcurrency` (default 50), `verboseLogs` (default false), `resetDelta` (`true` clears the monthly baseline), `proxyConfiguration` (cloud defaults to Apify datacenter proxy).

**Try (All France, 25):**

```json
{
  "tier": "basic",
  "region": "all",
  "maxResults": 25
}
```

**Île-de-France:**

```json
{
  "tier": "basic",
  "region": "ile-de-france",
  "maxResults": 25
}
```

**Rhône (69):**

```json
{
  "tier": "basic",
  "region": "auvergne-rhone-alpes",
  "postalCodes": "69",
  "maxResults": 50
}
```

**Full directory, Basic:**

```json
{ "tier": "basic", "region": "all", "maxResults": 0 }
```

**Monthly newcomers (after a first dump):**

```json
{
  "tier": "basic",
  "region": "all",
  "maxResults": 0,
  "onlyNewSinceLastRun": "yes"
}
```

### Output example

```json
{
  "fullName": "Pauline Jugan",
  "firstName": "Pauline",
  "lastName": "Jugan",
  "email": "pauline.jugan@iadfrance.fr",
  "phone": "+33619455413",
  "city": "Nantes",
  "postalCode": "44000",
  "region": "Pays de la Loire",
  "url": "https://www.iadfrance.fr/conseiller-immobilier/pauline.jugan",
  "propertyCount": 14,
  "reviewsCount": 37,
  "directory_change": "",
  "extractedAt": "2026-08-20T12:00:00.000Z"
}
```

Download in JSON, CSV, Excel, or HTML from the Dataset tab.

### How it works

1. Reads the public IAD France advisor directory.
2. Opens each profile until **How many** matching rows are saved (region and postcode applied **before** billing).
3. Writes one CRM row as soon as the advisor matches — you see the Dataset fill during the run.
4. **Premium only:** looks up a LinkedIn URL when a public match is found.

### Timeout & resurrection

A full-directory run (~16,000 rows) uses the default **2 hour** timeout. If a run stops early, open **Runs → Actions → Resurrect**. Already saved advisors are not billed again.

### Monthly delta

Turn **Only new since last run** to Yes on a schedule:

1. First run with your region / postcodes: **0 billed rows** — today’s slugs are stored as a baseline.
2. Later runs: only **new** advisors are saved (`directory_change`: `new`).
3. Same filters = same baseline. API-only `resetDelta: true` starts over.

The first nationwide baseline walks the full directory (compute only — no row charge).

### Limitations

- Directory email is a **pattern** (`slug@iadfrance.fr`), not a confirmed mailbox.
- Premium requires an [autom.dev](https://app.autom.dev) API key. Without it, the run stops with a clear error.
- Region and postcode need a profile read — skipped profiles are not billed.

### Local development

```bash
npm install
npm run build
apify run --input-file=./.actor/INPUT.json
```

For Premium locally:

```bash
AUTOM_DEV_API_KEY=your_key apify run
```

Local `storage/` is not synced to Apify Console.

### Support

Contact <corentin@outreacher.fr> for custom integrations.

Ready? Leave Region on **All France**, How many on **25**, and click Start.

### Also available — French real estate advisors

Need several networks in one file? **[French Real Estate Agents · Multi-network](https://apify.com/corent1robert/fr-realty-agents-hub)**.

| Actor | What you get |
|-------|----------------|
| **[Optimhome Advisors](https://apify.com/corent1robert/optimhome-conseillers)** | Optimhome — names, phones, emails, RSAC |
| **[Keller Williams France](https://apify.com/corent1robert/kw-france-conseillers-scraper)** | KW advisors — emails, phones |
| **[SAFTI](https://apify.com/corent1robert/safti-france-consultants)** | SAFTI advisors — emails, phones |
| **[Sextant France](https://apify.com/corent1robert/sextant-agents-scraper)** | Sextant — emails, phones, GPS |
| **[Efficity Consultants](https://apify.com/corent1robert/efficity-consultants)** | Efficity — emails, phones |
| **[megAgence](https://apify.com/corent1robert/megagence-consultants)** | megAgence — phones and GPS |
| **[BSK Immobilier](https://apify.com/corent1robert/bsk-immobilier-consultants)** | BSK — emails, phones |
| **[Les Porteclés](https://apify.com/corent1robert/les-portecles-agents)** | Names and GPS |

Browse all: **[apify.com/corent1robert](https://apify.com/corent1robert)**

# Actor input Schema

## `region` (type: `string`):

Get advisors in one French region — or keep All France for a national file.

## `postalCodes` (type: `string`):

Narrow further. Examples: 75 (Paris), 69001, or 33, 44. Leave empty for the whole region.

## `tier` (type: `string`):

Basic: name, phone, email, city, listings, reviews. Premium: the same plus a LinkedIn URL when we can match the advisor.

## `maxResults` (type: `integer`):

How many matching rows to save. Start with 25. Set 0 for every match. Free plan: 20 per run.

## `onlyNewSinceLastRun` (type: `string`):

No: export everyone who matches. Yes: first run saves today’s directory (0 billed rows); later runs export only new advisors. Same region and postcodes = same baseline.

## Actor input object example

```json
{
  "region": "all",
  "tier": "basic",
  "maxResults": 25,
  "onlyNewSinceLastRun": "no"
}
```

# Actor output Schema

## `dataset` (type: `string`):

All advisor rows

## `overview` (type: `string`):

Name, city, phone, email, listings

## `outreachCrm` (type: `string`):

First name, last name, email, phone, city

## `runLog` (type: `string`):

Text log mirrored from the run console

## `apiRun` (type: `string`):

Apify GET for run metadata

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "region": "all",
    "tier": "basic",
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/iad-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "region": "all",
    "tier": "basic",
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/iad-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "region": "all",
  "tier": "basic",
  "maxResults": 25
}' |
apify call corent1robert/iad-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/iad-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2vqKmzgzXHVomSWAY/builds/75bIGH4p6nlHwhM6C/openapi.json
