# Pagesjaunes Scraper (`silentflow/pagesjaunes-scraper`) Actor

PagesJaunes scraper France - Extract 130+ business data fields from PagesJaunes.fr: emails, phone numbers, SIRET codes, addresses, reviews, ratings, opening hours, social media links. Automated yellow pages scraper for lead generation, B2B prospecting, market research. Free trial available.

- **URL**: https://apify.com/silentflow/pagesjaunes-scraper.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Lead generation
- **Stats:** 23 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$14.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period. You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

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

## 📇 PagesJaunes Scraper

by [SilentFlow](https://apify.com/silentflow)

Extract comprehensive business data from **PagesJaunes.fr** - France's leading yellow pages directory. Get phone numbers, addresses, SIRET, ratings, reviews, opening hours, and 100+ detailed fields for any business in France.

**🇬🇧 English** | [🇫🇷 Français](#pagesjaunes-scraper-francais)

### ✨ Why use this scraper?

- 🚀 **Fast parallel extraction**: Scrape 100 businesses in under 2 minutes with concurrent detail page fetching
- 📊 **100+ data fields**: Business name, phone, address, SIRET/SIREN, NAF code, ratings, reviews, opening hours, services, payment methods, social media, and more
- ⭐ **Multi-source ratings**: Aggregated ratings from Google, TheFork, TripAdvisor, and PagesJaunes reviews
- 🔄 **Automatic pagination**: Follows all search result pages until your item limit is reached
- 📄 **Detail page enrichment**: Visits each listing's detail page to extract full data (legal info, services, certifications, partner reviews)

### 🎯 Use cases

| Industry | Application |
|----------|-------------|
| **Sales & Marketing** | Build targeted lead lists with verified phone numbers and addresses for French businesses |
| **Market Research** | Analyze business density, ratings, and pricing across French cities and sectors |
| **Real Estate** | Map local businesses around properties to evaluate neighborhood commercial activity |
| **Competitive Intelligence** | Track competitor ratings, reviews, services, and pricing on PagesJaunes |
| **Data Enrichment** | Enrich your CRM with SIRET, NAF codes, employee counts, and legal information |
| **Local SEO** | Audit PagesJaunes listings for directory optimization |

### 📥 Input parameters

#### URL scraping

| Parameter | Type | Description |
|-----------|------|-------------|
| `startUrls` | array | URLs to scrape, search result pages or individual listing pages |
| `maxItems` | integer | Maximum number of listings to scrape (default: 1000, max: 10000) |
| `includeDetails` | boolean | Visit each listing's detail page for full data (default: true) |

#### Proxy

| Parameter | Type | Description |
|-----------|------|-------------|
| `proxyUrl` | string | Custom proxy URL (format: `http://user:pass@host:port`). If not provided, Apify residential proxy is used |

### 📊 Output data

#### Listing example

```json
{
  "code_etablissement": "07690364",
  "denomination": "Le Moghol",
  "telephone": "0140069036",
  "telephoneFormatted": "01 40 06 90 36",
  "site_web": "http://www.lemoghol.fr/",
  "adresse_full_long": "26 rue Caumartin 75009 Paris",
  "adresse": "26 rue Caumartin",
  "codePostal": "75009",
  "ville": "Paris",
  "siret": "43273119800029",
  "siren": "432731198",
  "naf": "5610A",
  "activite_libelle": "restaurants",
  "basicInfo_place_rating": 4.3,
  "basicInfo_place_nb_review": 3,
  "ratingBreakdown": {
    "thefork": 4.3,
    "tripadvisor": 4.0
  },
  "horaires": {
    "monday": { "open": "11:45", "close": "23:30", "breakStart": "15:00", "breakEnd": "18:30" },
    "tuesday": { "open": "11:45", "close": "23:30", "breakStart": "15:00", "breakEnd": "18:30" }
  },
  "prestations": ["restaurant halal", "repas de groupe", "fait maison"],
  "categories": ["Restaurants"],
  "tags": ["restaurant indien"],
  "paymentMethods": ["CB", "Mastercard", "Visa"],
  "socialMedia": {
    "facebook": "https://www.facebook.com/pages/Moghol/237482409698799"
  },
  "reseauxSociaux": {
    "facebook": "https://www.facebook.com/pages/Moghol/237482409698799",
    "thefork": "https://thefork.fr/restaurant/moghol-r7423/avis",
    "tripadvisor": "https://www.tripadvisor.com/Restaurant_Review-g187147-d2010618"
  },
  "prix": "21-30 €",
  "prixRange": "21-30 euros",
  "formeJuridique": "5499",
  "dateCreation": "6 juillet 2000",
  "employeeCount": "10 à 19 salariés",
  "typeEtablissement": "Siège",
  "url": "https://www.pagesjaunes.fr/pros/07690364",
  "scrapedAt": "2026-02-28T20:19:13Z"
}
```

### 🗂️ Data fields

| Category | Fields |
|----------|--------|
| **Identity** | `code_etablissement`, `listingId`, `denomination`, `tradeName` |
| **Contact** | `telephone`, `telephoneFormatted`, `telephoneMobile`, `fax`, `email`, `emails` |
| **Web** | `site_web`, `socialMedia` (Facebook, Instagram, Twitter, LinkedIn, YouTube), `reseauxSociaux` (+ TheFork, TripAdvisor) |
| **Address** | `adresse_full_long`, `adresse`, `codePostal`, `ville`, `departement`, `region`, `pays`, `latitude`, `longitude` |
| **Legal** | `siret`, `siren`, `naf`, `nafLabel`, `formeJuridique`, `dateCreation`, `capital`, `statutJuridique` |
| **Ratings** | `basicInfo_place_rating`, `basicInfo_place_nb_review`, `ratingBreakdown` (Google, TheFork, TripAdvisor), `reviews` |
| **Hours** | `horaires` (open/close/break per day), `horairesOuverture`, `joursFermeture` |
| **Services** | `prestations`, `services`, `categories`, `tags`, `activite_libelle` |
| **Pricing** | `prix`, `prixRange`, `prixMin`, `prixMax`, `prixMoyen`, `devise` |
| **Business** | `typeEtablissement`, `employeeCount`, `employeeRange`, `paymentMethods` |
| **Media** | `photos`, `logo`, `description` |
| **Labels** | `certifications`, `labels`, `badges`, `isVerified`, `isPremium` |

### 🚀 Examples

#### Scrape restaurants in Paris

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants" }
  ],
  "maxItems": 100
}
```

#### Scrape plumbers in Lyon

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/lyon-69/plombiers" }
  ],
  "maxItems": 200
}
```

