Cdiscount Scraper - France Products, Prices & Offers
Pricing
from $2.20 / 1,000 results
Cdiscount Scraper - France Products, Prices & Offers
Collect products from Cdiscount in France by keyword, category, campaign or product URL. Get prices, ratings, sellers and optional offer rows. Pay per delivered row plus a start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Cdiscount Scraper
Collect products and marketplace offers from Cdiscount's French catalog as rows you can export for price comparisons and catalog research.
- Search by keyword or browse categories, campaigns and refurbished products.
- Get product identifiers, prices in euros, ratings and seller details where available.
- Add separate offer rows for seller comparisons.
- Export to spreadsheets or read results through the Apify API.
- Pay only for the rows you receive: $3.00 per 1,000 rows on the Free plan plus a small start fee.
What does Cdiscount Scraper do?
Cdiscount Scraper collects publicly visible shopping data from www.cdiscount.com. Each row describes one product or one offer. It uses the French catalog, not separate national stores.
- Keyword search: enter
keywordto find matching products. - Category browse: enter
categoryUrlorcategoryId. - Campaign browse: enter
campaignUrlorcampaignIdfor a promotion. - Reconditioned products: select
reconditioned; a keyword is optional. - Product detail: enter
productUrl, orskuwithcategoryId. - Optional offer rows:
includeOffersis off by default. Each added offer row is billed at the same price as a product row and uses the same row limit.
What data can you extract from Cdiscount?
Fields depend on what the page publishes and whether detail collection succeeds. Missing values can be empty or absent.
Product rows
| Field | Description | Example |
|---|---|---|
rowType | Type of row | product |
id | Product identifier used by the scraper | 10703:m280cs1030500rb |
sku | Cdiscount product code | m280cs1030500rb |
categoryId | Product category identifier | 10703 |
title | Product name | SSD 500 Go |
url | Product page address | https://www.cdiscount.com/f-10703-m280cs1030500rb.html |
price | Listed product price | 84.99 |
currency | Currency for a reported price | EUR |
brand | Brand shown on the product | PNY |
gtin | Product barcode, when published | null |
rating | Product rating | 4.5 |
reviewCount | Number of product reviews | 120 |
condition | New, used or refurbished | refurbished |
offerCount | Reported offer count, not the delivered row count | 3 |
minOfferPrice | Lowest known offer price | 79.99 |
energyLabel | Energy label, when available | null |
shipping | Shipping details, when available | null |
companyName | Published seller company name | Example Company |
phones | Published seller business phone entries | [] |
emails | Published seller business email entries | [] |
Offer rows
Offer rows also carry product references such as sku, categoryId, url and currency where available.
| Field | Description | Example |
|---|---|---|
rowType | Type of row | offer |
id | Unique offer row identifier | 10703:m280cs1030500rb:offer:12345 |
productId | Identifier of the related product | 10703:m280cs1030500rb |
offerId | Source offer identifier; may be absent | 12345 |
productTitle | Related product name | SSD 500 Go |
sellerName | Seller named for this offer | Example Store |
sellerId | Cdiscount seller identifier | 1234 |
price | This offer's price | 79.99 |
availability | Availability stated by the source | InStock |
freeShipping | Whether the offer states free shipping | true |
How to scrape Cdiscount
- Open Cdiscount Scraper in Apify Console. A free Apify account is enough to try it.
- Fill one target field, such as
keyword, and leavemodeonauto. - Set
maxResultsto5for your first run. - Click Start and wait for the run to finish.
- Download the dataset or read its rows through the API.
An empty input starts an example search for ecouteurs, limited to 3 rows. Normal start and row charges apply. Filling one target field selects the matching mode automatically. For conflicting targets, the priority is product URL, SKU, category URL, category ID, campaign URL, campaign ID, then keyword. Use one target per run to avoid ambiguity.
Keyword search
Enter a French search term in keyword, such as ecouteurs. query is the older name for the same input. Search results can be sorted with sort.
Category browse
Use a category URL containing /l-<id>.html or supply its categoryId. This collects product listings, not a list of categories.
Campaign browse
Paste a current Cdiscount promotion URL into campaignUrl, or enter campaignId. campaignSlug is optional. Expired campaigns may have no matching products.
Reconditioned products
Set mode to reconditioned. Add keyword to narrow the refurbished listings. With no keyword, this is a normal collection run, not the 3-row example run.
Product detail
Supply productUrl, or both sku and categoryId. Turn on includeOffers to receive separate offer rows; a small maxResults can leave out some offers.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | auto or a mode listed above | auto |
keyword / query | One search term; no keyword array | Empty; form sample ecouteurs |
categoryUrl / categoryId | One category address or ID | Empty |
campaignUrl / campaignId | One campaign address or ID | Empty |
campaignSlug | Optional campaign name from its address | Empty |
productUrl | One Cdiscount product address | Empty |
sku | Product code; also supply categoryId | Empty |
maxResults | Total product and offer rows for the selected input, 1–500 | 70; form sample 3 |
sort | relevance, priceAsc, priceDesc, rating or sales | Empty |
brand | Brand filter | Empty |
minPrice / maxPrice | Price bounds in euros | Empty |
condition | new, used or refurbished | Empty |
shipToCountry | FR, BE, ES, IT, DE, NL, LU, AT, IE or PT | Empty |
browseCountry | Keep FR | FR |
currency | Keep EUR; no currency conversion | EUR |
page | Starting listing page, 1–100 | 1 |
maxPages | Retained page setting, 1–50; actual paging follows maxResults, up to 50 pages | 1 |
enrichDetails | Add details to listing rows when available | true |
enrichLimit | Maximum listing products to try for extra details, 1–20 | 1 |
includeOffers | Add separately billed offer rows | false |
fetchBff | Request additional offer and shipping details where available | true |
Keyword search:
{"keyword": "ecouteurs","sort": "priceAsc","maxResults": 5}
Category browse:
{"categoryId": "14404","maxResults": 5}
Campaign browse: replace the illustrative campaign address with a current promotion.
{"campaignUrl": "https://www.cdiscount.com/b-123456-example.html","maxResults": 5}
Reconditioned products:
{"mode": "reconditioned","keyword": "iphone","maxResults": 5}
Product detail:
{"productUrl": "https://www.cdiscount.com/f-10703-m280cs1030500rb.html","includeOffers": true,"maxResults": 5}
maxItemsandlimitare accepted as aliases formaxResults.- Unknown fields do not fail input validation: close misspellings are corrected where possible; other fields are ignored with a note. Unsupported filter values are also ignored with a warning.
- Unusable targets stop the run before any rows are charged, with an error such as
INVALID_INPUT: productUrl — paste a cdiscount.com product page address. The start fee may still apply. INPUT_REPORTin the run's key-value store records filled, corrected, inferred and ignored fields. It is written before input validation can stop the run.- Target URLs can use Cdiscount subdomains or a site path starting with
/.shipToCountrydescribes a delivery destination; it does not change the catalog or guarantee shipping eligibility.
Output example
Illustrative product row; prices and availability are not current quotations:
{"rowType": "product","id": "10703:m280cs1030500rb","productId": "10703:m280cs1030500rb","sku": "m280cs1030500rb","categoryId": "10703","title": "PNY CS1030 SSD 500 Go","url": "https://www.cdiscount.com/f-10703-m280cs1030500rb.html","price": 84.99,"currency": "EUR","rating": 4.5,"reviewCount": 120,"browseCountry": "FR","mode": "keywordSearch"}
You can export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. Product rows do not contain an embedded offer list; use includeOffers for separate rows.
Why use this Cdiscount scraper?
- Pay per delivered row. Pages tried are not billed as rows.
- Keep available partial results. If collection stops or reaches its deadline and returns partial rows, the Actor delivers and bills those rows. A manual abort before delivery is not a guarantee of saved results.
- Understand input errors. Messages name the field and how to fix it.
- Preserve missing values. Missing prices, barcodes or contacts are not invented. A generated row identifier is not a source offer number.
- No proxy setup. You do not need to set up proxies or supply a Cdiscount account for public catalog collection.
How much does it cost to scrape Cdiscount?
The Actor uses pay-per-event pricing: $0.005 per start event, plus a charge for each delivered row. Platform usage is included in these prices. Start events are counted per GB of allocated memory, with a minimum of one. At the default 512 MB, a run start costs $0.005.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.003 | $3.00 |
| Starter | $0.003 | $3.00 |
| Scale | $0.0026 | $2.60 |
| Business | $0.0022 | $2.20 |
| Platinum | $0.002 | $2.00 |
| Diamond | $0.0016 | $1.60 |
maxResultsapplies to the one selected input: default 70, maximum 500. Larger requests are collected in parts of 70.- Product and offer rows count together. Five rows can therefore mean one product and four offers.
- The free Apify plan allows up to 200 rows per run and 10 runs of this Actor.
- Set Maximum cost per run in the run options (
maxTotalChargeUsdin the API) to cap the run's charges. The row limit does not override this spending limit.
Example: one keyword delivering 50 rows on the Free plan, with one start at 512 MB, costs 50 × $0.003 + $0.005 = $0.155.
What happens when the run timeout is too short
A short timeout can cause a run to pause rather than fail while collection continues. Its status can temporarily be ABORTED, with a message saying that it is queued and will resume automatically when results are ready. The same run then resumes, writes results to the same dataset and finishes as SUCCEEDED if collection succeeds. You do not need to start another run.
Previously delivered rows are skipped on resumption, so they are not delivered or charged twice. When skipping previously delivered rows, the status can say Resumed: delivering N rows. The pause limit is 3 times per run; keep the default timeout of 3600 seconds to reduce the chance of a pause.
The synchronous API endpoints, run-sync and run-sync-get-dataset-items, wait at most 300 seconds and can return an empty dataset while a run is paused. For longer requests, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this Actor to a client that supports remote MCP servers:
https://mcp.apify.com?tools=lentic_clockss/cdiscount-scraper
Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; the agent reads rows with get-dataset-items.
For clients without remote MCP support, run npx @apify/actors-mcp-server --tools lentic_clockss/cdiscount-scraper with APIFY_TOKEN set.
Example prompt: “Find 5 Cdiscount products matching ecouteurs and return their titles, prices and product URLs.”
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/cdiscount-scraper").call(run_input={"keyword": "ecouteurs", "maxResults": 5})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/cdiscount-scraper').call({keyword: 'ecouteurs', maxResults: 5});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Over HTTP, send the JSON input to POST https://api.apify.com/v2/acts/lentic_clockss~cdiscount-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use the Actor's Integrations tab for Google Sheets, Make, Zapier, n8n, Slack, Airtable or webhooks. Apify Schedules can start recurring runs.
En français
Cdiscount Scraper collecte les produits du catalogue français, leurs prix en euros, les évaluations et les informations disponibles sur les vendeurs. Saisissez un terme dans keyword, une catégorie dans categoryId ou une fiche dans productUrl. Le mode se choisit automatiquement. Pour les produits reconditionnés, sélectionnez reconditioned et ajoutez éventuellement un mot-clé. Commencez avec maxResults à 5. Les offres des vendeurs sont facultatives : activez includeOffers pour les obtenir sur des lignes séparées. Chaque ligne livrée est facturée, qu'elle décrive un produit ou une offre, en plus des frais de démarrage. Les champs absents de la page peuvent rester vides. Exportez ensuite les résultats en CSV, Excel ou JSON.
FAQ
Is it legal to scrape Cdiscount?
This Actor collects public data. You are responsible for complying with the site's terms and applicable data protection law. Processing personal data requires a lawful basis.
Why did my run end as ABORTED?
It may be temporarily paused for automatic resumption. Check the status message and the timeout section above. A manual abort or unrelated failure is not the same as this automatic pause.
How many results can I get?
Request 1–500 rows for one input. The free plan caps runs at 200 rows. Available matches, your spending limit and collection limits can reduce the delivered count.
Why are some fields empty?
Not every listing publishes every field. Detail collection defaults to one listing product; other rows may lack barcodes, seller contacts or shipping details. Increase enrichLimit or use a product URL when those details matter.
Is this an official Cdiscount API?
No. This is an unofficial scraper, not affiliated with Cdiscount. It does not place orders or access private accounts.
Can I scrape separate Belgian or Spanish catalogs?
No. browseCountry supports only FR. shipToCountry annotates a destination while retaining the French catalog.
Why are some energy labels empty?
The product may not have an energy label, or the page may not publish one. Its absence is not an energy-efficiency rating.
Can I submit several keywords or URLs at once?
No. Target fields are single values. Run separate inputs through your automation rather than sending an array or filling unrelated target fields together.
Limitations
- Only the French shopping catalog is covered; travel, mobile plans, insurance and seller administration are outside scope.
- Filters and sorting depend on the page type and what Cdiscount supports. Listing pages do not always apply every requested filter.
- Listing detail collection is limited by
enrichLimit; seller business contacts are not guaranteed. - Offer rows share the product row limit. A limited result is not a complete inventory of sellers or offers.
- Prices and availability describe collection time, not a checkout quote. No currency conversion is performed.
- This is a public-data scraper, not a purchasing service. Successful searches can return zero matching rows.
Related scrapers
More e-commerce and marketplace scrapers from the same publisher:
- Walmart Product Scraper
- Temu Product Scraper
- Allegro Scraper
- TikTok Shop Product Scraper
- Amazon Search, Category & Best Sellers Scraper
- Coupang Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used. Remove secrets before posting.