Leboncoin Scraper [$1/1K💰] | French Real Estate · Prices & DPE
Pricing
from $0.70 / 1,000 annonces
Leboncoin Scraper [$1/1K💰] | French Real Estate · Prices & DPE
Scrape Leboncoin.fr — France's largest classifieds platform — for structured French real estate data. Extract prices in EUR, price per m², surface, rooms, DPE/GES energy ratings, GPS, photos, and seller info with SIRET. DataDome bypass via Chrome TLS impersonation plus French residential proxy.
Pricing
from $0.70 / 1,000 annonces
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
20 days ago
Last modified
Categories
Features
Share
Leboncoin Scraper — toutes les catégories
Scrapez n'importe quelle rubrique de leboncoin.fr — immobilier, voitures, emploi, électronique, animaux, services, matériel pro, maison, mode, loisirs… — et récupérez des JSON propres et typés : titre, prix, catégorie, marque/modèle, état, surface/pièces/DPE-GES, GPS, photos, description, fiche vendeur et date de publication.
Français (ci-dessous) · English summary at the end.
Ce que fait cet Actor
- Toutes les rubriques : les 98 catégories de l'arbre leboncoin (
0= toutes,9= ventes immo,2= voitures,15= ordinateurs,75= animaux…), plus les sous-types immobiliers. - Recherche par URL : collez une URL
https://www.leboncoin.fr/recherche?...et tous ses filtres (catégorie, prix, localisation, mots-clés, tri) sont repris automatiquement. - Annonces individuelles : collez des URLs
https://www.leboncoin.fr/ad/...pour ne récupérer que celles-là, sans lancer de recherche. - Filtres : prix, surface, pièces, mots-clés (inclus/exclus, titre seul), type de vendeur (particulier/pro), urgence, don, livraison, rayon, tri par date/prix/pertinence.
- Fiche vendeur : ancienneté, nombre d'annonces, note, temps de réponse, badges (
includeSeller). - Anti-blocage :
curl-impersonateavec l'empreinte TLS exacte de Chrome, cookie DataDome obtenu par warm-up HTTP (et, si besoin, par un onglet Chromium headless), rotation d'IP, puis repli sur la page/recherche(__NEXT_DATA__, puis cheerio). - Cache : rejouez une recherche identique sans re-scraping (
cacheResults+ TTL).
How It Works

