Cdiscount Scraper avatar

Cdiscount Scraper

Pricing

Pay per event

Go to Apify Store
Cdiscount Scraper

Cdiscount Scraper

Pricing

Pay per event

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

A Cdiscount scraper that turns a French search term into structured product rows: current price, the reference price it was reduced from, the advertised discount, rating, review count and the product code. No login, no API key, no browser.

It works because it does not ask as a browser. Cdiscount serves a browser user-agent a 14 KB JavaScript shell with no products in it, which is why almost nothing on the Apify Store covers France's second-largest retailer.

What you get

  • Current price and reference price as separate numbers, plus the discount percentage Cdiscount advertises and an on_sale flag that is only true when the reference price is genuinely higher
  • Rating and review count split into numbers rather than left as "4,6 / 5 32 avis"
  • Product code parsed out of the URL, so rows are joinable across runs and against your own catalogue
  • Refurbished detection, because Cdiscount mixes reconditioned units into ordinary results and they are not comparable on price
  • The "Bon plan" deal badge as a boolean
  • Up to 940 products per run, 47 per page, with real pagination
  • Clean titles. The site's title node also contains the rating line; that is cut off rather than shipped as part of the product name
  • Charged per row, not per compute unit. A flat $0,002 start fee plus what you actually receive

Why Cdiscount is missing from most scraping stacks

Cdiscount is the second-largest e-commerce site in France and a genuine price anchor for the French market, yet the Apify Store has essentially no working actor for it. The reason is not that anyone stopped trying. Request cdiscount.com with a normal browser user-agent and you get HTTP 200 with a 14 KB page. It looks like success. It contains no products.

Ask for the same URL as a crawler and Cdiscount returns the fully server-rendered 940 KB page with all 47 product cards in the HTML, because it wants to be indexed and summarised. That is the whole trick, and it is why this actor needs no browser, no captcha solver and no third-party unblocking service.

The second thing most attempts get wrong is the price. Cdiscount renders its price block as a label, a reference price, a discount badge and the actual price, all in one container. Read as a single string it says "Prix le + bas sur 30j | 349,99 € | -14% | 299,99 €", and taking the first number gives you 30 for a 299,99 coffee machine. Each figure here is read from its own element.

Input

FieldTypeRequiredDefaultWhat it does
querystringyesiphoneWhat to search for. French terms work best
urlstringnoA cdiscount.com search or category URL to read instead. Takes precedence
limitintegerno47Products to return, 1 to 940
retriesintegerno4Retry attempts per page, each with a different crawler user-agent

Output

{
"position": 1,
"title": "KRUPS Machine à café broyeur à grain, Ecran tactile",
"url": "https://www.cdiscount.com/electromenager/petit-dejeuner-cafe/krups-.../f-11011-kru0010942216513.html",
"sku": "kru0010942216513",
"price": 299.99,
"was_price": 349.99,
"discount_percent": 14,
"on_sale": true,
"price_text": "299,99 €",
"currency": "EUR",
"rating": 4.7,
"reviews_count": 57,
"image": "https://www.cdiscount.com/pdt2/...",
"is_deal": true,
"is_refurbished": false,
"query": "machine a cafe"
}

Use cases

Price benchmarking in the French market. Cdiscount competes directly with Amazon.fr and Fnac, and it discounts far more aggressively. Because was_price and discount_percent come from the site's own reference figures, you can tell a genuine markdown from a permanently discounted anchor price, which is the distinction that decides whether you follow it down.

Finding where a category is on promotion. Run a category, filter to on_sale: true, sort by discount_percent. That is a promotional calendar for the French market that nobody publishes, and it takes one run per category per day to build.

Separating new from reconditioned. Cdiscount is one of the largest refurbished sellers in France and mixes those listings into ordinary search results. is_refurbished lets you split the two before computing an average, which otherwise drags your market price down by a third.

Feeding a French product catalogue. sku comes out of the URL and is stable, rating and reviews_count are numbers, and image is an absolute URL. That is enough to build a catalogue and diff it weekly without a normalization pass.

How it compares

this actorapify/e-commerce-scraping-tool
Per 1.000 products$4,00$6,00
Actor-start feenone$0,0001
Covers Cdiscountyesgeneric, needs configuring
Reference price and discount %yesno
Verified on_sale flagyesno
Rating and review countyesno
Refurbished flagyesno
Needs a browsernono

Honest about the other side: apify/e-commerce-scraping-tool has 575 monthly users and 49 reviews and will point at almost any shop. If you need breadth over depth, that is the better tool. This one knows one retailer's markup and its price-block quirks.

Pricing

One event. product costs $0,0040 per product returned, which is $4,00 per 1.000. All pricing is pay-per-event, so you only pay for products you actually receive. A $0,002 start fee covers the run itself; everything else is charged per row you receive. No per-compute-unit charges.

Limits and gotchas

  • Search results are French. Cdiscount serves the French market, prices are in euros, and English search terms return poor results. Use French terms.
  • 47 products per page, and deep pagination thins out as Cdiscount stops returning relevant matches. The run summary reports how many pages were actually read.
  • was_price only appears when Cdiscount shows a reference price. Many products, especially current-generation electronics, carry a single price. That is correct rather than missing.
  • Reconditioned units sit alongside new ones in the same result set. Check is_refurbished before comparing prices.
  • Marketplace sellers are not always named on the card. seller is empty for products sold by Cdiscount itself, which is most of them.
  • Class names on the site are generated hashes that change on every deploy. Every selector here anchors on the stable semantic suffix or on data-e2e, but a large redesign would still need a parser update.

FAQ

Why does my Cdiscount scraper return an empty page? Because you asked as a browser. Cdiscount serves browser user-agents a small JavaScript shell with no products in the HTML. This actor asks as a crawler and gets the fully rendered page.

Do I need a proxy or an unblocker? No third-party unblocking service and no browser. Requests egress from France so prices and availability match the French market.

Can I scrape a category rather than a search? Yes. Paste any cdiscount.com listing URL into url and it is read the same way, including any filters you already applied in the browser.

Is the discount percentage reliable? It is exactly what Cdiscount advertises. The on_sale flag is stricter: it is only true when the reference price is genuinely above the current price, so you can filter out badges that do not correspond to a real reduction.

How do I track price changes over time? Schedule the run and store sku, price and the timestamp. The product code is stable, so a diff between runs is an exact join.