# Leboncoin Scraper: France Classifieds and Prices

> Leboncoin scraper: enter a keyword, category, place or price range. Get price, city, photos, condition and seller type for each listing. No login.

URL: https://cliqtomedia.com/actors/leboncoin-scraper/

Category: Classifieds & second-hand · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Get public Leboncoin listings in France by keyword, category, place and price. Each row has the price, city, photos, condition and seller type. You can also get only new listings each day.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `vélo électrique` in Search keyword. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Leboncoin Scraper collects public listings from Leboncoin in France by keyword, category, place and price, and returns one row per listing with price, city, photos, condition and seller type. No login or API key is needed.



### Good for

- A reseller who wants underpriced items in one category or region.
- A market analyst who wants price levels for cars, bikes, phones or flats in France.
- A buyer who wants a daily list of new listings for one search.
- A shop that wants to see what professional sellers ask for similar items.

## Price

Prices will be shown after release.

## Questions

### Do I need a Leboncoin account or an API key?

No. The Actor reads public listings without a login.

### Can I get the seller's phone number or name?

No. For professional sellers you get the business name when the listing shows it.

### Why is a value empty?

The seller did not give it, or the category does not have it. For example, condition is empty in many categories.

### Why does the price differ for listing links?

Each listing link goes through a slower route, and this costs more to run. Search rows have the same fields, so a search is the better choice for many listings.

### How do I get only new listings every day?

Turn on `onlyNew`, add a `stateName` and create a schedule. The first run saves the newest listings, up to `maxItems`. Later runs save and charge only the ones that appeared since.

### How fresh is the data?

Each row shows the site at the time of the run. The `scrapedAt` field gives this time. A listing can change or end after that.

## Data fields

- `listingId` (string): Leboncoin listing id (the number at the end of the listing URL).
- `url` (string): Public listing page on www.leboncoin.fr.
- `title` (string): Listing title. Phone numbers and e-mail addresses are masked.
- `description` (string): Full listing text. Phone numbers and e-mail addresses are masked.
- `price` (number): Price in euros, with cents when the seller set them.
- `oldPrice` (number): Earlier price when the seller lowered it.
- `currency` (string): EUR when the listing has a price.
- `buyerFee` (number): Protection fee Leboncoin adds for the buyer, in euros.
- `shippingFees` (array): Delivery options with their price in euros.
- `category` (string): Category name as Leboncoin shows it.
- `categoryId` (string): Leboncoin category id, the same value as the Category input.
- `location` (string): City and postcode as one line.
- `city` (string): City.
- `zipcode` (string): Postcode.
- `department` (string): Department name.
- `departmentId` (string): Department number.
- `region` (string): Region name, in the pre-2016 regions Leboncoin uses.
- `regionId` (string): Leboncoin region id.
- `latitude` (number): Approximate latitude of the listing.
- `longitude` (number): Approximate longitude of the listing.
- `postedAt` (string): First publication date in UTC (ISO 8601).
- `indexedAt` (string): Last time the listing was republished or updated, in UTC (ISO 8601).
- `expiresAt` (string): When the listing expires, in UTC (ISO 8601).
- `images` (array): Photo URLs in the largest size available.
- `imageCount` (integer): Number of photos.
- `attributes` (object): Category details as labels, e.g. mileage, surface, energy class, bike type.
- `condition` (string): Item condition as Leboncoin shows it.
- `adType` (string): offer, or demand for wanted listings.
- `status` (string): Listing status at the source.
- `urgent` (boolean): The seller marked the listing as urgent.
- `boosted` (boolean): The seller paid to show the listing higher.
- `shippable` (boolean): The listing offers delivery.
- `hasPhone` (boolean): The seller has a phone number on the listing. The number itself is never collected.
- `sellerType` (string): pro or private.
- `sellerName` (string): Business name of a professional seller. Always empty for private sellers.
- `sellerSiren` (string): French company number (SIREN) of a professional seller. Always empty for private sellers.
- `sellerStoreId` (string): Leboncoin store id of a professional seller. Always empty for private sellers.
- `sellerStats` (object): With "Add seller statistics": registration date, number of ads, reply rate, reply time, badges and rating.
- `searchQuery` (string): Keyword of the search that found this listing.
- `searchUrl` (string): Search link that found this listing.