#### Scrape a single listing

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/pros/07690364" }
  ],
  "maxItems": 1
}
```

#### Multiple cities at once

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/paris-75/avocats" },
    { "url": "https://www.pagesjaunes.fr/annuaire/lyon-69/avocats" },
    { "url": "https://www.pagesjaunes.fr/annuaire/marseille-13/avocats" }
  ],
  "maxItems": 500
}
```

### 💻 Integrations

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("silentflow/pagesjaunes-scraper").call(run_input={
    "startUrls": [
        {"url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants"}
    ],
    "maxItems": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['denomination']} - {item.get('telephone', 'N/A')}")
```

#### JavaScript

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

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

const run = await client.actor('silentflow/pagesjaunes-scraper').call({
    startUrls: [
        { url: 'https://www.pagesjaunes.fr/annuaire/paris-75/restaurants' }
    ],
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    console.log(`${item.denomination} - ${item.telephone || 'N/A'}`);
});
```

### 📈 Performance & limits

| Metric | Value |
|--------|-------|
| Speed | ~100 listings in 1-2 minutes |
| Max items per run | 10,000 |
| Detail enrichment | Automatic (can be disabled) |
| Data freshness | Real-time from PagesJaunes.fr |

### 💡 Tips for best results

1. **Start with a small test**: Run with `maxItems: 10` first to verify the data matches your needs
2. **Use search result URLs**: Copy URLs directly from PagesJaunes.fr after applying your location and activity filters
3. **Combine multiple cities**: Add several start URLs to scrape the same activity across different cities in one run
4. **Disable detail pages for speed**: Set `includeDetails: false` to get basic listing data much faster (no phone, hours, or legal info)
5. **Use residential proxies**: French residential proxies give the best results on Apify

### ❓ FAQ

**Q: What types of URLs can I use?**
A: Search result pages (`/annuaire/city/activity`) and individual listing pages (`/pros/ID`). Both are supported.

**Q: Can I scrape all businesses in a city?**
A: Yes, just use the city search URL (e.g., `/annuaire/paris-75/`) and set a high `maxItems`. The scraper will navigate through all pages automatically.

**Q: Can I get email addresses?**
A: Email addresses are only available when the business has published them on their PagesJaunes listing. Most businesses only display phone numbers.

**Q: What is the `ratingBreakdown` field?**
A: It contains individual ratings from partner platforms (Google, TheFork, TripAdvisor) when available, in addition to the main PagesJaunes rating.

**Q: How do I scrape without detail page enrichment?**
A: Set `includeDetails: false` in the input. You'll get basic data (name, address, phone, rating) from the search page only, which is much faster.

### 📬 Support

Need help? We're here for you:

- **Feature requests**: Let us know what you need
- **Custom solutions**: Contact us for enterprise integrations or high-volume needs

Check out our other scrapers: [SilentFlow on Apify](https://apify.com/silentflow)

***

***

## PagesJaunes Scraper Francais

par [SilentFlow](https://apify.com/silentflow)

Extrayez des données complètes d'entreprises depuis **PagesJaunes.fr** - l'annuaire de référence en France. Obtenez numéros de téléphone, adresses, SIRET, notes, avis, horaires d'ouverture et plus de 100 champs détaillés pour toute entreprise en France.

[🇬🇧 English](#pagesjaunes-scraper) | **🇫🇷 Français**

### ✨ Pourquoi utiliser ce scraper ?

- 🚀 **Extraction parallèle rapide**: Scrapez 100 entreprises en moins de 2 minutes grâce à la récupération simultanée des pages détaillées
- 📊 **Plus de 100 champs**: Nom, téléphone, adresse, SIRET/SIREN, code NAF, notes, avis, horaires, services, moyens de paiement, réseaux sociaux, et plus
- ⭐ **Notes multi-sources**: Notes agrégées depuis Google, TheFork, TripAdvisor et les avis PagesJaunes
- 🔄 **Pagination automatique**: Parcourt toutes les pages de résultats jusqu'à atteindre votre limite
- 📄 **Enrichissement par page détaillée**: Visite chaque fiche pour extraire les données complètes (infos légales, services, certifications, avis partenaires)

### 🎯 Cas d'usage

| Secteur | Application |
|---------|-------------|
| **Vente & Marketing** | Créez des listes de prospection ciblées avec des numéros de téléphone et adresses vérifiés |
| **Études de marché** | Analysez la densité commerciale, les notes et les prix par ville et secteur d'activité |
| **Immobilier** | Cartographiez les commerces autour d'un bien pour évaluer l'activité commerciale du quartier |
| **Veille concurrentielle** | Suivez les notes, avis, services et tarifs de vos concurrents sur PagesJaunes |
| **Enrichissement de données** | Enrichissez votre CRM avec les SIRET, codes NAF, effectifs et informations légales |
| **SEO local** | Auditez les fiches PagesJaunes pour optimiser votre présence dans l'annuaire |

### 📥 Paramètres d'entrée

#### URLs à scraper

| Paramètre | Type | Description |
|-----------|------|-------------|
| `startUrls` | tableau | URLs à scraper, pages de résultats de recherche ou fiches individuelles |
| `maxItems` | entier | Nombre maximum de fiches à scraper (défaut : 1000, max : 10000) |
| `includeDetails` | booléen | Visiter chaque page détaillée pour les données complètes (défaut : true) |

#### Proxy

| Paramètre | Type | Description |
|-----------|------|-------------|
| `proxyUrl` | chaîne | URL de proxy personnalisé (format : `http://user:pass@host:port`). Si non fourni, le proxy résidentiel Apify est utilisé |

### 📊 Données extraites

#### Exemple de fiche

```json
{
  "code_etablissement": "07690364",
  "denomination": "Le Moghol",
  "telephone": "0140069036",
  "telephoneFormatted": "01 40 06 90 36",
  "site_web": "http://www.lemoghol.fr/",
  "adresse_full_long": "26 rue Caumartin 75009 Paris",
  "adresse": "26 rue Caumartin",
  "codePostal": "75009",
  "ville": "Paris",
  "siret": "43273119800029",
  "siren": "432731198",
  "naf": "5610A",
  "activite_libelle": "restaurants",
  "basicInfo_place_rating": 4.3,
  "basicInfo_place_nb_review": 3,
  "ratingBreakdown": {
    "thefork": 4.3,
    "tripadvisor": 4.0
  },
  "horaires": {
    "monday": { "open": "11:45", "close": "23:30", "breakStart": "15:00", "breakEnd": "18:30" },
    "tuesday": { "open": "11:45", "close": "23:30", "breakStart": "15:00", "breakEnd": "18:30" }
  },
  "prestations": ["restaurant halal", "repas de groupe", "fait maison"],
  "categories": ["Restaurants"],
  "tags": ["restaurant indien"],
  "paymentMethods": ["CB", "Mastercard", "Visa"],
  "socialMedia": {
    "facebook": "https://www.facebook.com/pages/Moghol/237482409698799"
  },
  "reseauxSociaux": {
    "facebook": "https://www.facebook.com/pages/Moghol/237482409698799",
    "thefork": "https://thefork.fr/restaurant/moghol-r7423/avis",
    "tripadvisor": "https://www.tripadvisor.com/Restaurant_Review-g187147-d2010618"
  },
  "prix": "21-30 €",
  "prixRange": "21-30 euros",
  "formeJuridique": "5499",
  "dateCreation": "6 juillet 2000",
  "employeeCount": "10 à 19 salariés",
  "typeEtablissement": "Siège",
  "url": "https://www.pagesjaunes.fr/pros/07690364",
  "scrapedAt": "2026-02-28T20:19:13Z"
}
```

### 🗂️ Champs de données

| Catégorie | Champs |
|-----------|--------|
| **Identité** | `code_etablissement`, `listingId`, `denomination`, `tradeName` |
| **Contact** | `telephone`, `telephoneFormatted`, `telephoneMobile`, `fax`, `email`, `emails` |
| **Web** | `site_web`, `socialMedia` (Facebook, Instagram, Twitter, LinkedIn, YouTube), `reseauxSociaux` (+ TheFork, TripAdvisor) |
| **Adresse** | `adresse_full_long`, `adresse`, `codePostal`, `ville`, `departement`, `region`, `pays`, `latitude`, `longitude` |
| **Légal** | `siret`, `siren`, `naf`, `nafLabel`, `formeJuridique`, `dateCreation`, `capital`, `statutJuridique` |
| **Notes** | `basicInfo_place_rating`, `basicInfo_place_nb_review`, `ratingBreakdown` (Google, TheFork, TripAdvisor), `reviews` |
| **Horaires** | `horaires` (ouverture/fermeture/pause par jour), `horairesOuverture`, `joursFermeture` |
| **Services** | `prestations`, `services`, `categories`, `tags`, `activite_libelle` |
| **Tarifs** | `prix`, `prixRange`, `prixMin`, `prixMax`, `prixMoyen`, `devise` |
| **Entreprise** | `typeEtablissement`, `employeeCount`, `employeeRange`, `paymentMethods` |
| **Médias** | `photos`, `logo`, `description` |
| **Labels** | `certifications`, `labels`, `badges`, `isVerified`, `isPremium` |

### 🚀 Exemples

#### Scraper les restaurants à Paris

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants" }
  ],
  "maxItems": 100
}
```

#### Scraper les plombiers à Lyon

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/lyon-69/plombiers" }
  ],
  "maxItems": 200
}
```

#### Scraper une fiche individuelle

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/pros/07690364" }
  ],
  "maxItems": 1
}
```

#### Plusieurs villes en une seule exécution

```json
{
  "startUrls": [
    { "url": "https://www.pagesjaunes.fr/annuaire/paris-75/avocats" },
    { "url": "https://www.pagesjaunes.fr/annuaire/lyon-69/avocats" },
    { "url": "https://www.pagesjaunes.fr/annuaire/marseille-13/avocats" }
  ],
  "maxItems": 500
}
```

### 💻 Intégrations

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("silentflow/pagesjaunes-scraper").call(run_input={
    "startUrls": [
        {"url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants"}
    ],
    "maxItems": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['denomination']} - {item.get('telephone', 'N/A')}")
```

