Leboncoin Scraper avatar

Leboncoin Scraper

Pricing

$0.80 / 1,000 results

Go to Apify Store
Leboncoin Scraper

Leboncoin Scraper

Collect structured public listings from search and direct listing URLs, including prices, locations, seller type, images, dates, and category details.

Pricing

$0.80 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Scrape public Leboncoin car listings and property sale listings from search URLs, or collect a known listing from its direct URL. Export Leboncoin data to JSON, CSV, or a spreadsheet for price research, inventory tracking, and market analysis; the dataset offers a structured alternative to manually opening each result.

The actor reads the site's structured search page data, which includes complete listing records, and uses the matching structured route for a direct listing. A single run can accept multiple URLs, stop at a requested item count, and combine the results in one dataset. It saves one row per distinct listing ID. The data route is separate from the visible search page, which can be blocked independently.

What data can you extract from Leboncoin?

Every saved row has a stable set of camelCase fields. A field can be null when the advertiser has not supplied it or it does not apply to that category. For example, surfaceM2 is generally empty on a car listing and vehicleYear is generally empty on a property listing. The attributes array preserves extra category fields without changing the top level shape of each row.

FieldDescriptionExample
idListing identifier3259194318
urlDirect link to the public listing/ad/voitures/3259194318
titleListing headlineVehicle headline
descriptionPublic descriptionVehicle features and sale terms
categoryCategory labelVoitures
categoryIdNumeric category code as text2
statusPublished listing statusactive
listingTypeOffer or requestoffer
priceEurMain advertised price in euros7990
priceCentsAdvertised price in cents799000
cityListing cityLa Châtre
postalCodePostal code36400
departmentDepartment nameIndre
regionRegion nameCentre
latitudeApproximate latitude supplied with the listing46.57883
longitudeApproximate longitude supplied with the listing2.00604
sellerTypeSeller classpro
sellerNamePublic display name, when presentPublic profile name
imageCountNumber of advertised images24
imageUrlsPublic image URL arrayArray of image links
thumbnailUrlThumbnail image URLImage link
publishedAtFirst publication date supplied by the site2026-08-29 18:22:59
indexedAtLast indexing date supplied by the site2026-09-25 10:25:14
hasPhoneWhether a phone option is showntrue
isBoostedWhether a promotion flag is presentfalse
favoriteCountPublic favorite counter, if shown22
surfaceM2Property floor area in square metres65
roomsProperty room count3
bedroomsProperty bedroom count2
energyRatingProperty energy gradeC
emissionsRatingProperty emissions gradeA
vehicleBrandVehicle makeMake label
vehicleModelVehicle modelModel label
vehicleYearRegistration year2012
mileageKmOdometer reading in kilometres223000
attributesOther source attributes, each with key, label, and value{"key":"fuel","value":"Diesel"}
sourceUrlInput URL that produced the rowSearch URL
pageIndexSearch result page number, or 1 for a direct URL1
scrapedAtUTC time the row was extractedISO timestamp

The listing identifier and URL support joining repeated exports. The pricing fields are both present because downstream systems sometimes use whole euros and sometimes integer cents. Geographic coordinates come from the listing and may be approximate. Dates are copied from the site in its supplied format; scrapedAt records when this actor saw the record. The seller fields include only the public display name and seller type; this actor does not reveal phone numbers or private contact details.

How to scrape Leboncoin

  1. Open a public search URL for the category and filters you want, or a direct /ad/ listing URL. Copy the full HTTPS address, including location and text parameters when relevant.
  2. Paste one or more addresses into startUrls. A broad category search is a useful first run because it is easy to compare the output with the site's public results.
  3. Set limit to the number of rows you need. Set maxPages to the number of search result pages the actor may read for each URL.
  4. Start the run. When it finishes, inspect the item count and export the dataset in your preferred format.

A direct listing URL produces at most one row. A search URL is passed to the site's structured page data route with its query parameters intact, so category, text, location, and other supported filters are evaluated by the site. Each result page carries up to 35 listings, and the actor follows pages until it reaches limit, maxPages, or the site's page cap.

Input