## Input settings

- `query` (string): What to search for, in French as buyers type it (e.g. "vélo électrique", "iphone 15", "canapé"). Leave empty to browse a whole category or place.
- `category` (string): Limit to one Leboncoin category. "(all)" entries cover the whole group.
- `location` (string): A city ("Lyon"), postcode ("69003"), department name or number ("Rhône", "69") or region ("Bretagne", "Occitanie"). Leave empty for all of France.
- `minPrice` (integer): Keep listings at this price or higher. Listings without a price are dropped when a price limit is set.
- `maxPrice` (integer): Keep listings at this price or lower. Listings without a price are dropped when a price limit is set.
- `maxItems` (integer): Upper limit of listings saved for each search. Leboncoin shows at most 3,500 per search; above that a nationwide search is split by department automatically.
- `searchUrls` (array): Links copied from www.leboncoin.fr/recherche with every filter you set on the site, including category filters such as mileage or surface. Each link is one more search. A link that is not valid is skipped with a warning.
- `adUrls` (array): Fetch these listings directly, with the full description and all attributes. When set, the search fields and search links are ignored. Charged per listing at the listing-link price. A link that is not valid is skipped with a warning and not charged.
- `moreQueries` (array): Extra keywords, each run as one more search with the same filters. A listing found by several keywords is saved and charged once.
- `radiusKm` (integer): Widen a city or postcode to a circle of this radius. Ignored for departments and regions.
- `sellerType` (string): Only professional sellers or only private sellers.
- `sortBy` (string): Order of results, which also decides which listings fit into your limit.
- `maxAgeDays` (integer): Keep listings posted within this many days. Older listings are not charged. With "Newest first" the run also stops as soon as the results get older, which is faster.
- `minRooms` (integer): Real estate only: at least this many rooms. Use with a real estate category.
- `maxRooms` (integer): Real estate only: at most this many rooms. Use with a real estate category.
- `minSurface` (integer): Real estate only: at least this living area. Use with a real estate category.
- `maxSurface` (integer): Real estate only: at most this living area. Use with a real estate category.
- `adType` (string): Offers are things for sale or rent. Wanted listings are people looking for something.
- `titleOnly` (boolean): Match the keyword in the listing title, not in the description.
- `urgentOnly` (boolean): Only listings the seller marked as urgent.
- `freeOnly` (boolean): Only listings given away for free ("Dons"). Cannot be combined with a price limit.
- `shippableOnly` (boolean): Only listings that offer delivery.
- `excludeTerms` (array): Drop listings whose title contains any of these words, ignoring case and accents (e.g. "pièces", "HS"). Dropped listings are not charged.
- `includeSellerStats` (boolean): Add each seller's registration date, number of ads, reply rate, badges and rating. Charged once per seller per run. Never includes private sellers' names or phone numbers.
- `onlyNew` (boolean): Remembers what each search returned and saves (and charges) only listings that appeared since the last run. Use it with a schedule and the newest sort to monitor a search. With another sort it means any listing you have not received yet.

## Step by step on Apify

1. Open the Input tab. Keep `vélo électrique` in Search keyword or type your own (box 1 in the picture).
2. Keep Max listings per search at 20 for a first test (box 2). This is the value the form suggests. If you leave the field out in the API, the limit is 100.
3. Click Start.
4. Open the Listings table in the Output tab. Check Title and Price (€) (box 4 in the picture).

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Track prices of one product in France | `query`, `category`, `maxItems` | Listing | `price`, `oldPrice`, `postedAt`, `city` | Export to a sheet on a schedule |
| Spot resale deals below your price | `query`, `maxPrice`, `sortBy`, `excludeTerms` | Listing | `title`, `price`, `condition`, `url` | Send a summary to Slack |
| Monitor new listings for one search | `searchUrls`, `onlyNew`, `stateName` | New listing | `listingId`, `title`, `price`, `url` | Schedule and webhook |
| Compare professional sellers | `category`, `sellerType`, `includeSellerStats` | Listing with seller details | `sellerName`, `sellerSiren`, `price`, `sellerStats` | Export to CSV |
| Study real estate or car prices in one area | `category`, `location`, `minRooms`, `minSurface` or a search link | Listing | `price`, `attributes`, `zipcode`, `department` | Export to your analysis tool |

