Leboncoin Real Time Data Scraper avatar

Leboncoin Real Time Data Scraper

Pricing

from $10.00 / 1,000 results

Go to Apify Store
Leboncoin Real Time Data Scraper

Leboncoin Real Time Data Scraper

Live Leboncoin classifieds intelligence: keyword search across 60+ French categories, full ad details, pro store inventory, seller profiles, price-history watchlists, and URL collection. Stream structured JSON in real time with webhooks, Slack alerts & MCP. Free 2-result trial.

Pricing

from $10.00 / 1,000 results

Rating

0.0

(0)

Developer

Emmanuel

Emmanuel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Leboncoin Real-Time Data

Live Leboncoin classifieds market intelligence — France's largest classifieds platform, streamed to your dataset in real time. Keyword search across 60+ categories (vehicles, real estate, fashion, electronics, home, jobs…), full ad details, pro store inventory tracking, seller profiles, and direct URL collection.

ⓘ Free plan notice: on Apify free plans this Actor returns a 2-result trial per run. Paid plans get full, uncapped output. See Free tier below.

🔁 Watchlist-ready: every run also exports a paste-able WATCHLIST ({"adId", "lastPrice"} entries built from every ad row) — feed it into the Price History feature on your next run to track price drops and delistings over time. See The watchlist loop.

Leboncoin is where France buys and sells — tens of millions of live ads across every category and every department. This Actor turns that live catalog into clean, structured rows for resellers, market watchers, lead-gen teams, and AI agents.


👥 Who is this for

  • Cross-listers & resale arbitrageurs sourcing French vintage fashion, sneakers, and collectibles to flip on Vinted, Depop, Grailed, eBay, or across borders.
  • Dealerships & pro sellers tracking competitor store inventory, prices, and new arrivals in their category and region.
  • Real-estate & rental watchers following listings by department with price and seller-type filters.
  • Lead-gen & outreach teams building verified business lists from professional sellers (name, SIREN, city, store profile).
  • Pricing teams & researchers modeling ask-price distributions across categories and regions.
  • AI agents & automation (Apify MCP, n8n, Make, custom bots) that need clean, structured French classifieds data.

🔁 The watchlist loop — price history with one-click setup

This is the feature that turns one-off scrapes into market monitoring:

  1. Run anything — search, store inventory, scrape-by-url, details… every ad row the Actor saves also lands in a ready-made WATCHLIST export: a clean JSON array of {"adId": "…", "lastPrice": 59} entries. No manual copying, no column mapping.
    • Platform runs: the default key-value store, key WATCHLIST (also linked from the run OUTPUT as watchlistCount).
    • Local runs: output/watchlist.json.
  2. Feed it back — paste the array into the Price History feature's watchlist input (or hand-pick entries).
  3. Schedule it — daily or hourly runs now emit one price_changed row per tracked ad: price drops (negative price_change), raises, and is_delisted: true when an ad sells or disappears.
  4. Get told only when it matters — with a webhook configured, watchlist runs are in alert mode: unchanged ads stay quiet, and only actual price moves and delistings are POSTed. Your Slack channel shows signals, not noise.
{
"ad_id": "3261759281",
"previous_price": 59,
"current_price": 49,
"price_change": -10,
"price_change_percent": -16.9,
"is_delisted": false
}

🎯 Use cases

  • Fresh-inventory deal alerts — "Newest first" search for carhartt, vintage levis 501, patagonia fleece; webhook fires per record for instant Slack/Discord pings.
  • Competitor store surveillance — watch any pro dealership's full live inventory; get alerts when new stock lands or prices move.
  • Regional price mapping — same keyword across departments with min/max price filters to map ask-price spreads.
  • Pro seller prospecting — pull store name, SIREN, city, and rating aggregates for outreach lists.
  • Watchlist price tracking — the one-click WATCHLIST export plus the Price History feature turn any run into a scheduled price-drop monitor with quiet-until-it-matters webhooks.
  • Cross-border arbitrage — compare French street prices against US/UK platforms before you buy or list.
  • Category analytics — total result counts (pro vs private) per query give instant supply-side signals.

