Leboncoin FR $1π° URL | Filters | Deep Search Scraper
Pricing
from $0.80 / 1,000 results
Leboncoin FR $1π° URL | Filters | Deep Search Scraper
Pull public leboncoin.fr listings across cars, property, jobs, electronics, furniture, and 35+ categories. Returns 60β78 fields, including price, GPS, seller info, attributes, and images. Search by filters or URL with pagination and listing ID dedupe.
Pricing
from $0.80 / 1,000 results
Rating
5.0
(1)
Developer
Abot API
Maintained by CommunityActor stats
1
Bookmarked
9
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Leboncoin Scraper: Cars, Property, Jobs & 39 More Categories
Leboncoin Scraper turns leboncoin.fr classified listings into clean structured data. Search by filters or paste a Leboncoin search URL, and get 60 to 80 flat fields per listing: price, GPS coordinates, seller info, category attributes such as mileage, fuel type, year, rooms and surface area, plus the full image gallery. Optionally enrich every listing with the full description, seller ratings and a seller's other active ads. Export to JSON, CSV or Excel, or pull results straight into your app through the API.
Why This Scraper?
- Two ways to search. Build a search from filters (category, location, price, and more), or paste one or more Leboncoin search URLs and let the actor walk them forward.
- 60 to 80 flat fields per listing. Price, location down to GPS coordinates, full seller info, and every category-specific attribute the site returns (mileage, fuel, rooms, surface area, and more), not a hard-coded subset.
- Multi-location and multi-category in one run. Search several cities or paste several search URLs, and get a fair share of listings from each.
- Optional detail-page enrichment. Turn on a single input to also fetch the full description text and the complete image gallery for each listing.
- Optional seller enrichment. Pull a seller's star rating and written reviews, or their other active listings, useful for mapping professional sellers' catalogues.
- Per-search budget. Max listings is shared fairly across every location or URL in the run, so a multi-city search returns a sample from every city instead of exhausting the budget on the first one.
- Built for schedules. Turn on Incremental mode to get only new and changed listings on repeat runs of the same search, or use Resume to continue one interrupted crawl.
Use Cases
- Car and vehicle market research: track prices, mileage and listing volume for specific makes, models or regions.
- Property market monitoring: collect listings by city, price band, surface area and room count for rental or sale market analysis.
- Lead generation for pro sellers: filter by seller type and category to find active listings worth reaching out about.
- Price tracking and alerts: run the same search on a schedule with Incremental mode to catch new listings and price changes as they happen.
- Marketplace and competitor analysis: map a professional seller's full catalogue with the seller-other-listings enrichment.
Data You Get
Sample shape: values are illustrative placeholders, not from a live listing.
| Field | Example |
|---|---|
id | "1234567890" |
list_id | 1234567890 |
subject | "Sample Listing Title" |
body | "Full seller description text appears here when fetchDetails=true." |
url | "https://www.leboncoin.fr/ad/voitures/1234567890" |
category_name | "Voitures" |
ad_type | "offer" |
status | "active" |
price | 0 |
publication_date | "2026-01-01 00:00:00" |
expiration_date | "2026-04-01 00:00:00" |
has_phone | true |
is_boosted | false |
city | "Paris" |
zipcode | "75001" |
department | "Paris" |
latitude / longitude | 48.8566 / 2.3522 |
owner_type | "private" |
owner_name | "Sample Seller" |
image_count | 5 |
image_urls | ["https://img.leboncoin.fr/...jpg", "..."] |
attr_year | "2020" |
attr_mileage | "50000" |
attr_fuel | "Diesel" |
attr_rooms | "3 pièces" |
Category attributes (attr_*) vary by category: cars carry mileage, fuel and gearbox, property carries rooms, surface area and energy rating. The full set the site returns for a listing is preserved in a raw_attributes array (each entry has key, value and value_label) alongside the flattened attr_* fields. When fetchSellerReviews or fetchSellerOtherListings is on, each listing also carries seller_rating_avg, seller_review_count and a seller_reviews array, or seller_other_listings_count and a seller_other_listings array of that seller's other active ads, with empty results for sellers with no reviews or no other listings.
How to Use
- Pick a mode: Search by filters, or Direct URLs (paste one or more Leboncoin search URLs).
- In search mode, set a category, locations and any value filters (price, rooms, mileage, fuel, seller type).
- Switch on detail-page or seller enrichment if you need the full description, image gallery, or seller ratings.
- Set Max total listings to control run size and cost, then click Start.
Search cars in Paris under 15,000 EUR:
{"mode": "search","category": "voitures","locations": ["Paris"],"maxPrice": 15000,"maxMileage": 50000,"fuel": "diesel","sortBy": "price_asc","maxListings": 100}
Search across multiple cities, professional sellers only:
{"mode": "search","category": "ventes_immobilieres","locations": ["Paris", "Lyon", "Marseille", "Bordeaux"],"minSquare": 40,"maxSquare": 120,"rooms": ["2", "3", "4"],"ownerType": "pro","maxListings": 200}
Paste Leboncoin search URLs, with detail enrichment:
{"mode": "url","urls": ["https://www.leboncoin.fr/recherche?category=2&locations=Paris","https://www.leboncoin.fr/recherche?category=9&locations=Lyon"],"fetchDetails": true,"maxListings": 200}
Free-text query with seller enrichment:
{"mode": "search","text": "iphone 14 pro","category": "telephonie","locations": ["Paris", "Lyon"],"fetchSellerReviews": true,"maxListings": 50}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/leboncoin-fr-scraper").call(run_input={"mode": "search", "category": "voitures", "locations": ["Paris"], "maxListings": 50})for listing in client.dataset(run["defaultDatasetId"]).iterate_items():print(listing["subject"], listing["price"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/leboncoin-fr-scraper').call({mode: 'search', category: 'voitures', locations: ['Paris'], maxListings: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run or dataset ID and this run skips listings already collected there, returning only the new ones. - Incremental mode (
incrementalMode) is for running the same search again and again, for example daily. The actor remembers the previous run of the same search itself, so you never paste a run ID. The first run returns everything asNEW. Later runs return onlyNEWandUPDATEDlistings by default (duplicates and unchanged listings are suppressed, never pushed, never billed).REAPPEAREDis produced only for a listing that was previously markedEXPIREDand then shows up again, so it only appears in monitoring campaigns that also useemitExpired. Turn onemitUnchangedoremitExpiredonly when you also want those rows returned and billed. State is kept separately per search/filter setup automatically; setstateKeyto name or deliberately share a monitoring campaign. EXPIREDrows (listings from a previous run no longer found) are produced only once a run has fully scanned the tracked search, not when Max listings capped it and not on a Resume run, and only withemitExpiredon.- A handful of fields (
view_count,favorite_count,index_date, and theseller_*fields) are excluded from change detection because they describe engagement or the seller rather than the listing itself; they are still returned in full on every row.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each listing, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify > Settings > Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | "search" | "search" builds the URL from filters, "url" takes raw Leboncoin search URLs. |
text | string | none | Free-text keyword query. Search mode only. |
category | string | "all" | Top-level category (cars, property, electronics, jobs, and more). Search mode only. |
locations | array | none (prefill: ["Paris"]) | City names, postcodes, or metropolitan department codes ("75" or "69_d"). Corsica and the overseas departments are not accepted as department codes, use a city name there. Search mode only. |
minSquare | integer | none | Minimum surface area in mΒ² (property categories). Search mode only. |
maxSquare | integer | none | Maximum surface area in mΒ² (property categories). Search mode only. |
minMileage | integer | none | Minimum mileage in km (vehicle categories). Search mode only. |
maxMileage | integer | none | Maximum mileage in km (vehicle categories). Search mode only. |
urls | array | none (prefill: one sample search URL) | Leboncoin search URLs to scrape. URL mode only, multi-URL supported. |
ownerType | string | "all" | Filter by seller type: "all", "private", "pro". Applies in both modes. |
minPrice | integer | none | Minimum price in EUR. Applies in both modes. |
maxPrice | integer | none | Maximum price in EUR. Applies in both modes. |
rooms | array | none | Number of rooms (property categories). Applies in both modes. |
fuel | string | "all" | "all", "petrol", "diesel", "hybrid", "electric", "gpl", "other". Applies in both modes; a ?fuel= segment inside a pasted URL is ignored, set this input instead. |
sortBy | string | "relevance" | "relevance", "date_desc", "date_asc", "price_asc", "price_desc". Applies in both modes; in URL mode it overrides the pasted URL's own sort. |
maxPages | integer | 200 | Max pages per search (about 100 listings per page). Actual page count is bounded by maxListings. |
maxListings | integer | 20 | Total listings cap across all searches. 0 = unlimited. |
fetchDetails | boolean | false | Visit each listing's detail page for the full description, image gallery and extra attributes. Adds about 1 second per listing. |
fetchSellerReviews | boolean | false | Fetch the seller's star rating and written reviews per listing. Adds about 0.5 seconds per item. |
fetchSellerOtherListings | boolean | false | Fetch the seller's other active ads per listing. Adds about 0.5 seconds per item. |
resumeFromRunId | string | none | Continue one specific previous run or dataset: listings already collected there are skipped. |
incrementalMode | boolean | false | Return only new and changed listings on repeat runs of the same search. |
stateKey | string | none | Name a monitoring campaign, or leave empty to derive one automatically from the search settings. |
emitUnchanged | boolean | false | Also return (and bill) listings unchanged since the last run. |
emitExpired | boolean | false | Also return (and bill) listings from a previous run no longer found, once a run has fully scanned the search. |
proxy | object | none (prefill: Apify Proxy, residential, country AT) | Connection settings. A residential connection is required. |
mcpConnectors | array | none | Optional: send a summary of each listing to apps you authorized under Integrations. |
notionParentPageUrl | string | none | Notion connector only: page under which listing pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live listing.
{"id": "1234567890","list_id": 1234567890,"subject": "Sample Listing Title","body": "Full seller description text appears here when fetchDetails=true.","url": "https://www.leboncoin.fr/ad/voitures/1234567890","category_id": "2","category_name": "Voitures","ad_type": "offer","status": "active","price": 0,"publication_date": "2026-01-01 00:00:00","has_phone": true,"is_boosted": false,"city": "Paris","zipcode": "75001","department": "Paris","region": "Ile-de-France","latitude": 48.8566,"longitude": 2.3522,"owner_type": "private","owner_name": "Sample Seller","image_count": 5,"image_urls": ["https://img.leboncoin.fr/api/v1/lbcpb1/images/00/00/00/000000.jpg?rule=ad-image"],"attr_year": "2020","attr_mileage": "50000","attr_fuel": "Diesel","raw_attributes": [],"seller_rating_avg": 4.8,"seller_review_count": 42,"seller_reviews": [{"rating": 5,"text": "Vendeur serieux, transaction rapide.","author_name": "Sample Buyer","date": "2026-03-15T12:00:00Z"}]}
Plan Requirement
Leboncoin.fr requires a residential connection. Without one, a run returns 0 listings. The prefilled proxy setting (Apify Proxy, residential, country AT) is recommended, and the actor automatically retries with a different connection when one is refused. Keep this setting when calling the actor via the API, since it has no schema default and is otherwise left unset. Upgrade your plan if you need more residential bandwidth.
FAQ
How much does it cost?
You pay per listing returned, with optional detail-page and seller enrichment adding a small amount of time per listing but no extra per-listing charge. The Pricing tab shows the current rates. Use Max total listings to cap the cost of any run.
Is it legal to scrape Leboncoin?
This actor collects only publicly available classifieds data. You are responsible for how you use it: follow Leboncoin's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Seller-supplied text, photos and contact details may be subject to third-party rights, handle personal data carefully.
Can I get only new or changed listings on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated listings, and unchanged ones are not billed. EXPIRED and REAPPEARED rows require also turning on emitExpired, and only appear once a run has fully scanned the tracked search.
Why did my run return 0 listings?
The most common cause is a non-residential or non-EU connection. Leboncoin's site rejects non-residential traffic outright, so keep the connection type set to residential. If the default country returns 0 items on your account, try a different EU country in the proxy settings.
Why did my run fail instead of returning an empty dataset?
If every connection attempt is refused during startup, the run stops with a clear message so "no listings match this search" is never confused with "the site could not be reached at all." Run it again in a few minutes. A search that genuinely has no matches still returns a normal empty result rather than failing.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
π Want more classifieds data?
Pair this actor with these related scrapers from the same team:
| π·οΈ Mudah.my Cars, Property, Jobs & Marketplace Scraper Scrape Mudah.my listings across every category: cars, motorcycles, property, mobiles... | π·οΈ Kijiji.ca Scraper Scrape Kijiji.ca listings across property, vehicles, jobs, electronics, furniture... |
| π·οΈ Subito.it Scraper Scrape Subito.it listings across cars, real estate, marketplace, jobs, and more. Search... | π Willhaben.at Scraper From $1/1K. Scrape Willhaben.at listings into clean JSON with 40+ structured fields... |
| π·οΈ Tutti.ch Scraper Scrape listings from tutti.ch across all 23 categories, including vehicles, property... | π Craigslist Scraper Scrape Craigslist postings in any of 700+ cities worldwide: price, title, posting text... |
π Browse all abotapi scrapers
π¬ Support
- π Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- π οΈ Need another site, extra fields or a private build? Email contact@abotapi.com.
- β Enjoying it? A quick review on the actor page helps other users find it.