## Tips

- One search shows at most 3,500 listings. Search without a place to go deeper.
- A keyword also matches the description. Use titleOnly or a category.
- Turn on onlyNew, add a stateName and set a schedule to get only new listings.

## Limits



- One search shows at most 3,500 listings. This is a limit of the site. A search with no place and a `maxItems` above 3,500 is split by department to go deeper. A search with a place stops at 3,500 and says so.
- The maximum is 20,000 listings per search, 21 keyword searches and 20 search links per run, and 100 listing links per run.
- Time. On our runs, 500 listings took about 1 minute, 3,500 listings took about 3 to 5 minutes and 20,000 listings took 14 to 28 minutes. Listing links are slower: 100 links took about 7 to 14 minutes. A run can take longer when the site slows down requests. The default run timeout is 60 minutes, and a run works for at most 60 minutes even with a higher timeout. Start several deep searches as separate runs. A run that reaches the time limit keeps its rows and says so.
- Monitoring memory. `onlyNew` remembers the last 50,000 listings for each search and the newest date it reached. If more new listings appear than `maxItems`, the rest arrive with the next run. A listing the source indexes more than 2 hours late, or that sits behind a full page of listings you already got, counts as old. With narrow filters on a very busy search, a run can stop after 1,000 listings with no match and end as partial. New matches above that point are saved, but a match further down may not arrive.
- Filter stop. If none of the last 1,000 listings pass your filters, the search stops and says so. This protects you from a long scan with no results.
- Newest first follows the date of the last republish. Paid or republished listings can have an older `postedAt`.
- A keyword also matches the description. A search for `vélo électrique` can return flats and cars that mention one. Use `titleOnly` or `category`.
- No private data. The Actor does not collect phone numbers or private sellers' names. Phone numbers and emails are masked in listing text. It does not read messages or accounts.

## Sample result

```json
{
  "listingId": "3302515620",
  "url": "https://www.leboncoin.fr/ad/velos/3302515620",
  "title": "Vélo électrique GIANT",
  "price": 80,
  "oldPrice": null,
  "currency": "EUR",
  "buyerFee": 1.99,
  "category": "Vélos",
  "categoryId": "55",
  "location": "Périgueux 24000",
  "city": "Périgueux",
  "zipcode": "24000",
  "department": "Dordogne",
  "region": "Aquitaine",
  "postedAt": "2026-11-05T00:54:35.000Z",
  "imageCount": 5,
  "attributes": {
    "bicycle_type": "Vélo électrique",
    "bicycle_brand": "Giant"
  },
  "condition": null,
  "adType": "offer",
  "status": "active",
  "sellerType": "private",
  "sellerName": null,
  "sellerStats": null,
  "searchQuery": "vélo électrique",
  "searchUrl": null
}
```

## Similar tools

- [Vinted Scraper - Listings, Prices & Brands in 25 Countries](https://cliqtomedia.com/actors/vinted-scraper/)
- [Facebook Marketplace Scraper - Prices & Price Drops, No Login](https://cliqtomedia.com/actors/facebook-marketplace/)
- [AutoScout24 Scraper - EU Car Listings & Prices, No login](https://cliqtomedia.com/actors/car-listings-scraper/)
- [Subito.it Scraper - Italy Classifieds & Prices, No Login](https://cliqtomedia.com/actors/subito-listings-scraper/)
- [Kleinanzeigen Scraper: Listings, Prices & Photos (No Login)](https://cliqtomedia.com/actors/kleinanzeigen-scraper/)
- [Avito Listings Scraper: Prices, Details and New Ads](https://cliqtomedia.com/actors/avito-scraper/)