✨ Features (checkbox UX — enable only what you need)

FeatureCheckboxWhat you get
Listing Search 🔍enableListingSearch (default on)Live keyword search with category, department, price, and seller-type filters, sorted by newest/price/relevance, up to 350 results per keyword. Streamed row-by-row in seconds.
Listing Details 📦enableListingDetailsFull record for specific ad URLs or IDs: complete description, all category attributes (brand, mileage, surface, rooms…), seller identity, location, favorites.
Store Inventory 🏬enableStoreInventoryThe full live inventory of any professional store or dealership — competitor stock and repricing surveillance.
Seller Profile 👤enableSellerProfileStorefront identity and stats: name, slogan, description, address, opening hours, website, Google-rating aggregates, SIREN, activity sector, live ad count.
Scrape By URL 🔗enableScrapeByUrlPaste any Leboncoin URL (search, ad, store, category) — page type is auto-detected.
Price History 💲enablePriceHistoryRecheck a saved watchlist of ads; one price_changed row per ad with the price delta, percent change, and a delisted flag for ads no longer live. Built for scheduled watchlist runs.

Enrichment — in-place, never filtered

"Enrich with full ad details" (searchFetchFullDetails) upgrades each search row in place: the row keeps featureType: "listing_search" and gets detailsFetched: true plus the full description, native category attributes, and favorites count.

  • No duplicate rows. One ad = one row, always.
  • No filtered-out partial items. Every discovered ad goes to the dataset, even if enrichment fails for that one ad (it's saved as a fast card).

🚀 Quick start

  1. Click Start — Listing Search is prefilled with 3 demo keywords (carhartt, vintage levis 501, patagonia fleece) and 10 results each, so your first run finishes in seconds.
  2. Optional: set a Webhook URL for real-time Slack/Discord alerts.
  3. Optional: turn on Enrich with full ad details for deeper rows (adds a little extra time per record to enrich full details).

Practical search examples

GoalKeywordsCategoryFilters
Vintage fashion sourcingvintage levis 501, carharttVêtements—
Sneaker dealsjordan 1, new balance 550ChaussuresMax price 100
Bike flippingvelo route, vtt electriqueVélosSort: Newest first
Regional auto pricingrenault clioVoituresDepartment 75 / 69
Pro-only supplyany keywordanySeller type: Professional only

French keywords return the deepest inventory — Leboncoin is a French-first marketplace.


⚙️ Input reference

FieldTypeDefaultNotes
enableListingSearchbooleantrueMaster switch for keyword search.
searchKeywordsstringList3 demo keywordsOne or more terms. Required when search is on.
searchMaxResultsinteger10Per keyword, 1–350.
searchCategoryIdselect(any)One Leboncoin category ID (e.g. 2 Voitures, 15 Vêtements, 10 Locations, 39 Vélos).
searchSortselectdaterelevance, date (newest), price_asc, price_desc.
searchMinPrice / searchMaxPriceinteger—Price window in EUR.
searchDepartmentCodestring—French department code: 75 Paris, 69 Rhône, 33 Gironde, 13 Bouches-du-Rhône…
searchOwnerTypeselect(all)private or pro.
searchFetchFullDetailsbooleanfalseEnrich each search row in place (adds a little extra time per record).

📦 Listing Details

FieldTypeNotes
enableListingDetailsbooleanMaster switch.
listingUrlsstringListFull ad URLs (https://www.leboncoin.fr/ad/...).
listingIdsstringListNumeric ad IDs (e.g. 3261759281).

🏬 Store Inventory / 👤 Seller Profile

FieldTypeDefaultNotes
enableStoreInventory / enableSellerProfilebooleanfalseFeature switches.
storeUrlsstringList—Store URLs (https://www.leboncoin.fr/boutique/...) or numeric store IDs. Shared by both features.
storeMaxListingsinteger30Max ads per store (1–500).

🔗 Scrape By URL

FieldTypeNotes
enableScrapeByUrlbooleanMaster switch.
scrapeUrlsstringListAny Leboncoin search, ad, store, or category URL. Non-Leboncoin URLs are rejected with a clear error.

💲 Price History

FieldTypeNotes
enablePriceHistorybooleanMaster switch.
watchlistjson listObjects {"adId": "3261759281", "lastPrice": 59} — paste the WATCHLIST export from any earlier run. With a baseline, rows carry price_change and price_change_percent.
watchlistIdsstringListNumeric ad IDs to recheck without a price baseline.

Every run also produces the export for you — see The watchlist loop.

🔔 Delivery

FieldTypeDefaultNotes
webhookUrlstring—Every row is POSTed here as well as saved to the dataset. Slack, Discord, Zapier, Make, n8n, or your own bot.
webhookFormatselectjsonjson = full record object; slack = Slack-friendly message.

🌐 Connection

Residential proxies are recommended and pre-configured. Configurable via the standard Apify proxy editor.


📤 Output reference

One dataset row per ad or seller. Filter by featureType:

listing_search · listing_details · store_inventory · seller_profile · scrape_by_url · price_changed

Core fields

FieldTypeDescription
featureTypestringWhich feature produced the row.
scrapedAtISO dateWhen the row was written.
url / ad_urlstringLeboncoin ad or source URL.
ad_idstringNative numeric ad ID (for dedupe & re-checks).
title / descriptionstringSeller-written copy.
main_image_url, additional_image_urls, image_countstring/array/numberImage gallery.
statusstringLive ad status (e.g. active).
current_price / currencynumber/stringAsking price in EUR.
category_id / category_namestringLeboncoin category (e.g. Voitures).
ad_typestringoffer or request.
first_publication_date / index_datestringPublish and refresh timestamps.
is_newly_listedbooleantrue when published in the last 24h.
location_city / location_zipcode / location_department / location_department_code / location_regionstringFrench geography.
location_lat / location_lngnumberAd coordinates.
seller_name / seller_id / seller_store_id / seller_type / seller_sirenstringSeller identity; pro vs private; SIREN for companies.
seller_has_phonebooleanPhone contact available.
favorites_countnumberFavorites (on enriched/detail rows).
is_promoted / is_urgent / is_shippablebooleanSeller boost flags.
search_total / total_pro / total_private / shippable_totalnumberQuery-level supply counts (on search rows).
positionnumberRank within the page the ad was found on.
detailsFetchedbooleantrue when a search row was enriched in place.

Per-feature extras

  • listing_details (and enriched search rows): attributes — the native attribute map for the ad's category (brand, mileage, square, rooms, fuel, gearbox, regdate…), plus attribute_labels with French display labels ("Kilométrage": "55 400 km").
  • seller_profile: store_name, store_slogan, store_description, store_address, store_opening_hours, store_website, store_logo_url, store_rating, store_rating_count, store_active_since, store_activity_sector, store_ads_total.
  • scrape_by_url: pageType tells you which kind of Leboncoin page was processed (search, store, listing).
  • price_changed: previous_price, price_change (negative = drop), price_change_percent, is_delisted — the watchlist tracking row.

Dataset views

The Console dataset includes ready-made table views: Overview, Listing Search, Listing Details, Store Inventory, Seller Profiles, Scrape By URL, and Price History.


🔔 Webhook guide

Set webhookUrl and every saved record is also POSTed there, fire-and-forget (dataset writes never wait on webhook latency).

Watchlist runs are alert-mode. On Price History runs the webhook is smart: unchanged ads are saved to the dataset and the WATCHLIST export but are not POSTed — only price moves (price_change ≠ 0) and delistings hit your URL. Normal search/inventory runs always POST every row.

JSON format — the full record object, exactly as saved to the dataset. Great for Make, n8n, Zapier, or your own pricing bot:

{
"featureType": "listing_search",
"title": "Veste Carhartt Detroit vintage",
"current_price": 85,
"currency": "EUR",
"category_name": "Vêtements",
"location_city": "Lyon",
"seller_name": "vintage69",
"seller_type": "private",
"ad_url": "https://www.leboncoin.fr/ad/vetements/…",
"detailsFetched": false
}

Slack format — a compact message card:

:department_store: *Veste Carhartt Detroit vintage*
*Type:* listing_search • *Price:* EUR 85 • *Category:* Vêtements • *City:* Lyon • *Seller:* vintage69 (private)
<https://www.leboncoin.fr/ad/vetements/…|Open on Leboncoin>

Discord works out of the box: paste a Discord webhook URL and use the Slack format — Discord translates the payload.


🤖 MCP / AI agent usage

This Actor is MCP-compatible via the Apify MCP server. Point your agent at it and ask things like:

  • "What's the average asking price for a used Renault Clio on Leboncoin?"
  • "Find vintage Levi's 501 under €50 listed in the last 24 hours."
  • "Monitor this dealership's store inventory and alert me on Slack when anything new appears."
  • "How many pro vs private sellers are listing Patagonia fleece in France right now?"
  • "Recheck my watchlist and tell me which ads dropped more than 10% since last week."

The output contract (stable featureType + shared core fields) is designed for downstream union across the classifieds-data suite, so the same agent prompt works across marketplaces.


💰 Free tier & paid plans

  • Free Apify plans get a 2-result trial per run — enough to validate output shape and webhook delivery. When the cap hits, the run stops gracefully with an upgrade notice (never an error).
  • Paid plans get full, uncapped output for every enabled feature.
  • The OUTPUT object of every run includes a transparent paywall summary (detected, isPaying, limited, blocked, freeTierMaxItems).
  • Store owners can configure the cap via Console environment variables (FREE_TIER_MODE = limit|block, FREE_TIER_MAX_ITEMS).

This is disclosed in the Actor's input schema (Delivery section) and in this README's first screen.


❓ FAQ

How fresh is the data? Every run queries the live marketplace — ads reflect what's on the platform right now, including fresh listings, price changes, and seller boosts. For deal alerts, schedule runs every 5–15 minutes with "Newest first" sort.

Do I need proxies? Residential proxies are recommended and pre-configured for the platform. They deliver the most reliable runs at scale.

Why does my run stop at 2 results? You're on an Apify free plan — the 2-result trial is the free-tier cap. Upgrade to a paid plan for full output.

Is there a limit on results? Paid runs are limited only by your inputs: up to 350 results per keyword and 500 ads per store, across any number of keywords/stores. The 10,000-second platform timeout allows very large runs, and rows stream to the dataset as they're collected (memory stays light).

Can I track dealers instead of keywords? Yes — storeUrls powers Store Inventory and Seller Profile. Use the store URL (https://www.leboncoin.fr/boutique/...) or numeric store ID.

How does the price watchlist work? You don't have to build it: every run saves a WATCHLIST export (adId + lastPrice entries for every ad row). Feed it into Price History, schedule, and each run emits price_changed rows with the delta and percent change; ads that have sold or been removed come back flagged is_delisted instead of vanishing silently. With a webhook configured, only actual changes alert you — unchanged ads stay quiet.

Will my webhook get spammed on daily watchlist runs? No. Alert mode POSTs only price changes and delistings; an unchanged ad is saved silently. Search/inventory runs (without Price History) always POST every row.

Does Leboncoin show sold ads? Marketplace ads are removed when sold, so the live catalog reflects what's actually available — that's what makes "Newest first" monitoring valuable.

Which department codes work? All French departments: 75 Paris, 13 Bouches-du-Rhône, 69 Rhône, 31 Haute-Garonne, 33 Gironde, 59 Nord… Leave empty for all of France.


🧾 Notes

  • Run OUTPUT includes totalPushed, spendingLimitReached, the paywall summary, and watchlistCount.
  • Platform runs save the watchlist export to the key-value store under WATCHLIST; local runs write output/watchlist.json.
  • Local development: copy .env.example → .env, local.input.example.json → local.input.json, then npm run start:local.
  • Respect Leboncoin's Terms of Service and applicable data-protection law when using marketplace data.