Cdiscount Scraper: Products, Marketplace Sellers & Reviews
Pricing
from $1.80 / 1,000 product results
Cdiscount Scraper: Products, Marketplace Sellers & Reviews
Scrape product data from Cdiscount.com by keyword, category, or URL. Apply filters and sorting, then enrich results with full product details, marketplace seller information, pricing, availability, specifications, ratings, and customer reviews.
Pricing
from $1.80 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
Share
Cdiscount Product Scraper
Extract products from Cdiscount.com, one of France's largest online marketplaces. Search by keyword and category with the site's own filters and sort, or pass your own product/category/search URLs. Every product includes marketplace seller identity, and detail enrichment adds the full description, characteristics, variants, and customer reviews.
What you get
Each product includes:
- Identity: product id, offer id, name, brand, EAN, URL, category path, breadcrumb (detail)
- Price: current price (EUR), was-price, discount %/amount, promo label
- Availability: in-stock flag, condition (new/used/refurbished)
- Media: preview image and the full image gallery
- Variants: colour/size/capacity combinations, when the product has any
- Marketplace seller: seller id, name, rating, number of ratings, sales count — Cdiscount is a marketplace, so most listings are sold by a third-party seller, not Cdiscount itself
- Reviews (detail enrichment): overall rating, review count, a per-criterion rating breakdown, and every individual review (author, date, rating, title, body)
- Detail enrichment (optional): full description and the complete characteristics table, flattened per category (phones, appliances, furniture, etc. each expose different attributes — every attribute the product page shows is included, not a fixed list)
- Resume and recurring updates: turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED products on every scheduled run, or resume one specific interrupted crawl with
resumeFromRunId
Input
| Field | What it does |
|---|---|
mode | search (keyword/category + filters) or url (your own URLs) |
searchWord | Keyword to search for (search mode) |
departmentId | Optional numeric category id to scope the search (search mode) |
filterIds | Optional raw facet filter ids, exactly as Cdiscount's own filter sidebar uses them (search mode, advanced) |
sortBy | Relevance, best sellers, price low→high, price high→low, or customer rating |
urls | Product, category, or search URLs (URL mode). Category/search URLs are forward-paginated |
fetchDetails | Add full description, characteristics, variants, seller detail, and reviews per product |
maxItems | Maximum number of products to return |
maxPages | Maximum number of result pages to read per search/URL. Leave empty for no page limit |
resumeFromRunId | Previous run ID or dataset ID to continue ONE interrupted crawl without re-returning/re-charging products it already collected. See "Resume and recurring updates" below. |
incrementalMode | Recurring monitoring of the same search/URL set: returns only NEW/UPDATED/REAPPEARED products against a remembered baseline. Default false. See "Resume and recurring updates" below. |
stateKey | Incremental mode only. Name a monitoring campaign, or deliberately share state across differently-configured runs. Leave empty to derive one automatically. |
emitUnchanged | Incremental mode only. Also return UNCHANGED products. Off by default — returns and bills rows you already have. |
emitExpired | Incremental mode only. Also return EXPIRED products once a run fully scans every tracked search/URL. Off by default — returns and bills extra synthetic rows. |
mcpConnectors | Optionally forward results to Notion, Linear, Airtable, or Apify via MCP |
notionParentPageUrl | URL or id of the Notion page under which item pages are created (Notion connector only) |
maxNotifyListings | Cap on items written to each MCP connector per run. Does not affect the dataset |
Discovering filter ids
Run once with maxItems: 1 on your category of interest, then inspect the run's dataset/log — the actor's search response includes the site's own facet list (brand, price bands, condition, seller, colour, etc.) with the exact id string each one expects. Pass any of those ids in filterIds to narrow subsequent runs.
Example input
{"mode": "search","searchWord": "telephone","departmentId": "10","sortBy": "priceAsc","fetchDetails": true,"maxItems": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "FR"}}
{"mode": "url","urls": ["https://www.cdiscount.com/telephonie/telephone-mobile/l-14404.html"],"fetchDetails": true,"maxItems": 30}
Recurring monitoring of the same search, only what changed:
{"mode": "search","searchWord": "telephone","departmentId": "10","incrementalMode": true,"maxItems": 50}
For large or sustained runs, use a France-based proxy for best reliability.
Resume and recurring updates
Two different things, both under the same input section:
resumeFromRunIdcontinues ONE specific interrupted crawl. Paste a previous run ID or dataset ID and this run skips every product that run already collected, picking up where it left off — useful after a run was stopped early or hit an error partway through a large pull.incrementalModeis for running the SAME search or URL set again and again (daily, weekly, on a schedule) and getting only what changed. It remembers the previous run's products in a dedicated key-value store, keyed automatically from the mode, search/URL and filter settings (searchWord,departmentId,filterIds,sortBy,urls,fetchDetails) — or your ownstateKeyif you want to name or deliberately share a campaign — so two differently-configured runs never mix their baselines. Every product is classified aschangeType:NEW(first time seen),UPDATED(a comparable field changed — seechangedFields),REAPPEARED(was gone, is back), or, withemitExpiredon and only once a run has fully scanned every tracked search/URL,EXPIRED(was tracked, no longer found).UNCHANGEDproducts are tracked but not returned unlessemitUnchangedis on — both extra-emission toggles are off by default because they return, and bill, rows you already have.incrementalModedefaults tofalse— a normal run's behavior and output shape are unchanged until you opt in. Combining it withresumeFromRunIdbootstraps a brand-new monitoring campaign from that resumed crawl's results; if a baseline already exists for the derived (or given) state key, the run fails fast rather than silently mixing the two.
Output
Results are written to the default dataset, with four ready-made views: Overview, Full detail, Marketplace sellers, and Reviews.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use via Model Context Protocol (MCP) connectors — Notion, Linear, Airtable, or Apify. Authorize a connector under Apify → Settings → API & Integrations, then select it in the input. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. This never changes the dataset output.
Pricing
Pay-per-event: a per-result charge for every product returned, plus an optional per-product surcharge only when fetchDetails is enabled.