# Cdiscount Listings Scraper (`kawsar/cdiscount-listings-scraper`) Actor

Cdiscount scraper that pulls product names, prices, discounts, ratings, and stock status from any category page, so you can track prices and research competitors on the French marketplace without writing code.

- **URL**: https://apify.com/kawsar/cdiscount-listings-scraper.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Cdiscount Listings Scraper

Cdiscount Listings Scraper extracts product data from any Cdiscount category or listing page. Paste one or more listing URLs and get back structured data for every product on the page: name, price, old price, discount percentage, rating, review count, image, availability, and a direct product link. It follows pagination too, so one run can cover hundreds of products from a single category.

Cdiscount is one of the biggest French e-commerce marketplaces, and its category pages are dense with pricing signals: strikethrough prices, discount badges, review counts, stock status. This scraper reads all of it into a dataset you can export or plug into your own tools.

### Use cases

- **Price monitoring**: Track prices and discounts across a category and get notified when they change.
- **Competitor research**: See what sellers rank at the top of a category, how they price, and how customers rate them.
- **Market analysis**: Measure category size, price ranges, and rating distributions before launching a product in France.
- **SEO and content**: Collect product names, categories, and review counts to build comparison pages or buying guides.
- **Dropshipping and sourcing**: Find well-rated products with active price drops worth reselling.

### Input

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `listingUrls` | array | required | One or more Cdiscount category or listing page URLs. |
| `maxItems` | integer | 40 | Maximum number of products to save for each listing URL. The scraper follows pagination automatically until this limit is reached. Capped at 1000. |
| `requestTimeoutSecs` | integer | 30 | Per-request timeout in seconds. |

#### Example input

```json
{
    "listingUrls": [
        "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html"
    ],
    "maxItems": 100
}
````

### Output

The actor stores results in a dataset. Each product looks like this:

```json
{
    "productName": "PC portable Gamer LENOVO Legion 5 15IRX10 | Sans Windows - 15,3\" 165 Hz IPS - Core i7-13650HX - RTX 5070 115W - 32 Go - 512 Go",
    "productUrl": "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portable-gamer-lenovo-legion-5-15irx10-sans-w/f-10709-83ly007hfr.html",
    "sku": "83ly007hfr",
    "imageUrl": "https://www.cdiscount.com/pdt2/h/f/r/9/300x300/83ly007hfr/rw/pc-portable-gamer-lenovo-legion-5-15irx10-sans-w.jpg",
    "price": 1299.99,
    "currency": "EUR",
    "oldPrice": 1479.99,
    "discountPercent": 12,
    "availability": "InStock",
    "ratingValue": 4.5,
    "reviewCount": 77,
    "deliveryInfo": "Livraison gratuite Livré par Cdiscount",
    "position": 1,
    "pageNumber": 1,
    "listingUrl": "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html",
    "categoryName": "Ordinateur Portable",
    "breadcrumbs": ["Informatique", "Ordinateur Portable"],
    "totalProductsInCategory": 15805,
    "scrapedAt": "2026-07-07T10:46:45.899053+00:00",
    "error": null
}
```

| Field | Type | Description |
|-------|------|-------------|
| `productName` | string | Full product name as shown on the listing page. |
| `productUrl` | string | Direct link to the product detail page. |
| `sku` | string | Cdiscount product SKU identifier. |
| `imageUrl` | string | Main product image URL. |
| `price` | number | Current price in EUR. |
| `currency` | string | Price currency code. |
| `oldPrice` | number | Previous price when a discount is active, otherwise null. |
| `discountPercent` | integer | Discount percentage when a price drop is shown. |
| `availability` | string | Stock status, for example `InStock`. |
| `ratingValue` | number | Average customer rating out of 5. |
| `reviewCount` | integer | Number of customer reviews. |
| `deliveryInfo` | string | Delivery or fulfillment note shown on the listing card. |
| `position` | integer | Position of the product on its results page. |
| `pageNumber` | integer | Results page the product was found on. |
| `listingUrl` | string | The listing URL this product came from. |
| `categoryName` | string | Category name of the listing page. |
| `breadcrumbs` | array | Category breadcrumb path. |
| `totalProductsInCategory` | integer | Total product count the category reports. |
| `scrapedAt` | string | UTC timestamp of the scrape. |
| `error` | string | Error message if a page failed, otherwise null. |

### How it works

1. You provide one or more Cdiscount listing or category URLs.
2. The actor loads each page through built-in bypass infrastructure, so you do not need to configure anything.
3. It reads the structured product data embedded in the page and enriches it with details from the visible product cards, such as old prices and delivery notes.
4. It keeps following the category pagination, page after page, until `maxItems` products are collected for that URL, and deduplicates products by SKU along the way.
5. Results are saved to the dataset, ready to export as JSON, CSV, or Excel.

### Tips

- Category URLs look like `https://www.cdiscount.com/<category-path>/l-<id>.html`. You can copy them straight from your browser address bar.
- A page carries around 40 to 50 products, and pagination is handled for you. Want the first five pages of a category? Just set `maxItems` to 250 and the scraper walks through the pages until it gets there.
- Failed pages do not stop the run. The actor logs the error, stores an error record, and moves on to the next URL.

### Integrations

Connect Cdiscount Listings Scraper with other apps and services using [Apify integrations](https://apify.com/integrations). You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and many more. You can also use [webhooks](https://docs.apify.com/integrations/webhooks) to trigger actions whenever results are available.

# Actor input Schema

## `listingUrls` (type: `array`):

One or more Cdiscount category or listing page URLs, for example https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html. One URL per line.

## `maxItems` (type: `integer`):

Maximum number of products to save for each listing URL. The scraper follows pagination automatically until this limit is reached. Each page holds around 40 to 50 products.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "listingUrls": [
    "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html",
    "https://www.cdiscount.com/telephonie/telephone-mobile/l-14404.html"
  ],
  "maxItems": 40,
  "requestTimeoutSecs": 30
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "listingUrls": [
        "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/cdiscount-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "listingUrls": ["https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html"] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/cdiscount-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "listingUrls": [
    "https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html"
  ]
}' |
apify call kawsar/cdiscount-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/cdiscount-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cdiscount Listings Scraper",
        "description": "Cdiscount scraper that pulls product names, prices, discounts, ratings, and stock status from any category page, so you can track prices and research competitors on the French marketplace without writing code.",
        "version": "0.0",
        "x-build-id": "nuSuthxxqv5gvL6av"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~cdiscount-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-cdiscount-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kawsar~cdiscount-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-cdiscount-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kawsar~cdiscount-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-cdiscount-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "listingUrls"
                ],
                "properties": {
                    "listingUrls": {
                        "title": "Cdiscount listing URLs",
                        "type": "array",
                        "description": "One or more Cdiscount category or listing page URLs, for example https://www.cdiscount.com/informatique/ordinateurs-pc-portables/pc-portables/l-1070992.html. One URL per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items per URL",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of products to save for each listing URL. The scraper follows pagination automatically until this limit is reached. Each page holds around 40 to 50 products.",
                        "default": 40
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