#### JavaScript

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

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

const run = await client.actor('silentflow/pagesjaunes-scraper').call({
    startUrls: [
        { url: 'https://www.pagesjaunes.fr/annuaire/paris-75/restaurants' }
    ],
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    console.log(`${item.denomination} - ${item.telephone || 'N/A'}`);
});
```

### 📈 Performance et limites

| Métrique | Valeur |
|----------|--------|
| Vitesse | ~100 fiches en 1-2 minutes |
| Max fiches par exécution | 10 000 |
| Enrichissement détaillé | Automatique (désactivable) |
| Fraîcheur des données | Temps réel depuis PagesJaunes.fr |

### 💡 Conseils pour de meilleurs résultats

1. **Commencez par un petit test**: Lancez avec `maxItems: 10` pour vérifier que les données correspondent à vos besoins
2. **Utilisez les URLs de recherche**: Copiez les URLs directement depuis PagesJaunes.fr après avoir appliqué vos filtres de localisation et d'activité
3. **Combinez plusieurs villes**: Ajoutez plusieurs URLs de départ pour scraper la même activité dans différentes villes en une seule exécution
4. **Désactivez les pages détaillées pour la vitesse**: Mettez `includeDetails: false` pour obtenir les données de base beaucoup plus rapidement (sans téléphone, horaires ni infos légales)
5. **Utilisez des proxies résidentiels**: Les proxies résidentiels français donnent les meilleurs résultats sur Apify

### ❓ FAQ

**Q : Quels types d'URLs puis-je utiliser ?**
R : Les pages de résultats de recherche (`/annuaire/ville/activite`) et les fiches individuelles (`/pros/ID`). Les deux sont supportés.

**Q : Puis-je scraper toutes les entreprises d'une ville ?**
R : Oui, utilisez simplement l'URL de recherche de la ville (ex : `/annuaire/paris-75/`) et définissez un `maxItems` élevé. Le scraper parcourt automatiquement toutes les pages.

**Q : Puis-je obtenir les adresses email ?**
R : Les emails ne sont disponibles que lorsque l'entreprise les a publiés sur sa fiche PagesJaunes. La plupart des entreprises n'affichent que le numéro de téléphone.

**Q : Qu'est-ce que le champ `ratingBreakdown` ?**
R : Il contient les notes individuelles des plateformes partenaires (Google, TheFork, TripAdvisor) quand elles sont disponibles, en plus de la note PagesJaunes principale.

**Q : Comment scraper sans enrichissement par page détaillée ?**
R : Mettez `includeDetails: false` dans l'input. Vous obtiendrez les données de base (nom, adresse, téléphone, note) de la page de recherche uniquement, ce qui est beaucoup plus rapide.

### 📬 Support

Besoin d'aide ? Nous sommes là pour vous :

- **Demandes de fonctionnalités** : Faites-nous savoir ce dont vous avez besoin
- **Solutions personnalisées** : Contactez-nous pour des intégrations entreprise ou des besoins en volume

Découvrez nos autres scrapers : [SilentFlow sur Apify](https://apify.com/silentflow)

# Actor input Schema

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

PagesJaunes search URLs or individual listing URLs (e.g., https://www.pagesjaunes.fr/annuaire/paris-75/restaurants).

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

Maximum number of listings to scrape.

## `includeDetails` (type: `boolean`):

Visit each listing's detail page for full data (phone, email, hours, reviews). Disable for basic search results only.

## `proxyUrl` (type: `string`):

Custom proxy URL (format: http://user:pass@host:port). If empty, Apify residential proxy is used.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.pagesjaunes.fr/annuaire/paris-75/restaurants"
    }
  ],
  "maxItems": 5,
  "includeDetails": true
}
```

# Actor output Schema

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

Complete business data including: denomination (name), telephone, email, website, adresse\_full\_long (full address), ville (city), codePostal, departement, region, siret, siren, naf (activity code), legalForm, capital, creationDate, employees, basicInfo\_place\_rating (0-5), basicInfo\_place\_nb\_review, openingHours, categories, services, photos, url, latitude, longitude.

## `businessesCSV` (type: `string`):

CSV format export of all business listings for spreadsheet analysis

## `businessesExcel` (type: `string`):

Excel format export of all business listings

# 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/paris-75/restaurants"
        }
    ],
    "maxItems": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/pagesjaunes-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/paris-75/restaurants" }],
    "maxItems": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("silentflow/pagesjaunes-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/paris-75/restaurants"
    }
  ],
  "maxItems": 5
}' |
apify call silentflow/pagesjaunes-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,silentflow/pagesjaunes-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/s2IfFaVJ8MVQhrR2C/builds/5PMEn1FJS8zRvhH61/openapi.json