ParameterTypeDefaultDescription
startUrlsArray of URLsRequiredPublic search URLs across categories, or direct listing URLs.
limitInteger100Maximum rows across the run. 0 removes the item cap, subject to the site page cap.
maxPagesInteger10Maximum result pages per search URL, from 1 to 100.
proxyConfigurationObjectPlatform proxyOptional connection setting; the default starts with a datacenter route.

A practical first input is:

{
"startUrls": [
"https://www.leboncoin.fr/recherche?category=2"
],
"limit": 30,
"maxPages": 1
}

To collect a specific known listing, replace the search URL with its /ad/ URL and set limit to 1. You can mix direct and search URLs in the same input. The total limit applies to the combined dataset, so put your highest priority URL first. Duplicate listing URLs are skipped within one run.

The actor accepts HTTPS addresses on leboncoin.fr and www.leboncoin.fr. It rejects addresses from other hosts. A search URL must use /recherche; category and other query parameters can follow the site's public search format. This validation keeps the collection scope clear and prevents accidental requests to unrelated domains.

Output example

The following trimmed row comes from a successful 30 item car search on 26 September 2026. Long text, image links, extra attributes, and fields empty for this category are omitted from this display; they are present in the dataset when supplied by the listing.

{
"id": "3267877401",
"url": "https://www.leboncoin.fr/ad/voitures/3267877401",
"category": "Voitures",
"categoryId": "2",
"status": "active",
"listingType": "offer",
"priceEur": 17990,
"priceCents": 1799000,
"city": "Seyssinet-Pariset",
"postalCode": "38170",
"department": "Isère",
"sellerType": "pro",
"imageCount": 11,
"publishedAt": "2026-09-12 03:39:19",
"indexedAt": "2026-09-26 11:40:52",
"hasPhone": true,
"isBoosted": true,
"favoriteCount": null,
"vehicleYear": 2024,
"mileageKm": 54685,
"sourceUrl": "https://www.leboncoin.fr/recherche?category=2",
"pageIndex": 1
}

The source listing contained additional category attributes and 11 image URLs. The full record also includes location coordinates and an extraction timestamp. The identifier is a string so it remains stable when datasets are exported to systems that handle large numbers differently.

Use cases

  • Used vehicle pricing: collect asking prices, years, mileage, and locations to compare advertised vehicles within a chosen category. Asking prices are not confirmed sale prices; treat them as market offers.
  • Inventory monitoring: schedule repeated collections of a broad car search and compare id values across exports to spot additions. Compare indexedAt carefully because a listing can remain available after a new index date.
  • Local market views: group rows by city, department, or region, then calculate advertised counts and median prices. Search URL location filters are applied by the site's result data route.
  • Property sale research: collect public property advertisements from a property search URL. Surface, rooms, bedrooms, and energy fields depend on the individual advertisement.
  • Known listing tracking: use direct listing URLs to retain a structured snapshot of selected public advertisements, including images and category attributes.
  • Catalog cleanup: join rows by id, inspect missing fields, and standardize category attributes in your own reporting system.

How much does it cost to scrape Leboncoin?

The configured result event rate is $0.80 per 1,000 saved listings. At that rate, 30 saved listings correspond to $0.024, 1,000 correspond to $0.80, and 5,000 correspond to $4.00 in event charges. Check run billing for any platform usage charged under your account settings. Actual runtime varies with page size, blocks, retries, and how many candidate listings must be opened to satisfy a filter.

A direct URL that does not yield a row produces no saved item. A filtered search can return fewer rows when the site reports fewer matches or applies a result cap. Start with a small limit, examine the item count and run usage, then raise it when the chosen category and filters behave as expected. A larger maxPages can increase runtime when more result pages are requested.

Tips for best results

Start broad. A car category URL with no city filter is more likely to reach limit quickly because each result page can contain 35 rows. Add a text filter when the requested term is common in titles or descriptions. If your filter is narrow, check the site's reported match count before raising limit; increasing maxPages cannot create more matching listings.

For location searches, copy the location parameter from a real public URL. The actor passes it through to the site's structured search data route, which applies its own location rules. Check the exported locations before making geographic claims from a small sample. A location URL that produces zero results in the site's data route will also produce zero rows here.

