France Lawyers Scraper: CNB Avocat Directory (Email & Phone)
Pricing
from $17.00 / 1,000 results
France Lawyers Scraper: CNB Avocat Directory (Email & Phone)
Scrape the official CNB directory of ~80,000 French lawyers. Get name, bar (barreau), full address, city, postcode, phone, fax, email, law firm, SIREN, specializations and languages. Filter by name, city, postcode, barreau, spécialité or language. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
France Lawyers Scraper: CNB Avocat Directory (Email & Phone)
Here is one real result, with every field the actor returns:
{"fullName": "Viviane COULOMB-MESSAGER","firstName": "Viviane","lastName": "COULOMB-MESSAGER","civility": "F","barreau": "GRENOBLE","barreauId": "0082","cnbfCode": "047520","email": "viviane.coulomb-messager@avocat.fr","phone": "33438700441","fax": null,"address": "93 rue de L'Industrie","addressLine2": null,"postalCode": "38170","city": "SEYSSINET PARISET","country": "France","firmName": "COULOMB-MESSAGER VIVIANE","legalForm": "CABI","siren": "411091143","siret": "41109114300031","specializations": [],"isSpecialist": false,"languages": ["Français"],"isSalaried": false,"barEntryDate": "1997-01-10","oathDate": null,"aiProfileSummary": "Viviane Coulomb-Messager is a dedicated lawyer based in Seyssinet Pariset, practicing at her own firm, Coulomb-Messager Viviane. She specializes in various legal matters and is fluent in French.","aiLeadScore": 60,"aiLeadTier": "B","aiLeadRationale": "Viviane has significant experience since 1997 and is reachable, but lacks specialization which may limit her appeal for certain legal-tech or professional services.","source": "CNB Annuaire des avocats de France","sourceDate": "2026-07-17","observedAt": "2026-08-14T07:41:05.328Z"}
The most complete France lawyers scraper available. It returns every field the official CNB avocat directory exposes for each of the roughly 80,000 French lawyers, including email, phone, firm, SIREN, specializations and languages, plus two optional AI add-ons, and gives you name, city, postcode, barreau, spécialité and language filters to target exactly the lawyers you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor reads the official CNB (Conseil National des Barreaux) avocat directory, applies the filters you pass as input, and writes one normalized record per lawyer to the run's dataset. Each record carries the lawyer's name and civility, their bar (barreau), the office address split into street, postcode and city, direct contact details (email, phone, fax), the law firm with its legal form and SIREN/SIRET, official specializations, spoken languages and bar entry date. Missing source values are returned as null.
Coverage is the roughly 80,000 lawyers registered across the 164 French bars. Two optional AI add-ons write an outreach-ready profile (withAiProfileSummary) and a B2B lead score with tier and rationale (withAiLeadScore); both are billed only on usable output and require a paid Apify plan.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 3 lawyers matching Paris.
{"cities": ["Paris"],"maxLawyers": 3}
Every input field is optional. Filters are accent-insensitive and match on contains, so cities: ["Paris"] also matches office cities that contain the term. Combine barreaux, postalCodes, specializations and languages to narrow, and set specialistsOnly to keep only certified specialists.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
barreaux | string[] | no | ["PARIS"] | Keep only lawyers registered at these bars, for example PARIS, LYON, MARSEILLE. Accent-insensitive, contains match. |
cities | string[] | no | (empty) | Keep only lawyers whose office city matches one of these (accent-insensitive). |
postalCodes | string[] | no | (empty) | Keep only lawyers whose postcode starts with one of these, for example 75, 69, 13008. |
names | string[] | no | (empty) | Keep only lawyers whose first or last name contains one of these terms. |
specializations | string[] | no | (empty) | Keep only lawyers holding one of these CNB specializations, for example Droit du travail, Droit de la famille. |
languages | string[] | no | (empty) | Keep only lawyers who list one of these spoken languages, for example Anglais, Espagnol. |
specialistsOnly | boolean | no | false | Keep only lawyers who hold at least one official specialization certificate. |
maxLawyers | integer | no | 50 | Maximum lawyer records to return. Free plans are capped at 10. |
withAiProfileSummary | boolean | no | false | AI outreach-ready profile of each lawyer. Billed per enriched record; paid plans only. |
withAiLeadScore | boolean | no | false | AI lead qualification score (0 to 100), tier and rationale. Billed per enriched record; paid plans only. |
Filters combine with logical AND. With no filters at all the actor returns the first lawyers from the directory up to maxLawyers.
Output reference
One dataset item per lawyer. Types: string, boolean, string[], integer, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
fullName | string | Lawyer full name. |
firstName | string | First name. |
lastName | string | Last name. |
civility | string | Civility code, for example F or M. |
barreau | string | Bar (barreau) of registration. |
barreauId | string | Bar identifier code. |
cnbfCode | string | CNBF identifier code. |
email | string | Lawyer email address. |
phone | string | Phone number. |
fax | string | Fax number, or null. |
address | string | Office street address. |
addressLine2 | string | Second address line, or null. |
postalCode | string | Office postcode. |
city | string | Office city. |
country | string | Country (France). |
firmName | string | Law firm name. |
legalForm | string | Firm legal form, for example SARL, CABI. |
siren | string | Firm SIREN. |
siret | string | Firm SIRET, or null. |
specializations | string[] | Official CNB specializations held. |
isSpecialist | boolean | Whether the lawyer holds at least one specialization certificate. |
languages | string[] | Spoken languages. |
isSalaried | boolean | Whether the lawyer is salaried. |
barEntryDate | string | Date of entry to the bar. |
oathDate | string | Oath date, or null. |
aiProfileSummary | string | AI outreach-ready profile (add-on). |
aiLeadScore | integer | AI lead score 0 to 100 (add-on). |
aiLeadTier | string | AI lead tier (add-on). |
aiLeadRationale | string | AI one-sentence lead rationale (add-on). |
source | string | Data source label. |
sourceDate | string | Date of the source directory snapshot. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
Example output record
Real record from a live run without AI add-ons (input {"cities":["BORDEAUX"],"languages":["Espagnol"],"maxLawyers":6}):
{"fullName": "Matthieu BARANDAS","firstName": "Matthieu","lastName": "BARANDAS","civility": "M","barreau": "BORDEAUX","barreauId": "0035","cnbfCode": "083015","email": "barandas@tgb-avocats.fr","phone": "33535140081","fax": "33535140090","address": "55 rue du Loup","addressLine2": null,"postalCode": "33000","city": "BORDEAUX","country": "France","firmName": "GALINAT BARANDAS","legalForm": "SARL","siren": "452053457","siret": null,"specializations": ["Droit du sport"],"isSpecialist": true,"languages": ["Espagnol", "Français"],"isSalaried": false,"barEntryDate": "2006-01-10","oathDate": null,"source": "CNB Annuaire des avocats de France","sourceDate": "2026-07-17","observedAt": "2026-08-06T16:27:41.783Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~france-lawyers-cnb-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"barreaux":["PARIS"],"specializations":["Droit du travail"],"maxLawyers":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~france-lawyers-cnb-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"cities":["BORDEAUX"],"languages":["Espagnol"],"maxLawyers":100}'
Apify CLI:
apify call scrapers_lat/france-lawyers-cnb-scraper \--input '{"postalCodes":["75"],"specialistsOnly":true}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per lawyer record returned (
resultevent). See the pricing tab for the current per-result price. - AI add-ons.
withAiProfileSummaryandwithAiLeadScoreare billed separately per successfully processed record and require a paid Apify plan. They are skipped for free users. - No charge on failure. If a run errors or matches nothing, the actor writes a single item with an
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 lawyers per run. Upgrade for higher
maxLawyers.
FAQ and troubleshooting
A run returned 0 records. Why? The filter combination matched nothing in the directory. Loosen filters (for example drop the specialization or widen the postcode), or check the spelling. Filters are accent-insensitive and match on contains. Zero-result runs are not charged.
Why did a city filter return a lawyer in a different town?
Filters match on contains, so a city term can match an office city that contains it (for example Paris matches SEYSSINET PARISET). Add a postalCodes prefix for tighter geographic targeting.
How do I get only certified specialists?
Set specialistsOnly to true, or pass one or more specializations. The isSpecialist flag and specializations array mark certified lawyers.
Why is fax or siret null on some lawyers?
Not every lawyer lists a fax, and not every firm exposes a SIRET. Missing source values are returned as null, never invented.
What do the AI fields do?
withAiProfileSummary writes an outreach-ready profile, and withAiLeadScore scores each lawyer as a B2B lead with a tier and rationale. Both are optional, billed on usable output, and require a paid plan.
Is this an official CNB tool? No. This actor is independent and has no affiliation with the Conseil National des Barreaux. It reads only publicly available directory data. Use the results in accordance with the source's terms.
Related scrapers
- France Company Registry Scraper (SIREN, Officers, Finances)
- California State Bar Attorney License Scraper
- MacRAE'S Blue Book Industrial Suppliers Scraper
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the Conseil National des Barreaux. Accesses only publicly available directory data. Use the results in accordance with the source's terms.
