Cdiscount Scraper - France Products, Prices & Offers avatar

Cdiscount Scraper - France Products, Prices & Offers

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Cdiscount Scraper - France Products, Prices & Offers

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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 keyword to find matching products.
  • Category browse: enter categoryUrl or categoryId.
  • Campaign browse: enter campaignUrl or campaignId for a promotion.
  • Reconditioned products: select reconditioned; a keyword is optional.
  • Product detail: enter productUrl, or sku with categoryId.
  • Optional offer rows: includeOffers is 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

FieldDescriptionExample
rowTypeType of rowproduct
idProduct identifier used by the scraper10703:m280cs1030500rb
skuCdiscount product codem280cs1030500rb
categoryIdProduct category identifier10703
titleProduct nameSSD 500 Go
urlProduct page addresshttps://www.cdiscount.com/f-10703-m280cs1030500rb.html
priceListed product price84.99
currencyCurrency for a reported priceEUR
brandBrand shown on the productPNY
gtinProduct barcode, when publishednull
ratingProduct rating4.5
reviewCountNumber of product reviews120
conditionNew, used or refurbishedrefurbished
offerCountReported offer count, not the delivered row count3
minOfferPriceLowest known offer price79.99
energyLabelEnergy label, when availablenull
shippingShipping details, when availablenull
companyNamePublished seller company nameExample Company
phonesPublished seller business phone entries[]
emailsPublished seller business email entries[]

Offer rows

Offer rows also carry product references such as sku, categoryId, url and currency where available.

FieldDescriptionExample
rowTypeType of rowoffer
idUnique offer row identifier10703:m280cs1030500rb:offer:12345
productIdIdentifier of the related product10703:m280cs1030500rb
offerIdSource offer identifier; may be absent12345
productTitleRelated product nameSSD 500 Go
sellerNameSeller named for this offerExample Store
sellerIdCdiscount seller identifier1234
priceThis offer's price79.99
availabilityAvailability stated by the sourceInStock
freeShippingWhether the offer states free shippingtrue

How to scrape Cdiscount

  1. Open Cdiscount Scraper in Apify Console. A free Apify account is enough to try it.
  2. Fill one target field, such as keyword, and leave mode on auto.
  3. Set maxResults to 5 for your first run.
  4. Click Start and wait for the run to finish.
  5. 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.

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

FieldWhat to enterDefault
modeauto or a mode listed aboveauto
keyword / queryOne search term; no keyword arrayEmpty; form sample ecouteurs
categoryUrl / categoryIdOne category address or IDEmpty
campaignUrl / campaignIdOne campaign address or IDEmpty
campaignSlugOptional campaign name from its addressEmpty
productUrlOne Cdiscount product addressEmpty
skuProduct code; also supply categoryIdEmpty
maxResultsTotal product and offer rows for the selected input, 1–50070; form sample 3
sortrelevance, priceAsc, priceDesc, rating or salesEmpty
brandBrand filterEmpty
minPrice / maxPricePrice bounds in eurosEmpty
conditionnew, used or refurbishedEmpty
shipToCountryFR, BE, ES, IT, DE, NL, LU, AT, IE or PTEmpty
browseCountryKeep FRFR
currencyKeep EUR; no currency conversionEUR
pageStarting listing page, 1–1001
maxPagesRetained page setting, 1–50; actual paging follows maxResults, up to 50 pages1
enrichDetailsAdd details to listing rows when availabletrue
enrichLimitMaximum listing products to try for extra details, 1–201
includeOffersAdd separately billed offer rowsfalse
fetchBffRequest additional offer and shipping details where availabletrue

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
}
  • maxItems and limit are accepted as aliases for maxResults.
  • 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_REPORT in 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 /. shipToCountry describes 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 planPrice per rowPrice 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
  • maxResults applies 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 (maxTotalChargeUsd in 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 ApifyClient
client = 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

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.

More e-commerce and marketplace scrapers from the same publisher:

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.