# Leboncoin - Récupération d'annonces (`sbzh/leboncoin`) Actor

Cet Acteur vous permet de parcourir des listes d'annonces issues du site Leboncoin. Entrez l'url de votre choix ou renseignez les filtres de recherche pertinents pour obtenir le contenu d'une grande sélection d'annonces Leboncoin, incluant le titre, le lien, le prix, la localisation ...

- **URL**: https://apify.com/sbzh/leboncoin.md
- **Developed by:** [Sambzh](https://apify.com/sbzh) (community)
- **Categories:** Automation, E-commerce, Real estate
- **Stats:** 21 total users, 0 monthly users, 97.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Leboncoin Scraper

Extrait les annonces de **leboncoin.fr** et les exporte dans un dataset structuré, prêt à être utilisé dans Excel, Google Sheets, ou tout pipeline de données.

***

### Ce que fait cet Actor

- Parcourt les pages de résultats d'une recherche leboncoin et collecte toutes les annonces correspondantes
- Exporte chaque annonce dans un format structuré : titre, prix, localisation, coordonnées GPS, photos, attributs spécifiques, et plus encore
- Permet optionnellement de visiter chaque annonce individuellement pour en extraire le texte complet et les photos en haute résolution
- Retourne jusqu'à **700 annonces par exécution**

***

### Input — Deux façons de définir votre recherche

#### Option 1 — URL directe (recommandée)

Effectuez votre recherche directement sur [leboncoin.fr](https://www.leboncoin.fr), ajustez les filtres à votre convenance, puis copiez l'URL de la page de résultats dans le champ **URL de recherche**.

```
https://www.leboncoin.fr/recherche?text=vélo+cargo&locations=Lyon__45.74846_4.84671_4722_10000&price=min-800&owner_type=private
```

> ⚠️ Si une URL est renseignée, tous les autres paramètres de l'input sont ignorés.

#### Option 2 — Filtres structurés

Renseignez les champs de filtre directement dans l'interface sans quitter Apify.

| Champ | Description |
|-------|-------------|
| **Mot-clé** | Terme de recherche (ex : `iPhone 14`, `table basse`, `développeur`) |
| **Catégorie** | Catégorie leboncoin parmi les 26 disponibles |
| **Localisation** | Ville ou code postal (ex : `Paris`, `69001`, `Bordeaux_33000__44.83_-0.57_1234_15000`) |
| **Prix minimum / maximum** | Fourchette de prix en euros |
| **Type de vendeur** | Tous, particuliers uniquement, ou professionnels uniquement |
| **Tri** | Par date, par prix, ou par pertinence — dans l'ordre croissant ou décroissant |
| **Annonces urgentes uniquement** | Restreint aux annonces marquées "Urgent" |

#### Options communes

| Champ | Défaut | Description |
|-------|--------|-------------|
| **Nombre max d'annonces** | 700 | Nombre d'annonces à collecter (maximum : 700) |
| **Contenu détaillé** | Non | Voir ci-dessous |

***

### Option "Contenu détaillé" — À lire avant d'activer

Par défaut, l'Actor collecte les informations affichées sur les **pages de résultats** : titre, prix, localisation, photos miniatures, attributs principaux.

En activant l'option **Extraire le contenu complet de chaque annonce**, l'Actor visite individuellement chaque annonce pour en extraire :

- La **description complète** rédigée par le vendeur
- Les **photos en haute résolution** (jusqu'à 10)
- Les **attributs détaillés** (kilométrage, surface, DPE, type de contrat, etc.)
- Le nombre de vues et les options de livraison

> ⚠️ **Cette option ralentit considérablement l'exécution et consomme un volume significativement plus élevé de crédits Apify.** Comptez environ 1 minute par annonce, soit près de 12 heures pour 700 annonces. À n'activer que si le contenu détaillé est indispensable à votre cas d'usage.

***

### Temps d'exécution indicatifs

| Mode | Volume | Durée estimée |
|------|--------|---------------|
| Standard (sans détails) | 700 annonces | ~8–10 minutes |
| Avec contenu détaillé | 100 annonces | ~1h30 |
| Avec contenu détaillé | 700 annonces | ~10–12 heures |

Ces durées peuvent varier selon la disponibilité des pages et la charge du site au moment de l'exécution.

***

### Dataset de sortie

#### Champs disponibles

| Champ | Type | Description |
|-------|------|-------------|
| `id` | string | Identifiant unique de l'annonce sur leboncoin |
| `title` | string | Titre de l'annonce |
| `status` | string | Statut de l'annonce (`active`, etc.) |
| `price` | string | Prix affiché (ex : `"1 200 €"`) |
| `priceRaw` | number | Prix brut en nombre entier |
| `location` | string | Localisation complète (ville, code postal, département) |
| `city` | string | Ville |
| `zipcode` | string | Code postal |
| `department` | string | Département |
| `region` | string | Région |
| `latitude` | number | Latitude GPS |
| `longitude` | number | Longitude GPS |
| `publishDate` | string | Date de première publication (ISO 8601) |
| `indexDate` | string | Date de dernière remontée dans les résultats |
| `category` | string | Catégorie leboncoin |
| `sellerType` | string | Type de vendeur (`private` ou `pro`) |
| `sellerName` | string | Nom du vendeur |
| `sellerStore` | string | Nom du magasin (vendeurs professionnels) |
| `isUrgent` | boolean | Annonce marquée comme urgente |
| `image1` | string | URL de la première photo |
| `images` | string | URLs de toutes les photos, séparées par `\|` |
| `attributes` | string | Attributs spécifiques à la catégorie, au format JSON |
| `url` | string | Lien vers l'annonce |
| `scrapedAt` | string | Horodatage de l'extraction |

**Champs supplémentaires avec l'option "Contenu détaillé" :**

| Champ | Description |
|-------|-------------|
| `description` | Texte complet de l'annonce |
| `image1` à `image3` | Photos individuelles en haute résolution |
| `viewCount` | Nombre de vues de l'annonce |
| `hasDelivery` | Livraison disponible |

#### Exemple de résultat (format JSON)

```json
{
  "id": "2456789012",
  "title": "iPhone 14 Pro 256Go Violet - Très bon état",
  "status": "active",
  "price": "750 €",
  "priceRaw": 750,
  "location": "Lyon, 69003, Rhône",
  "city": "Lyon",
  "zipcode": "69003",
  "department": "Rhône",
  "region": "Auvergne-Rhône-Alpes",
  "latitude": 45.7485,
  "longitude": 4.8467,
  "publishDate": "2026-04-20T09:14:33+00:00",
  "indexDate": "2026-04-25T17:02:11+00:00",
  "category": "Téléphonie",
  "sellerType": "private",
  "sellerName": "Marie L.",
  "sellerStore": null,
  "isUrgent": false,
  "image1": "https://img.leboncoin.fr/api/v1/lbcpb1/images/abc123.jpg",
  "images": "https://img.leboncoin.fr/api/v1/lbcpb1/images/abc123.jpg%20|%20https://img.leboncoin.fr/api/v1/lbcpb1/images/def456.jpg",
  "attributes": "{\"phone_model\":\"iPhone 14 Pro\",\"memory\":\"256 Go\",\"color\":\"Violet\",\"condition\":\"Très bon état\"}",
  "url": "https://www.leboncoin.fr/ad/telephones/2456789012",
  "scrapedAt": "2026-04-27T10:08:53.412Z"
}
```

Le champ `attributes` contient les caractéristiques spécifiques à chaque catégorie au format JSON. Pour les téléphones : modèle, capacité, couleur, état. Pour l'immobilier : surface, nombre de pièces, DPE. Pour les véhicules : kilométrage, année, carburant, boîte de vitesses.

***

### Exemples de configuration

#### Recherche par mot-clé et localisation

```json
{
  "keyword": "vélo cargo",
  "locationLabel": "Paris",
  "sortBy": "time",
  "sortOrder": "desc",
  "maxItems": 200
}
```

#### Annonces immobilières à Lyon entre 200 000 € et 400 000 €

```json
{
  "category": "ventes_immobilieres",
  "locationLabel": "Lyon__45.74846_4.84671_4722_10000",
  "priceMin": 200000,
  "priceMax": 400000,
  "sortBy": "price",
  "sortOrder": "asc",
  "maxItems": 700
}
```

#### Offres d'emploi développeur à Paris (depuis une URL)

```json
{
  "searchUrl": "https://www.leboncoin.fr/recherche?category=17&text=d%C3%A9veloppeur&locations=Paris_75000__48.85341_2.3488_5891_20000"
}
```

#### Voitures chez des particuliers avec contenu détaillé

```json
{
  "category": "voitures",
  "ownerType": "private",
  "priceMax": 15000,
  "sortBy": "time",
  "sortOrder": "desc",
  "maxItems": 50,
  "scrapeDetails": true
}
```

***

### Limitations et comportement en cas de restriction

L'Actor est conçu pour être le plus efficace possible dans l'extraction de données depuis leboncoin. Comme tout site web grand public, leboncoin peut parfois restreindre l'accès à ses pages de résultats. L'Actor intègre des mécanismes pour gérer ces situations, mais il peut arriver qu'une exécution ne collecte pas la totalité des annonces demandées.

Dans ce cas, nous recommandons de :

- Relancer l'exécution ultérieurement
- Réduire le nombre d'annonces demandées
- Utiliser une recherche plus ciblée (localisation précise, mot-clé spécifique)

La limite de 700 annonces par exécution est une contrainte opérationnelle que nous avons identifiée comme le seuil au-delà duquel les restrictions deviennent systématiques.

***

### Utilisation des données

Les données extraites via cet Actor sont destinées à un usage personnel ou professionnel dans le respect des [Conditions Générales d'Utilisation de leboncoin](https://www.leboncoin.fr/dc/cgu). L'utilisateur est seul responsable de l'usage qu'il fait des données collectées.

# Actor input Schema

## `searchUrl` (type: `string`):

Collez ici une URL de recherche leboncoin.fr (ex: https://www.leboncoin.fr/recherche?category=17\&text=developpeur). Si renseignée, les filtres ci-dessous sont ignorés.

## `keyword` (type: `string`):

Terme de recherche (ex: 'développeur', 'iPhone 14', 'Renault Clio').

## `category` (type: `string`):

Catégorie leboncoin à cibler.

## `locationLabel` (type: `string`):

Copiez le paramètre 'locations' depuis une URL leboncoin, ou entrez un code postal/ville. Format: 'Paris\_75010\_\_48.87361\_2.35845\_1364\_1000' ou simplement '75010'.

## `priceMin` (type: `integer`):

Prix minimum en euros (laisser vide pour ignorer).

## `priceMax` (type: `integer`):

Prix maximum en euros (laisser vide pour ignorer).

## `ownerType` (type: `string`):

Filtrer par type de vendeur.

## `sortBy` (type: `string`):

Critère de tri des annonces dans les résultats.

## `sortOrder` (type: `string`):

Sens du tri : décroissant (plus récent ou plus cher en premier) ou croissant.

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

Nombre maximum d'annonces à collecter. Maximum : 700 annonces par exécution (limite opérationnelle).

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

⚠️ TRAITEMENT PLUS LONG : Si activé, l'Actor visitera chaque annonce individuellement pour en extraire la description complète, toutes les photos et les attributs détaillés. Le temps de traitement sera multiplié par 3 à 5 environ.

## `urgentOnly` (type: `boolean`):

Si activé, ne retourne que les annonces marquées comme urgentes.

## Actor input object example

```json
{
  "searchUrl": "https://www.leboncoin.fr/c/offres_d_emploi?locations=Paris_75010__48.87361_2.35845_1364_1000",
  "category": "",
  "locationLabel": "Paris_75010__48.87361_2.35845_1364_1000",
  "ownerType": "",
  "sortBy": "time",
  "sortOrder": "desc",
  "maxItems": 100,
  "scrapeDetails": false,
  "urgentOnly": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sbzh/leboncoin").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sbzh/leboncoin").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 '{}' |
apify call sbzh/leboncoin --silent --output-dataset

```

## MCP server setup

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

```

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/cvS1IAel4NL1hBUWX/builds/o9QHNfy6FJ6NM9uWh/openapi.json