For repeat monitoring, keep the same input URL and compare stable IDs across runs. Store your own observation time as well as publishedAt and indexedAt: publication and indexing dates describe the listing, while the observation time describes your collection. Avoid treating an absent record from one result page as proof that a listing was removed; rankings and page positions can change.

When a direct listing has a temporary access error, retry later. The connection layer rotates datacenter sessions for structured page data and can try another route for a direct page fallback. Repeated blocks can still prevent collection. A search run can save 30 rows from one structured result page without opening 30 listing pages.

Limits

The structured search route was verified with car category=2, property sale category=9, a text query, and a location query. Other public category URLs use the same route, but field availability and access may differ. Query parameters are forwarded to the site's data route rather than interpreted locally. Verify less common filters against the visible search and the returned records before using them in a decision.

The site reports a 100 page cap per search; with up to 35 listings per page, a single search URL exposes at most about 3,500 results. To collect more, supply several nonoverlapping search URLs with narrower filters and let the actor deduplicate IDs across them. Very narrow searches may produce fewer rows than limit. If limit is 0, maxPages and the site cap still bound each search URL.

Availability differs across endpoints and over time. The visible search pages and sitemap files returned repeated 403 responses during discovery. The structured search data route then returned complete car and property result sets, including 35 records on a broad first page; that route is now the primary source. A run with no collected listings fails explicitly. Public advertisements can disappear, change status, or omit fields between observations. Empty fields reflect source availability; the actor does not invent missing values.

The actor does not access accounts, private messages, hidden contact details, or logged in content. It saves a public seller display name only when that name is included in the listing's public structured record. Use the dataset in line with the site's terms and applicable privacy rules.

Use in automated workflows

A scheduled collection can track broad car inventory with the input above and compare the newest dataset against a prior export. Another workflow can pass known direct listing URLs and extract price, status, images, and indexed date for a watchlist. The input schema exposes each option and its description for systems that build a run request programmatically.

Two example requests are: “Collect 30 public car advertisements from this category URL and return the price, city, year, and listing link,” and “Read these known listing URLs and report which ones still return a structured public record.” The dataset can be consumed as JSON or exported as a table for further analysis.

FAQ

Is scraping public Leboncoin listings permitted?

Check the site's terms and the rules that apply to your use case. Its robots file states that automated access requires special permission. This actor uses public pages, but public visibility alone does not grant permission for every use. Handle any public personal data responsibly, especially names in seller profiles.

Do I need to set a proxy?

The default connection setting rotates datacenter sessions for structured page data. A direct listing page fallback can escalate after repeated blocks. You can supply your own proxy configuration when your environment requires it. Access restrictions can still prevent some pages from loading.

How fast is a run?

It depends on blocks, retries, category, and filters. One measured 30 item car search completed in about 26 seconds, including startup. Structured search pages include up to 35 listings per request, so the actor does not need to open every listing separately for a search. A direct listing URL is at most one row. Check the run duration for your own URL and connection conditions rather than assuming a fixed speed.

Can I schedule monitoring?

Yes. Save an input and run it on a schedule. Compare id across completed datasets and check the returned item count before interpreting a change as a market change. A blocked or partial run may be missing listings that still exist.

Can I export to a spreadsheet?

Yes. Export the dataset as a table format or consume it from the dataset endpoint. The main fields are flat and stable; imageUrls and attributes contain arrays for richer downstream processing.

Why is a field empty?

The field may not apply to the category, the advertiser may have left it blank, or the public structured record may not expose it. Inspect attributes for additional category data before concluding that the source lacks a detail. The actor does not estimate missing prices, ratings, or mileage.

Why did a filtered search return fewer rows than requested?

The site's search data may report fewer matches than limit, the search may have reached its page cap, or a request may have been blocked. Increase maxPages only when more result pages exist. For a wider collection, use additional filtered URLs and verify the returned categories, locations, and dates in the dataset.

Integrations

The default dataset can be retrieved through the platform API, used in scheduled runs, connected to a webhook, or exported for a spreadsheet or reporting pipeline. Use id as the durable join key, sourceUrl to track which input led to a row, and scrapedAt to distinguish repeated observations of the same public listing.

Support

Open an issue on the actor's Issues tab with the input URL, the run link, the expected field, and a short description of the result. Field requests and reproducible access problems are welcome.