Looking for a Leboncoin scraper or a practical Leboncoin data alternative? Paste a search URL or choose from 98 categories, from property and cars to electronics, pets and services. Each ad includes title, price, category, property or vehicle attributes, surface, rooms, DPE, GES, location, GPS, photos, seller details and publication date.
Use the dataset for French real estate research, vehicle market analysis, price monitoring, mapping and lead generation. Export as JSON, CSV or Excel, or pull results through the Apify API. Pay from $1.50 per 1,000 ads.
Comment ça marche
Leboncoin n'a pas d'API publique. Cet Actor parle à la même API interne finder/search
qu'utilise un vrai navigateur, avec une empreinte TLS Chrome grâce à curl-impersonate. Comme le
site est protégé par DataDome, une proxie résidentielle française est fortement recommandée.
Si l'API est bloquée, l'Actor lit la page /recherche (couche __NEXT_DATA__, puis parseur cheerio).
Pour les détails d'une annonce, il interroge finder/classified/{id}, puis la page publique, puis
les balises og:.
Chaîne d'enrichissement par annonce :
finder/search(résultats de recherche)finder/classified/{id}(descriptions complètes, prix, attributs)- page publique de l'annonce (
__NEXT_DATA__/og:) en dernier recours - fiche vendeur si
includeSeller: true
Entrées
| Champ | Type | Défaut | Description |
|---|---|---|---|
category | enum (98 ids) | 9 | Rubrique leboncoin (0 = toutes) |
categoryId | string | – | Saisie brute d'un ID, écrase category |
searchUrl | string | – | URL /recherche complète : ses filtres remplacent les champs ci-dessus |
searchQuery | string | – | Mots-clés |
excludeKeywords | string | – | Mots-clés à exclure (séparés par des virgules) |
searchInTitleOnly | boolean | false | Exiger les mots-clés dans le titre |
locations | array | [] | Région (12), 12|Île de France, 75__75000, ou texte libre (Paris) |
radius | integer | – | Rayon en km — nécessite searchUrl |
sellerType | all/pro/private | all | Type de vendeur |
minPrice / maxPrice | integer | – | Fourchette de prix (€) |
realEstateType | enum | all | Type de bien (catégories immo uniquement) |
minSquare / maxSquare | integer | – | Surface (m²), immo uniquement |
minRooms | integer | – | Pièces minimum, immo uniquement |
shippable | boolean | false | Annonces avec livraison (ignoré si locations est renseigné) |
urgent | boolean | false | Annonces urgentes uniquement |
donation | boolean | false | Annonces à prix 0 uniquement |
sort | time/price/relevance | time | Tri (repli automatique sur le tri par défaut) |
order | asc/desc | desc | Sens du tri |
maxItems | integer | 100 | Nombre max d'annonces (plafond 50 pour les comptes gratuits) |
includePhotos | boolean | true | Extraire les URLs de photos |
includeSeller | boolean | false | Récupérer la fiche vendeur (1 requête de plus par annonce) |
adDetailUrls | array | [] | URLs d'annonces à récupérer directement (mode recherche ignoré) |
cookieBootstrap | boolean | false | Obtenir le cookie DataDome via Chromium headless si le warm-up échoue |
cacheResults | boolean | false | Servir les résultats depuis le cache |
cacheTtlMinutes | integer | 60 | TTL du cache |
proxyConfiguration | object | Apify RESIDENTIAL / FR | Proxy Apify |
proxyUrl | string | – | Proxy unique personnalisé (prioritaire) |
Les filtres excludeKeywords, searchInTitleOnly, urgent et donation sont appliqués côté
client, après récupération, car leur forme exacte dans le payload interne n'est pas documentée.
radius n'existe que dans le paramètre q de l'URL /recherche.
Sorties (dataset)
Chaque ligne du dataset par défaut :
| Champ | Type | Description |
|---|---|---|
id, url, title | string | Identifiant, URL et titre de l'annonce |
price | number|null | Prix en euros |
priceCents | number|null | Prix en centimes (valeur brute de l'API) |
pricePerSquareMeter | number|null | €/m² calculé |
categoryId, categoryName | string | Rubrique et libellé FR |
propertyType, surface, rooms, bedrooms | – | Caractéristiques du bien |
dpe, ges | string | Diagnostics énergie / climat |
condition, brand, model | string | État, marque, modèle |
isShippable, isUrgent, hasPhone | boolean | Drapeaux |
location | object | {city, zipcode, department, region, latitude, longitude} |
photos, photoCount | array/number | URLs des photos et nombre |
seller | object | {id, name, type, isPro, siret, storeId, profileUrl} |
sellerProfile | object|null | Fiche enrichie si includeSeller |
publicationDate | string | Date de publication |
description | string | Description complète (si détails récupérés) |
attributes | object | Attributs bruts (marque, état, couleur…) |
searchQuery | string | Mots-clés de la recherche |
dataSource | string | search, search+detail ou ad-detail |
scrapedAt | string | Horodatage ISO de l'extraction |
Deux vues de dataset sont fournies : Leboncoin Listings et Pricing & Location.
Tarification
Actor en pay-per-event — vous ne payez que ce que vous récupérez :
| Ce qui est facturé | Événement | Prix |
|---|---|---|
| Annonce — une annonce livrée dans le dataset (événement principal) | apify-default-dataset-item | 0,80 $ / 1 000 annonces (dès 0,60 $ au meilleur tier) |
| Annonce détaillée — description complète, attributs et photos récupérés depuis la page de l'annonce | scraped-ad-detail | 1,50 $ / 1 000 (optionnel) |
Profil vendeur — fiche publique du vendeur attachée au résultat (includeSeller) | seller-profile | 2,50 $ / 1 000 (optionnel) |
| Démarrage du run | apify-actor-start | 0,00005 $ par run |
- Annonce détaillée n'est facturée que si l'enrichissement a réellement réussi ; Profil vendeur seulement si la fiche est présente dans le résultat. Une annonce bloquée ou une fiche introuvable, c'est zéro coût pour vous.
- Les deux options se déclarent dans Console → Actor → Publishing → Monetization → Actor pricing ; tant qu'elles ne le sont pas, elles apparaissent dans les logs sans être facturées — chaque annonce reste facturée par l'événement principal.
- Les comptes gratuits sont plafonnés à 50 annonces par run.
Exemples
Recherche par URL (le plus fiable)
{"searchUrl": "https://www.leboncoin.fr/recherche?category=2&locations=t1&price=min-15000","maxItems": 200,"sort": "time"}
Voitures particulières, marque exclue
{"category": "2","sellerType": "private","minPrice": 5000,"maxPrice": 20000,"excludeKeywords": "occasion, cassé","searchQuery": "break diesel","maxItems": 100}
URLs d'annonces directes
{"adDetailUrls": ["https://www.leboncoin.fr/ad/voitures/1234567890","https://www.leboncoin.fr/ad/ventes-immobilieres/9876543210"],"includeSeller": true}
Appel API
curl -X POST "https://api.apify.com/v2/acts/ahmed_jasarevic~leboncoin-scraper/runs?token=APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"category":"10","minPrice":600,"maxPrice":1200,"locations":["Paris"],"maxItems":50}'
Limites assumées
- Pas de monitoring, pas de webhook, pas de Telegram — c'est un scraper de données, pas une plateforme d'alertes. Branchez vos propres webhooks Apify sur le dataset.
- Les filtres client-side dépendent du nombre d'annonces parcourues : avec
urgent,donationouexcludeKeywords, il faut parfois aller au-delà de la première page. radiusetshippableont des interactions surprenantes côté leboncoin :shippableest ignoré dès qu'une localisation est fournie.- Aucune vérification en direct a pu être faite depuis cet environnement (DataDome bloque les IP de datacenter) : testez avec une proxy résidentielle FR sur le plateau Apify.
English summary
Scrape any leboncoin.fr category — real estate, cars, jobs, electronics, pets, services, pro material — into clean typed JSON: title, price, category, brand/model, condition, surface/rooms/ DPE-GES, GPS, photos, description, seller profile and publication date.
- Paste a
/rechercheURL to reuse its filters, or paste individual/ad/...URLs. - Filters: price, surface, rooms, include/exclude keywords, title-only, seller type, urgency, donation, shipping, radius, sort by date/price/relevance.
- DataDome bypass:
curl-impersonatewith Chrome's exact TLS fingerprint + DataDome cookie warm-up- IP rotation, then
/rechercheHTML fallback (__NEXT_DATA__, then cheerio).
- IP rotation, then
- Enrichment chain:
finder/search→finder/classified/{id}→ public ad page → optional seller profile. - Pay-per-event, billed only for what you actually get:
- Annonce (primary
resultevent) — every ad written to the dataset: $0.80 / 1,000 ads (from $0.60 on the best tier) - Annonce détaillée — full description, attributes and photos fetched from the ad page: $1.50 / 1,000 (opt-in, billed only when the fetch succeeded)
- Profil vendeur — the seller's public profile attached to the result (
includeSeller): $2.50 / 1,000 (opt-in, billed only when a profile is attached) - actor start: $0.00005 per run
- Annonce (primary
- Declare the two opt-ins in Console → Publishing → Monetization → Actor pricing; until then they are logged but never billed, and every ad still goes through the primary event. Free accounts are capped at 50 ads per run.
- No monitoring, no webhooks, no Telegram — wire your own Apify webhooks to the dataset.