leboncoin France Car Scraper icon

Automation · E-commerce

leboncoin France Car Scraper

Scrape used-car listings from leboncoin.fr's Voitures section into 26 typed fields — EUR price, brand, model, year, mileage, fuel, gearbox, horsepower, engine size, body type, colour, Crit'Air class, pro-vs-private seller, town with postcode and department, every photo URL, and the full French description. leboncoin is fronted by DataDome and publishes no API, so the Actor forces residential exits and rotates the IP itself when it gets walled.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

leboncoin.fr is France's largest classifieds marketplace and the default place the French buy and sell used cars, with hundreds of thousands of live listings in the Voitures section. It publishes no public API. This Actor wraps a polite scrape — paste a filtered leboncoin search URL or use the default car listing page, and pull every listing's price (EUR), brand, model, year, mileage (km), fuel, gearbox, horsepower, body type, colour, Crit'Air sticker, seller type (pro/private), location with postcode, and photos. Flip on detail enrichment and we fetch each listing's page for the full French description. Built on curl-cffi with browser TLS impersonation and residential-proxy rotation to ride past the site's bot protection.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

Use cases

  • Used-car price analytics — track asking prices by brand/model/year across the French market in EUR.
  • Dealer inventory monitoring — diff successive runs to spot new arrivals and price cuts at specific pro sellers.
  • Market research — aggregate fuel-type and Crit'Air mix to gauge EV/hybrid adoption and low-emission-zone readiness in France.
  • Lead generation — build a directory of French car dealers from <code>seller_name</code> + <code>location</code> + <code>postcode</code>.
  • Arbitrage / cross-border sourcing — find under-priced French listings filtered by mileage, year, and power for import.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
searchUrl string no Full leboncoin.fr search/results URL with your filters already applied (e.g. https://www.leboncoin.fr/recherche?category=2&brand=Peugeot&regdate=2018-max). Leave empty to scrape the default car listing page…
maxResults integer no Hard cap on dataset rows. leboncoin.fr paginates 35 listings per page; the Actor walks pages until this cap or the last page.
enrichDetails boolean no Fetch each listing's detail page for the full French description. The search payload already carries price, brand, model, year, mileage, fuel, gearbox, power, colour, seller, location, and photos — turn this off to…
{
  "searchUrl": "",
  "maxResults": 5,
  "enrichDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

listing_idlisting_urltitlemakemodelyearpricecurrencymileage_kmfuel_typetransmissionengine_power_hpengine_size_ccbody_typecolorfirst_registration

{
  "listing_id": "3117822207",
  "listing_url": "https://www.leboncoin.fr/ad/voitures/3117822207",
  "title": "Morris Mini COOPER 1275 S",
  "make": "MORRIS",
  "model": "Autre",
  "year": 1968,
  "price": 34900,
  "currency": "EUR",
  "mileage_km": 101890,
  "fuel_type": "Essence",
  "transmission": "Manuelle",
  "engine_power_hp": null,
  "engine_size_cc": null,
  "body_type": "Citadine",
  "color": "Vert",
  "first_registration": "07/1968",
  "location": "Saint-Jean-du-Cardonnay",
  "region": "Seine-Maritime",
  "postcode": "76150",
  "seller_type": "dealer",
  "seller_name": "MECA SPORT",
  "critair": "Non class\u00e9",
  "photo_urls": [
    "https://img.leboncoin.fr/api/v1/lbcpb1/images/12/99/eb/1299eb9f07aa41b5f0430ce684d22b4e689dc47c.jpg?rule=ad-image"
  ],
  "description": "Magnifique Morris Mini Cooper 1275 S restaur\u00e9e.",
  "posted_date": "2025-12-26 14:04:00",
  "scraped_at": "2026-06-02T00:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
result-row$0.0020Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

FAQ

Do I need a leboncoin account or API key?
No. leboncoin.fr offers no public API. This Actor scrapes the public Voitures listings politely — see the ToS Notice in the README.
How do I scrape a filtered search?
Apply your filters on leboncoin.fr, copy the resulting URL from your browser, and paste it into <code>searchUrl</code>. We walk the result pages from there.
Why does this need a residential proxy?
leboncoin.fr is fronted by bot protection. Datacenter IPs get challenged or blocked; Apify residential exits ride past it reliably. The default proxy config already requests RESIDENTIAL.
Is the detail enrichment worth it?
The search payload already carries the description, price, brand/model, year, mileage, fuel, gearbox, colour, seller, location, and photos. Enrichment re-fetches the full description from each listing's own page for the freshest copy — set <code>enrichDetails</code> to false to halve requests.
What currency are prices in?
Always EUR (euros). <code>price</code> is an integer; mileage is always in kilometres.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Read more

Articles about this Actor

Related Actors

Teams that run this also run