PagesJaunes Scraper 🇫🇷 Email, SIRET, GPS — France Leads avatar

PagesJaunes Scraper 🇫🇷 Email, SIRET, GPS — France Leads

Pricing

from $0.96 / 1,000 business records

Go to Apify Store
PagesJaunes Scraper 🇫🇷 Email, SIRET, GPS — France Leads

PagesJaunes Scraper 🇫🇷 Email, SIRET, GPS — France Leads

Scrape PagesJaunes (French Yellow Pages) by city + category. Returns business name, phone, email (website-enriched), website, full address, GPS, SIRET/SIREN, rating, opening hours + a data-quality score. The richest French B2B lead dataset on the Store. Pay per result.

Pricing

from $0.96 / 1,000 business records

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

French B2B leads from PagesJaunes — phone, email, SIRET/SIREN, GPS, website, opening hours. Pay per result, no monthly fee.

PagesJaunes is the authoritative French business directory — 3M+ listings covering every city and trade. This scraper turns it into clean, structured B2B lead records with the richest field set on the Store for this source: registration numbers (SIRET/SIREN), GPS coordinates, and website-enriched email that other scrapers don't provide. Build a targeted list of plumbers in Paris, real-estate agencies in Lyon, or lawyers in Marseille in minutes.

What it does

For each search (city + category) the actor:

  1. Fetches the /annuaire/<city>/<category> listing pages (~20 results/page, up to ~480 per search).
  2. Fetches each business detail page (/pros/<id>) for phone, SIRET/SIREN, GPS, rating, hours, website.
  3. When a website is present, crawls it for a public B2B email (see Email enrichment).
  4. Returns a flat, normalized record per business with a data-quality score.

Input

FieldTypeRequiredDescription
citystringyesCity slug (e.g. paris-75, lyon-69, marseille-13)
categorystringyesCategory slug (e.g. plombiers, restaurants, agences-immobilieres)
maxItemsintegernoMax results (0 = all available). Default: 40
enrichEmailbooleannoCrawl business websites for a public email. Default: on

City slugs = lowercase city name + hyphen + department number (paris-75, lyon-69, marseille-13, bordeaux-33). Category slugs = the French plural noun as in the URL (plombiers, restaurants, avocats, agences-immobilieres).

Output schema

FieldTypeDescription
namestringBusiness display name
phonestringPhone number (French format)
emailstringPublic B2B email, website-enriched (null if none public)
websitestringOfficial business website URL
streetstringStreet address
postalCodestringFrench 5-digit postal code
citystringCity name
latitude / longitudenumberGPS coordinates
siret / sirenstringOfficial French business registration numbers
detailUrlstringCanonical PagesJaunes URL (/pros/ID)
imagestringBusiness photo URL
rating / reviewCountnumber / integerAggregate rating + review count
categoryTypestringSchema.org business type (e.g. "Plumber")
openingHoursstringOpening hours
descriptionstringBusiness description
parse_confidencenumberData-quality score 0.0–1.0 — unique to this Actor
warningsarrayMachine-readable quality-warning codes

Why this beats other PagesJaunes scrapers

This ActorTypical PagesJaunes scrapers
SIRET / SIRENSometimes
GPS coordinatesRarely
Email✅ verified, website-sourced, domain-matchingOften guessed (spam risk) or absent
Opening hours (structured)Rarely
Data-quality score✅ unique
ReliabilityMulti-tier transport with IP-rotation + browser fallbackSingle-tier (breaks on Cloudflare)

Every record ships a parse_confidence score — below 0.7 is a machine-readable signal your pipeline can filter automatically. No other PagesJaunes scraper offers this.

How to scrape email from PagesJaunes

PagesJaunes deliberately hides email behind an internal contact form — there is no email on the listing page. When a business publishes its own website, this Actor crawls that site (homepage + legal/contact pages) for a public, verified B2B email, filters out consumer webmails (gmail, orange…), and prefers an address on the business's own domain. Email coverage tracks how many businesses in your category have a website — high for agencies and commerce, lower for small trades. Toggle off with Enrich email from website.

Compliance (France / EU): these are public professional emails. For cold outreach under French B2B (CNIL opt-out) rules, your first email must identify you, state its purpose and the source of the data, and offer a one-click opt-out; avoid tracking pixels. You remain the data controller.

How much does it cost?

Pay-per-result: scraping 1,000 businesses costs about $0.99 (see the Pricing tab for the exact current price). No monthly fee; failed runs aren't charged.

Run sizeApprox. cost
100 businesses$0.10
500 businesses$0.50
1,000 businesses$0.99
5,000 businesses$4.95

The residential French proxy is billed to your own Apify account as platform usage.

Reliability

PagesJaunes uses Cloudflare protection. This Actor uses a resilient multi-tier transport — fresh-IP rotation on blocks with a browser fallback for persistent challenges — on both listing and detail pages, so runs stay green where single-tier scrapers fail. A residential FR proxy is prefilled (required — Cloudflare blocks datacenter IPs).

FAQ

Do I need a proxy or API key? No external API key. A residential French proxy is prefilled and uses Apify's own Residential pool (billed to your account).

What export formats? JSON, CSV, Excel, XML — from the dataset page or the Apify REST API.

Why is email empty for some businesses? Email exists only when the business has a website that publishes one. Many small trades have neither.

Can I schedule runs? Yes — Apify Scheduler, n8n, Make, or Zapier.

Is scraping PagesJaunes legal? This Actor extracts only publicly visible, non-protected business data for legitimate B2B research. You remain the data controller for any outreach — follow GDPR / CNIL B2B rules.

Use with AI agents (MCP)

This scraper is callable as a tool by AI agents (Claude Desktop, Cursor, VS Code, n8n, LangGraph, CrewAI, or any MCP-compatible client) via Apify's hosted Model Context Protocol server — e.g. "find plumbers in Paris with phone and SIRET", "list real-estate agencies in Lyon with emails for outreach".

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com/?tools=bovi/pagesjaunes-directory",
"--header",
"Authorization: Bearer <YOUR_APIFY_TOKEN>"
]
}
}
}

Minimal call (returns up to 40 results by default):

{ "city": "lyon-69", "category": "agences-immobilieres", "maxItems": 20 }

Returns clean, flat rows the agent can reason over directly:

{
"name": "Régie Thiébaud",
"phone": "04 78 24 35 09",
"email": "rtcb@regiethiebaud.fr",
"website": "http://www.regie-thiebaud.fr",
"street": "12 Rue de la République",
"postalCode": "69002",
"city": "Lyon",
"latitude": 45.764065,
"longitude": 4.858097,
"siret": "89428783800029",
"siren": "894287838",
"categoryType": "RealEstateAgent",
"rating": 4.3,
"reviewCount": 18,
"parse_confidence": 1.0,
"warnings": []
}

Integrations

The JSON/dataset output drops into the tools you already run, no glue code:

  • n8n / Make / Zapier — pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your CRM): n8n, Make, Zapier.
  • Webhooks — fire your endpoint the moment a run finishes (docs).
  • MCP server — expose this Actor as a tool to Claude, Cursor, or any MCP client.
  • API & SDKs — fetch the dataset as JSON/CSV/Excel via the Apify REST API or Python/JS SDKs.

See all Apify integrations.

Disclaimer

This Actor is not affiliated with or endorsed by PagesJaunes / Solocal Group. It accesses publicly available data only.