How to Scrape Leboncoin: France's Classifieds at Scale
Scrape Leboncoin listings — title, price, category, brand, images, attributes, full location and seller info — across cars, real estate, jobs and goods. No login.
If you want to scrape Leboncoin — France’s dominant petites annonces marketplace — you are sitting on one of the richest second-hand and B2B datasets in Europe. Leboncoin.fr lists tens of millions of active classified ads across cars, real estate, jobs, and consumer goods, each with a price, a precise location, an image set, and a seller profile that flags whether the listing is private or professional. That combination — price plus location plus seller type, at national scale — is exactly what powers price intelligence, lead generation, and market research. This guide covers what the data is worth, how to pull it cleanly, the exact fields you get back, and the cost math.
Why French classifieds data is valuable
Leboncoin is not a niche site. It is the default place French consumers and businesses post and find second-hand cars, apartments, jobs, electronics, furniture, and tools. A single broad category like voiture exposes over a million results. That depth makes it a primary source for several distinct data jobs:
- Cars — make, model, registration year, mileage and asking price across every region, the backbone of any used-car pricing model.
- Real estate — apartments and houses for sale or rent, with zipcode and GPS coordinates, ideal for local rent and price benchmarking.
- Jobs — employment listings posted by businesses, useful for hiring-demand and local labour-market signals.
- Goods — phones, furniture, appliances, bikes and everything else in the long tail of consumer resale.
Because every ad carries a seller type (private vs. professional), the same scrape that gives you price intelligence also gives you a lead list: filter for isPro and you have a directory of professional sellers by category and region.
▶ Run the Leboncoin Scraper — point it at any keyword and pull thousands of French classified ads with price, location, images and seller info. No login, no API key. $5 per 1,000 listings.
How scraping Leboncoin actually works
Leboncoin renders its search results into an embedded __NEXT_DATA__ JSON blob inside the page HTML. That is a gift: the structured data you need — every ad, fully typed — is already in the initial document. The scraper requests each public search page, parses that JSON, and extracts all 35 ads per page. No headless browser, no login, no cookies, no API key. That keeps it fast and cheap at scale.
The one real constraint is bot protection. Leboncoin is fronted by DataDome at the IP tier, so a clean France residential IP is mandatory — datacenter or non-FR IPs get challenged or blocked. The actor ships pre-configured to use Apify RESIDENTIAL proxies in France, and when a request is challenged it automatically rotates to a fresh proxy session and retries (about 1–2 tries per page on average). You do not solve captchas or run a browser; you just leave the proxy config alone.
Input modes
You drive everything from a list of search queries, optionally narrowed by category, location, and sort order:
| Field | Type | What it does |
|---|---|---|
searchText | array | Required. Search queries (voiture, iphone 15, appartement paris). Each query is paginated independently. |
category | string | Optional Leboncoin category ID (the category URL param), e.g. 2 = Voitures. |
location | string | Optional locations value to restrict by region, department or city. |
sortBy | string | time, price-asc or price-desc. Default is relevance. |
maxItemsPerSearch | integer | Cap per query. 0 = run until results run out. |
maxResults | integer | Global cap across all queries. 0 = unlimited. |
proxyConfiguration | object | FR residential proxy (required, pre-configured). |
A typical input scraping two queries, newest-first, capped at 350 ads each:
{
"searchText": ["voiture", "iphone"],
"sortBy": "time",
"maxItemsPerSearch": 350,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "FR"
}
}
You can mix broad and narrow queries in one run — a category sweep like ["appartement", "maison", "studio"] for real estate, or a tight ["iphone 15 pro"] for a single-model price snapshot. Each query is paginated and the results are de-duplicated by ad ID.
Pagination
Each search page holds 35 ads, and Leboncoin allows up to roughly 100 pages per search, so a single broad query yields up to about 3,500 ads. The actor walks that pagination automatically until it hits your maxItemsPerSearch limit or the results genuinely run out. To go beyond one query’s ceiling, add more queries (by sub-category, by city, by brand) — that is how you assemble datasets in the tens of thousands.
The output: exact fields you get back
Every ad is saved as one clean, structured record. Here is a realistic example for a used-car listing:
{
"listId": "3121812923",
"title": "Peugeot 208 1.2 PureTech — faible kilométrage",
"description": "Véhicule en excellent état, entretien à jour...",
"url": "https://www.leboncoin.fr/ad/voitures/3121812923",
"price": 12490,
"priceCents": 1249000,
"currency": "EUR",
"categoryId": "2",
"categoryName": "Voitures",
"brand": "Peugeot",
"adType": "offer",
"status": "active",
"hasPhone": true,
"firstPublicationDate": "2026-05-30 13:05:25",
"imageCount": 13,
"thumbnail": "https://img.leboncoin.fr/api/v1/.../...jpg?rule=ad-thumb",
"images": ["https://img.leboncoin.fr/api/v1/.../...jpg?rule=ad-image"],
"attributes": [{ "key": "regdate", "value": "2019", "label": "2019" }],
"location": {
"region": "Île-de-France",
"department": "75",
"city": "Paris",
"zipcode": "75011",
"lat": 48.8619,
"lng": 2.3784,
"country": "FR"
},
"seller": {
"id": "3c11c9c1-...",
"storeId": "18068387",
"name": "Garage Centre Auto",
"type": "pro",
"isPro": true,
"activitySector": "automotive"
},
"searchQuery": "voiture",
"scrapedAt": "2026-06-04T10:00:00.000Z"
}
Field reference
| Field | Description |
|---|---|
title / description | Ad title and full body text |
price / priceCents / currency | Price in euros, in cents, and currency |
categoryId / categoryName / brand | Category and brand of the item |
adType / status / hasPhone | Offer/demand type, ad status, phone availability flag |
firstPublicationDate / expirationDate | When the ad was posted and when it expires |
imageCount / thumbnail / images | Image count, thumbnail URL and all full-size image URLs |
attributes | Structured key/value attributes (year, mileage, size, …) |
location | Region, department, city, zipcode and GPS coordinates |
seller | Seller id, store, name, private/pro flag and activity sector |
A few schema notes worth acting on early. Keep listId as your stable join key — titles and prices change between scrapes, the ID does not. The priceCents field exists so you never do float math on euros; use it for aggregation. The attributes array is where category-specific gold lives — regdate and mileage for cars, surface area and room count for real estate — so flatten the keys you care about into columns. And always retain scrapedAt: classified ads are short-lived, so a record only means something paired with the timestamp it was captured.
Use cases
Price intelligence
The headline use case. Pull every listing for a model, normalize on the attributes (year, mileage, condition), and you have a live distribution of asking prices across France. Resellers and arbitrage players use this to spot underpriced ads the moment they post (sortBy: "time"); analysts use it to benchmark second-hand values for cars, phones, and appliances over time. Re-running the same query on a schedule turns a one-off snapshot into a price index.
Lead generation
Because each record flags isPro plus an activitySector and a storeId, you can filter a category sweep down to professional sellers and build a clean B2B prospect list by trade and region — garages, real-estate agencies, electronics dealers. Pair it with an email-enrichment step and you have an outbound-ready list. Note the actor intentionally returns only the public hasPhone flag, not personal phone numbers.
Market research
Aggregate across categories and regions and Leboncoin becomes a barometer of the French resale economy: inventory volume by department, price drift quarter over quarter, which brands dominate the used market, how rental supply shifts city by city. For data science teams, the same feed is labelled training data — clean French marketplace records for pricing and trend models.
▶ Run the Leboncoin Scraper — filter by category, location and sort order; export thousands of listings per run to JSON, CSV or Excel. Pay per result, no headless browser, no API key. $5 per 1,000 listings.
Cost math
Pricing is $5 per 1,000 listings on a pay-per-result basis — you pay for the structured records you keep, not for compute time or browser overhead. A focused price-intelligence run of 3,500 car ads costs about $17.50. A weekly market-research sweep across ten categories at 2,000 ads each — 20,000 listings — runs roughly $100/week, for a continuously refreshed national feed across the categories that matter to you.
Building this yourself is deceptively hard. The HTTP layer looks trivial until DataDome challenges you and you are stuck sourcing and rotating clean French residential IPs, re-minting sessions on every block, and re-parsing the __NEXT_DATA__ shape each time Leboncoin tweaks it. The managed actor absorbs that maintenance.
FAQ
Do I need a login or API key to scrape Leboncoin?
No. The actor reads only the public website search page — no cookies, no account, and no developer API key. It parses the data Leboncoin already embeds in the page HTML.
Why does it require a France residential proxy?
Leboncoin uses DataDome IP-reputation filtering. A clean French residential IP passes; datacenter or non-FR IPs get blocked. The default proxy config is already set to RESIDENTIAL + country FR — just leave it as-is and the actor handles session rotation automatically.
How many ads can I get per search?
Hundreds to thousands. Each page holds 35 ads and Leboncoin allows up to roughly 100 pages per search, so a broad query yields up to about 3,500 ads. Add more queries — by sub-category, brand or city — to scale into the tens of thousands.
Can I filter by category or location?
Yes. Pass a Leboncoin category ID and/or a location value, and optionally a sortBy order (time, price-asc, or price-desc). For lead generation, sweep a category and then filter the output on the seller isPro flag.
Can I scrape several searches at once?
Yes. Pass many queries in searchText; each one is paginated independently and the combined results are de-duplicated by ad ID, so a scheduled re-run surfaces genuinely new listings.
Is the seller’s phone number included?
No. The actor returns the public hasPhone flag indicating whether the ad has a phone contact, but it does not collect personal phone numbers. It captures publicly available listing data only — you remain responsible for compliance with Leboncoin’s Terms and applicable data-access and personal-data limits.
Wrapping up
Leboncoin is a rare case of a deep, national, structured marketplace whose search data sits in plain HTML — no login, no account risk, no headless browser, just a France residential IP and a JSON blob to parse. For a one-off look the website is fine. For a refreshed feed across cars, real estate, jobs and goods — to power price intelligence, lead generation or market research — run it as a managed scraper. See how-to-scrape-leboncoin-france-classifieds for the full walkthrough, and let someone else carry the DataDome and parsing maintenance.
▶ Open the Leboncoin Scraper on Apify — scrape Leboncoin listings with price, location, images and seller info at scale. Pay per result. Start with Apify’s free monthly credit.
Related guides
How to Scrape Avito: Russia's Largest Classifieds (avito.ru)
Scrape Avito.ru listings at scale — title, current and old price, location, category, images and URL. Search by keyword or browse by category and location.
How to Scrape Blocket.se Swedish Classifieds in 2026
Extract used cars, electronics and marketplace items from Blocket.se — Sweden's largest classifieds. Pull prices, images, location, coordinates and seller type via its internal APIs.
How to Scrape Craigslist Listings and Prices in 2026
Learn how to scrape Craigslist listings, prices, images and GPS coordinates across any city and category — no login, no API key — and build market-wide datasets at scale.