# 🇫🇷 Yellow Pages France Scraper - Emails & Leads (`confidential_gnat/yellowpages-france-scraper`) Actor

Scrape French businesses from PagesJaunes, the Yellow Pages of France (pagesjaunes.fr), with emails: name, address, phone, website, rating, SIRET and employee emails found on each business website. Search by activity and city or paste a URL. Export JSON, CSV or Excel.

- **URL**: https://apify.com/confidential_gnat/yellowpages-france-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🇫🇷 Yellow Pages France Scraper - Emails & Leads

![Yellow Pages France Scraper - Emails & Leads cover](https://i.postimg.cc/5NJ19GWB/Gemini-Generated-Image-d8qfrhd8qfrhd8qf.jpg)

**Scrape businesses from PagesJaunes (Yellow Pages France) (pagesjaunes.fr)**: name, address, phone, website, rating, review count, opening hours, services, SIRET and company details. Export to JSON, CSV or Excel, or call it as an **API**. Paste a **PagesJaunes search URL**, or give search terms and locations, and press Start. **Emails too:** employee emails found on each business website (PagesJaunes does not publish business emails on its pages).

**Target website:** [PagesJaunes (Yellow Pages France) (pagesjaunes.fr)](https://www.pagesjaunes.fr)

### ✨ Features of this PagesJaunes business scraper

- **Email extraction** — employee emails found on each business website (PagesJaunes does not publish business emails on its pages).
- **Business listing extraction** — name, address, activity, services, rating, review count and a short description from any PagesJaunes search or category page.
- **Pagination support** — walks the result pages of each search until it has the number of businesses you asked for.
- **Search terms and locations** — give any number of terms and locations; every term is searched in every location.
- **Business page details** — optional: opens each business page for the phone number, website, full description, coordinates, opening hours, payment methods and company data (SIRET, SIREN, NAF code, legal form, employees). On by default, because PagesJaunes only shows phone numbers and websites there.
- **Employee contacts (leads)** — optional: finds employee names, roles, emails and LinkedIn links from each business's website.
- **Cache, new and changed businesses only** — use one cache name across scheduled runs and skip businesses you already have.
- **No proxy needed** — pages are loaded by the Actor's built-in service, so you leave proxies off.

### 🚀 How to scrape PagesJaunes businesses in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Paste PagesJaunes search URLs, or fill in **Search terms** and **Locations**.
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing for the PagesJaunes scraper

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- It reads the data straight from the directory's pages instead of driving a browser, so it costs significantly less to run than browser-based scrapers.
- **Business pages** (the *Scrape business pages* option) are charged separately, per business whose page is opened, on top of the result price. Runs with business pages off pay only the standard result price.
- **Employee contacts** are charged separately, and only when the lookup successfully returns a list of contacts: every business you are charged for comes with at least one contact. The charge is once per business, not per contact. Businesses with no website, or where no contacts are found, are not charged for it.
- Businesses skipped by the cache are not charged.

### 🖼️ PagesJaunes scraper input screenshot

![Yellow Pages France Scraper - Emails & Leads input form in Apify Console: search or business URLs, max items per search, cache project name, find employee contacts, scrape business pages, search terms, locations and proxy configuration](https://i.postimg.cc/sDTPfkGK/image.png)

Numbered labels in the screenshot:

1. **Search or business URLs** — the search result pages or business pages to scrape.
2. **Max items per search** — how many businesses to save for each search.
3. **Cache project name** — reuse the same name on scheduled runs to get only new and changed businesses.
4. **Find employee contacts (leads)** — look up each business website for employee contacts (charged separately, only when contacts are found).
5. **Scrape business pages** — open every business page for extra details (charged separately per business page).

Search terms and Locations (in the collapsible optional section) and the proxy settings sit below these fields.

### 🔧 PagesJaunes scraper input configuration

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Search or business URLs (`startUrls`) | array | — | example search (prefill) | PagesJaunes search result pages, category pages or single business pages, for example https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier\&ou=Paris or https://www.pagesjaunes.fr/pros/09583189. Leave empty to use the search terms and locations below. |
| Max items per search (`maxItems`) | integer | — | 5 | Maximum businesses saved for each search. Searches show a limited number of result pages; for more, use narrower searches (more search terms or locations). |
| Cache project name (`cacheProjectName`) | string | — | — | Same name on each run = only new and changed businesses. |
| Find employee contacts (`enrichLeads`) | boolean | — | false | Looks up each business's website for employee contacts and adds them as a `leads` array. Needs the business to have a website. Charged only when the lookup successfully returns a list of contacts (at least one per charged business): once per business, not per contact; nothing when none are found. |
| Scrape business pages (`scrapeDetails`) | boolean | — | true | Open every business page: phone number, website, full description, coordinates, opening hours, payment methods and company data (SIRET, SIREN, NAF code, legal form, employees). PagesJaunes only shows phone numbers and websites on the business page, so this is on by default. Adds a separate charge per business page opened, on top of the normal result price. |
| Search terms (`searchTerms`) | array | — | — | What to search for, in French, for example plombier, dentiste or restaurant italien. Each term is searched in every location. |
| Locations (`locations`) | array | — | — | Where to search, for example Paris, Lyon or Marseille. Each location is searched for every search term. |
| Proxy configuration (`proxyConfiguration`) | object | — | no proxy | Not needed: pages are loaded by the Actor's built-in service. |

**Supported URL types:**

- Search: `https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris`
- Category page: `https://www.pagesjaunes.fr/annuaire/paris-75/plombiers`
- Business page: `https://www.pagesjaunes.fr/pros/09583189`

### 📦 PagesJaunes scraper output data

The output is a dataset of business records with the fields `businessId`, `name`, `url`, `phone`, `address`, `street`, `postalCode`, `city`, `categories`, `tags`, `website`, `rating`, `ratingCount`, `openStatus`, `snippet`, `imageUrl`, `description`, `latitude`, `longitude`, `hours`, `paymentMethods`, `siret`, `siren`, `nafCode`, `legalForm`, `employees`, `companyCreated`, `leads`, `changeType`, `searchUrl`, `scrapedAt`. The dataset has 2 views:

- **Overview** — name, phone, address, category, website, rating and number of reviews.
- **Contacts** — name, phone, email, website and city of each business.

**Output at a glance:**

| Business | Phone | Address | Category | Website | Rating | Reviews |
| --- | --- | --- | --- | --- | --- | --- |
| [GZ Services BTP](https://www.pagesjaunes.fr/pros/62373685) | +33 6 64 04 30 39 | 13 Bis avenue La Motte Picquet 75007 Par | dépannage plomberie | — | 4.6 | 18 |
| [Artisan Bernard et Sylvestre](https://www.pagesjaunes.fr/pros/09583189) | +33 1 44 40 02 61 | 4 rue Mademoiselle 75015 Paris | plombiers | https://www.electricien-paris-15-artisan | 4.2 | 93 |

**Sample output (raw JSON):**

```json
[
  {
    "businessId": "62373685",
    "name": "GZ Services BTP",
    "url": "https://www.pagesjaunes.fr/pros/62373685",
    "address": "13 Bis avenue La Motte Picquet 75007 Paris",
    "street": "13 Bis avenue La Motte Picquet",
    "postalCode": "75007",
    "city": "Paris",
    "categories": [
      "dépannage plomberie"
    ],
    "tags": [
      "débouchage de canalisation de wc",
      "entretien de chauffe-eau"
    ],
    "rating": 4.6,
    "ratingCount": 18,
    "openStatus": "Ouvert jusqu'à 21h00",
    "snippet": "Entreprise Générale de bâtiment. Nous effectuons tous vos travaux de rénovation d'appartement: peinture, rénovation des sols carrelage et parquet, plomberie, électricité, chauffage, et sanitaire. Spécialiste de l'agencement, de la création et de la rénovation de salle de bain et salle de bain PMR. Faire appel à notre entreprise c'est l'assurance d 'avoir un seul interlocuteur pour tous vos travaux du bâtiment. Nous disposons également d'un service de dépannage en urgence pour vos travaux de plomberie, chauffage, électricité, serrurerie, et vitrerie. intervention en urgence sur Paris, 92,93, 94 et 95. Etudes et devis gratuits. . Ouvert en Juillet et Aout. GZ Service BTP la garantie du travail bien fait !!",
    "imageUrl": "https://www.pagesjaunes.fr/media/newdam/preset-thumbnail-logo-desktop/e7/96/2f/00/00/82/14/2d/f8/a3/69efe7962f000082142df8a3/69efe7962f000082142df8a4.jpg",
    "searchUrl": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris",
    "phone": "+33 6 64 04 30 39",
    "description": "Entreprise Générale de bâtiment. Nous effectuons tous vos travaux de rénovation d'appartement: peinture, rénovation des sols carrelage et parquet, plomberie, électricité, chauffage, et sanitaire. Spécialiste de l'agencement, de la création et de la rénovation de salle de bain et salle de bain PMR. Faire appel à notre entreprise c'est l'assurance d 'avoir un seul interlocuteur pour tous vos travaux du bâtiment. Nous disposons également d'un service de dépannage en urgence pour vos travaux de plomberie, chauffage, électricité, serrurerie, et vitrerie. intervention en urgence sur Paris, 92,93, 94 et 95. Etudes et devis gratuits. . Ouvert en Juillet et Aout. GZ Service BTP la garantie du travail bien fait !!",
    "latitude": 48.85614,
    "longitude": 2.30864,
    "hours": "Mon: 08:00-21:00; Tue: 08:00-21:00; Wed: 08:00-21:00; Thu: 08:00-21:00; Fri: 08:00-21:00; Sun: 08:00-21:00",
    "paymentMethods": [
      "Espèces",
      "American Express"
    ],
    "siret": "95353692700015",
    "siren": "953536927",
    "nafCode": "4120A",
    "legalForm": "SAS, société par actions simplifiée",
    "companyCreated": "15 juin 2023",
    "leads": [],
    "changeType": null,
    "scrapedAt": "2026-10-22T11:10:24.075Z"
  },
  {
    "businessId": "09583189",
    "name": "Artisan Bernard et Sylvestre",
    "url": "https://www.pagesjaunes.fr/pros/09583189",
    "address": "4 rue Mademoiselle 75015 Paris",
    "street": "4 rue Mademoiselle",
    "postalCode": "75015",
    "city": "Paris",
    "categories": [
      "plombiers"
    ],
    "tags": [
      "urgence plomberie",
      "débouchage de canalisation"
    ],
    "rating": 4.2,
    "ratingCount": 93,
    "openStatus": "Ouvert jusqu'à 19h00",
    "snippet": "Artisans, électricien, plombier, chauffagiste depuis 1990, nous réalisons vos travaux avec rigueur et passion. Basés au 4, rue Mademoiselle Paris, XVe. nous sommes spécialisés dans l’électricité, la plomberie-chauffage et la rénovation immobilière tous corps d’état. Mise aux normes, rénovation complète d’appartement, dépannage, salle de bain clé en main : chaque corps de métier est géré par un pro qualifié. Artisans Bernard et Sylvestre, c’est le respect du travail bien fait, des finitions propres, et un engagement total pour votre confort. Devis gratuit, réactivité, sérieux. Travaux garantie pendant deux ans, suivi d’une assurance décennale chez AXA.. diplômé en 1990, Maison, fondée en 2004",
    "imageUrl": "https://www.pagesjaunes.fr/media/newdam/preset-thumbnail-logo-desktop/17/da/32/00/00/fa/3d/eb/87/86/687217da320000fa3deb8786/687217da320000fa3deb8787.jpg",
    "searchUrl": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris",
    "phone": "+33 1 44 40 02 61",
    "website": "https://www.electricien-paris-15-artisan-bernard-sylvestre.fr/",
    "description": "Artisans, électricien, plombier, chauffagiste depuis 1990, nous réalisons vos travaux avec rigueur et passion. Basés au 4, rue Mademoiselle Paris, XVe. nous sommes spécialisés dans l’électricité, la plomberie-chauffage et la rénovation immobilière tous corps d’état. Mise aux normes, rénovation complète d’appartement, dépannage, salle de bain clé en main : chaque corps de métier est géré par un pro qualifié. Artisans Bernard et Sylvestre, c’est le respect du travail bien fait, des finitions propres, et un engagement total pour votre confort. Devis gratuit, réactivité, sérieux. Travaux garantie pendant deux ans, suivi d’une assurance décennale chez AXA.. diplômé en 1990, Maison, fondée en 2004",
    "latitude": 48.843517,
    "longitude": 2.294142,
    "hours": "Mon: 07:00-19:00; Tue: 07:00-19:00; Wed: 07:00-19:00; Thu: 07:00-19:00; Fri: 07:00-19:00; Sat: 07:00-19:00; Sun: 08:00-18:00",
    "paymentMethods": [
      "Visa",
      "Chèque"
    ],
    "siret": "45393198200046",
    "siren": "453931982",
    "nafCode": "4322A",
    "legalForm": "SAS, société par actions simplifiée",
    "employees": "1 à 2 salariés",
    "companyCreated": "1 juin 2004",
    "leads": [],
    "changeType": null,
    "scrapedAt": "2026-10-22T11:10:24.168Z"
  }
]
```

### 📧 How to find PagesJaunes business emails and employee contacts (email enrichment)

Switch on **Find employee contacts** and the actor looks up each business's website and adds a `leads` array with employee names, roles, departments, emails, phone numbers and LinkedIn links when they can be found. The `leads` field is always present on every record: it is an empty array when the business has no website or nothing was found. The contacts charge is applied only when the lookup successfully returns a list of contacts, so every charged business has at least one lead. It is charged once per business, not per contact, and never when `leads` is empty. The lookup runs once per business website.

| name | email | position |
| ---- | ----- | -------- |
| Jane Example | jane@example.com | Owner |
| John Sample | john@example.com | Office manager |

### 🔁 Scrape only new PagesJaunes businesses with the cache

Set the same **Cache project name** on every scheduled run. Businesses already saved under that name and unchanged are skipped: they are not charged and do not count towards **Max items per search**. New businesses get `changeType: "new"` and businesses whose phone, address, website or rating changed get `changeType: "updated"`. Each name keeps its own separate cache. Add the actor to an Apify Schedule to track new businesses in a category and area automatically.

### 🐍 How to scrape PagesJaunes with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/yellowpages-france-scraper").call(run_input={
        "searchTerms": [
            "plombier"
        ],
        "locations": [
            "Paris"
        ],
        "maxItems": 20,
        "scrapeDetails": True,
        "enrichLeads": True
    })

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/yellowpages-france-scraper').call({
        "searchTerms": [
            "plombier"
        ],
        "locations": [
            "Paris"
        ],
        "maxItems": 20,
        "scrapeDetails": true,
        "enrichLeads": true
    });

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~yellowpages-france-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["plombier"], "locations": ["Paris"], "maxItems": 20, "scrapeDetails": true, "enrichLeads": true}'
```

### 💡 What you can use PagesJaunes business data for

- Lead generation: phone numbers, websites and emails of local businesses by category and area
- Sales prospecting with employee names, roles and emails from each company website
- Local market research and competitor mapping by category, city and rating
- Building and enriching CRM and mailing lists
- Monitoring new businesses and changes in a category with scheduled cached runs

Sales teams, marketing agencies, recruiters and market researchers typically use this data across services, trades, retail and hospitality.

### ⚠️ Limitations of the PagesJaunes scraper

- **Phone and website need business pages** — PagesJaunes only shows phone numbers and websites on each business page, so keep **Scrape business pages** on for them.
- **Result depth** — one search shows a limited number of result pages; for more businesses use more search terms and locations.
- **French content** — descriptions, categories and tags are in French.
- **Ratings** — ratings and counts are only present for businesses that have reviews.
- **Login-required content** — nothing behind a login is collected.

### ❓ PagesJaunes scraper FAQ

#### Can I scrape PagesJaunes (Yellow Pages France) legally?

The actor only collects data that is already publicly visible on PagesJaunes (Yellow Pages France) — no login, paywall or private content is accessed. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with the site's Terms of Service and applicable laws such as GDPR or CCPA, since business listings can contain personal data such as names, phone numbers and emails.

#### What data does the PagesJaunes scraper return?

Each record has the business name, phone, address, categories, website, rating and more. With business pages on you also get the phone number, website, full description, coordinates, opening hours, payment methods and company data (SIRET, SIREN, NAF code, legal form, employees). With employee contacts on, each record also has a `leads` array with employee names, roles and emails: employee emails found on each business website (PagesJaunes does not publish business emails on its pages).

#### How many businesses can I scrape from one PagesJaunes search?

`maxItems` limits the businesses saved for each search URL, not the whole run. A search shows a limited number of result pages; to collect more, use several search terms and locations.

#### Do I need a proxy to scrape pagesjaunes.fr?

No. Pages are loaded by the Actor's built-in service, so you leave the proxy off.

#### How do I find emails of businesses on PagesJaunes (Yellow Pages France)?

Switch on **Find employee contacts**: the actor looks up each business's website and adds employee names, roles and emails to a `leads` array. It is charged separately and only when the lookup successfully returns contacts: once per business, with at least one lead in every charged record, and nothing when `leads` is empty.

#### How do I scrape PagesJaunes with Python?

Use the Python example above: call the actor with the Apify client and iterate over the dataset items.

#### Can I run this PagesJaunes scraper on a schedule?

Yes. Use Apify Schedules to run it daily or weekly. Set a **Cache project name** and each run returns only new and changed businesses; businesses already seen and unchanged are skipped and not charged.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

### 🔗 Other Yellow Pages scrapers by country

| Scraper | Description |
| ------- | ----------- |
| ![US flag](https://flagcdn.com/w20/us.png) [🇺🇸 Yellow Pages USA Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-usa-scraper) | US businesses from yellowpages.com: phones, websites, emails and contacts. |
| ![CA flag](https://flagcdn.com/w20/ca.png) [🇨🇦 Yellow Pages Canada Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-canada-scraper) | Canadian businesses from yellowpages.ca: phones, websites, hours and contacts. |
| ![GB flag](https://flagcdn.com/w20/gb.png) [🇬🇧 Yellow Pages UK Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-uk-scraper) | UK businesses from Yell (yell.com): phones, websites, ratings and contacts. |
| ![DE flag](https://flagcdn.com/w20/de.png) [🇩🇪 Yellow Pages Germany Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-germany-scraper) | German businesses from Gelbe Seiten: phones, websites, ratings and contacts. |
| ![IT flag](https://flagcdn.com/w20/it.png) [🇮🇹 Yellow Pages Italy Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-italy-scraper) | Italian businesses from Pagine Gialle: phones, websites, VAT and contacts. |
| ![AU flag](https://flagcdn.com/w20/au.png) [🇦🇺 Yellow Pages Australia Scraper - Emails & Leads](https://apify.com/confidential_gnat/yellowpages-australia-scraper) | Australian businesses from yellowpages.com.au: phones, emails, ABN and contacts. |
| ![ES flag](https://flagcdn.com/w20/es.png) [🇪🇸 Páginas Amarillas Spain (Yellow Pages) Business Scraper](https://apify.com/confidential_gnat/paginasamarillas-business-scraper) | Spanish businesses from Páginas Amarillas: name, phone, address and more. |

### 🔗 Relevant actors for business directories and leads

| Scraper | Description |
| ------- | ----------- |
| [🏢 BBB Emails & Info Scraper](https://apify.com/confidential_gnat/bbb-business-scraper) | Scrapes Better Business Bureau businesses: name, phone, rating, accreditation and contacts. |
| [⚖️ Martindale Lawyers Scraper](https://apify.com/confidential_gnat/martindale-lawyers-scraper) | Scrapes lawyer and law firm profiles from Martindale with optional contacts. |
| [📧 Decision Maker Email Finder](https://apify.com/confidential_gnat/decision-maker-email-finder) | Finds decision makers and emails from company websites. |
| [💰 Signal NFX Investors Email Scraper](https://apify.com/confidential_gnat/signal-nfx-investors-scraper) | Scrapes VC and angel investor profiles from Signal by NFX. |
| [🇩🇪 German Imprint (Impressum) Scraper](https://apify.com/confidential_gnat/german-imprint-scraper) | Finds a German website's Impressum page and extracts decision makers and contacts. |

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [💼 XING Jobs Scraper](https://apify.com/confidential_gnat/xing-jobs-scraper) | Scrape job listings from XING Jobs: title, company, location and employment type. |
| [🍷 Vivino Wine Scraper](https://apify.com/confidential_gnat/vivino-wine-scraper) | Scrape wine data from Vivino: name, winery, vintage, region and rating. |
| [📈 Kalshi Markets Scraper](https://apify.com/confidential_gnat/kalshi-markets-scraper) | Scrape Kalshi prediction markets: yes/no prices, implied probability and volume. |
| [✈️ Kiwi.com Flight Scraper](https://apify.com/confidential_gnat/kiwi-flight-scraper) | Scrape flight prices and schedules from Kiwi.com, including airline and times. |
| [🛒 Craigslist Listings Scraper](https://apify.com/confidential_gnat/craigslist-listings-scraper) | Scrape Craigslist listings in any city and category: title, price and more. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/yellowpages-france-scraper/issues/open) or reach out via the [Apify Community Forum](https://community.apify.com/).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

## `startUrls` (type: `array`):

PagesJaunes search result pages, category pages or single business pages, for example https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier\&ou=Paris or https://www.pagesjaunes.fr/pros/09583189. Leave empty to use the search terms and locations below.

## `maxItems` (type: `integer`):

Maximum businesses saved for each search. Searches show a limited number of result pages; for more, use narrower searches (more search terms or locations).

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only new and changed businesses. Businesses already seen and unchanged are skipped and not charged. Each record gets a changeType: new or updated.

## `enrichLeads` (type: `boolean`):

Looks up each business's website for employee contacts (name, role, email, LinkedIn) and adds them as a 'leads' array. Needs the business to have a website. Adds a separate charge only for a business where the lookup successfully returns at least one contact (one charge per business, not per contact); nothing is charged when no contacts are found.

## `scrapeDetails` (type: `boolean`):

Open every business page: phone number, website, full description, coordinates, opening hours, payment methods and company data (SIRET, SIREN, NAF code, legal form, employees). PagesJaunes only shows phone numbers and websites on the business page, so this is on by default. Adds a separate charge per business page opened, on top of the normal result price.

## `searchTerms` (type: `array`):

What to search for, in French, for example plombier, dentiste or restaurant italien. Each term is searched in every location.

## `locations` (type: `array`):

Where to search, for example Paris, Lyon or Marseille. Each location is searched for every search term.

## `proxyConfiguration` (type: `object`):

Not needed: pages are loaded by the Actor's built-in service. Leave proxies off.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris"
    }
  ],
  "maxItems": 5,
  "enrichLeads": false,
  "scrapeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `businesses` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris"
        }
    ],
    "maxItems": 5,
    "enrichLeads": false,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/yellowpages-france-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 = {
    "startUrls": [{ "url": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris" }],
    "maxItems": 5,
    "enrichLeads": False,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/yellowpages-france-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 '{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/chercherlespros?quoiqui=plombier&ou=Paris"
    }
  ],
  "maxItems": 5,
  "enrichLeads": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call confidential_gnat/yellowpages-france-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/yellowpages-france-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/npTB2tl7xVJZOpZ3s/builds/jP4Ne911bIXORFrKY/openapi.json
