# Ceneo Reviews Scraper (`reviewscraper/ceneo-pl-product-reviews-scraper`) Actor

Scraper for ceneo.pl which allows you to download all reviews from any ceneo.pl product using ID of product or by using search with keywords

- **URL**: https://apify.com/reviewscraper/ceneo-pl-product-reviews-scraper.md
- **Developed by:** [Review Scraper](https://apify.com/reviewscraper) (community)
- **Categories:** E-commerce, Other
- **Stats:** 1 total users, 1 monthly users, 50.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 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.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Advanced Ceneo Reviews Scraper

A high-performance Playwright-based (headless Chromium) scraper for [Ceneo.pl](https://www.ceneo.pl/). Safely extracts comprehensive product reviews, ratings, timestamps, pros/cons, verified purchase transaction details, and key business metadata. It supports two operations: direct URL/ID entry or automated keyword-based discovery.

***

### ✨ Features

- 🔍 **Dual Extraction Modes**: Target specific products via ID/URL or discover items automatically using search phrases.
- 📄 **Smart Pagination**: Automatically crawls through all review pages seamlessly.
- 📅 **Date Filtering**: Limit extraction to reviews published after a specific date to optimize proxy data usage.
- ⚙️ **Flexible Sorting**: Supports 5 distinct sorting options (Newest, Oldest, Usefulness, Highest Rating, Lowest Rating).
- 🚀 **High Concurrency**: Utilizes multi-context parallel browser processing to scrape multiple products simultaneously.
- 🛡️ **Advanced Anti-Bot Bypass**: Smart asset blocking (CSS/Images), randomized human-like behavior, and proxy rotation.
- 📸 **Automated Debugging**: Captures UI screenshots into the Key-Value Store instantly upon detecting CAPTCHAs or blocks.

***

### 📥 Input Configuration

#### Scraping Mode

| Field | Type | Description | Default |
|------|-----|------|-----------|
| `mode` | `string` | `direct` – Input specific product IDs/URLs; `keyword` – Automatically search for products by phrase. | `direct` |

#### Mode: Direct IDs / URLs

| Field | Type | Description |
|------|-----|------|
| `direct_list` | `array` | A list of Ceneo product IDs (e.g., `179521260`) or full product URLs. One entry per line. |

**Example:**

````text
179521260
[https://www.ceneo.pl/179521260](https://www.ceneo.pl/179521260)
Mode: Keyword SearchFieldTypeDescriptionkeywords_listarrayA list of search phrases. The scraper will discover matching products and extract their reviews.Example:Plaintextsamsung s25
iphone 16 pro
Filters & LimitsFieldTypeDescriptionDefaultminDatestringOnly extract reviews published on or after this date (Format: YYYY-MM-DD). Leave blank for full history.""maxReviewsPerProductintegerMaximum number of reviews to extract from a single product page.100sortBystringReview display order: newest, oldest, usefulness, highest_rating, lowest_rating.newest💡 Pro Tip: Combining sortBy: newest with a minDate allows the scraper to exit gracefully early. The moment it hits a review older than your threshold, it stops loading further pages—saving your proxy budget.Advanced SettingsFieldTypeDescriptionDefaultmaxConcurrencyintegerMaximum number of parallel browser contexts. Recommended: 2–3 to optimize memory.2maxRequestsPerCrawlintegerGlobal HTTP request safety limit for the entire run.100proxyConfigurationobjectProxy server configuration. Required. Recommended: Apify Residential Proxy (PL).–📤 Output Data StructureDataset – Reviews (results)Each extracted review is saved as a structured JSON object inside the default dataset:JSON{
  "review_id": "8361234",
  "product_id": "179521260",
  "source_url": "[https://www.ceneo.pl/179521260;0160-1#tab=reviews](https://www.ceneo.pl/179521260;0160-1#tab=reviews)",
  "author": "jan****",
  "score": 5,
  "max_score": 5,
  "useful_votes": 12,
  "useless_votes": 1,
  "recommendation": "Polecam",
  "text": "Świetny produkt, bardzo dobra jakość wykonania...",
  "date_published": "2025-03-15 10:22:00",
  "date_usage": "2024-12-01 00:00:00",
  "pros": ["Dobra jakość", "Szybka dostawa"],
  "cons": ["Wysoka cena"],
  "purchase_details": {
    "shop": "x-kom.pl",
    "price": 3299.0
  }
}
FieldDescriptionreview_idUnique review identifier from Ceneo.product_idTarget Ceneo product ID.source_urlFull URL of the processed review page.authorAuthor's username (partially masked by Ceneo).scoreNumerical rating given by the user.max_scoreMaximum possible scale score (usually 5).useful_votesTotal upvotes marking the review as helpful.useless_votesTotal downvotes marking the review as unhelpful.recommendationUser sentiment status (e.g., "Polecam" / "Nie polecam").textCleaned text content of the review.date_publishedStandardized date and time when the review was published.date_usageDate indicating when the user purchased/used the item (if available).prosArray of advantages mentioned by the user.consArray of disadvantages mentioned by the user.purchase_details.shopVerified merchant/shop where the product was bought (Value-add feature!).purchase_details.priceExact transaction price of the item.Key-Value Store – Debug Screenshots (debugScreenshots)If the scraper encounters an unexpected UI state or a CAPTCHA challenge, it automatically saves a visual JPEG screenshot into the default Key-Value Store named as: BLOKADA_UI_{product_id}_str{page_number}.⚙️ Proxy RequirementsCeneo.pl enforces strict anti-bot mechanisms. A valid proxy configuration is mandatory.Highly Recommended: Use Apify Residential Proxies filtered to the country code: PL.If no proxy group is provided, the Actor will automatically attempt a fallback to available Polish residential layers.🔧 Performance & Tuning GuidelinesJob Size / ScenarioRecommended ConfigurationQuick Extraction (1–5 products)maxConcurrency: 2, maxRequestsPerCrawl: 50Medium Batch (10–20 products)maxConcurrency: 3, maxRequestsPerCrawl: 200Large Scale Data (50+ products)maxConcurrency: 3–5, maxRequestsPerCrawl: 500+⚠️ Note: Higher concurrency scales memory consumption and proxy data transfer. Avoid exceeding a value of 5 without prior isolated performance testing.🛠️ Need a Custom Scraper or Advanced Integration?Do you need data from a different website or a tailored enterprise workflow? I build custom, bulletproof web scrapers and Apify Actors optimized for speed and low proxy costs. Whether it is bypassing Cloudflare, dealing with complex AI agent integrations (x402/Skyfire), or syncing data directly into your CRM, Make.com, or custom APIs—I can deploy it for you.📩 Get in touch for custom data projects:Email: [Your Developer Email]Telegram / Discord: [Your Handle]

# Actor input Schema

## `mode` (type: `string`):

Select 'Direct' to scrape specific products by ID/URL, or 'Keyword' to discover products via search phrase.
## `direct_list` (type: `array`):

Enter Ceneo product IDs (e.g., 179521260) or full Ceneo URLs. One per line.
## `keywords_list` (type: `array`):

The search phrase used to automatically discover products and extract their reviews (Active only in 'keyword' mode).
## `minDate` (type: `string`):

Only extract reviews published after this date. Leave empty to pull the entire history.
## `maxReviewsPerProduct` (type: `integer`):

Limit of reviews to extract from a single product page.
## `sortBy` (type: `string`):

How Ceneo should sort the reviews. 'Newest' helps when using the date filter to stop scraping earlier.
## `maxConcurrency` (type: `integer`):

Maximum number of parallel browser contexts. Recommended: 2 or 3 to maintain healthy proxy usage and optimize memory.
## `maxRequestsPerCrawl` (type: `integer`):

Maximum total number of network requests performed globally to prevent over-usage.
## `proxyConfiguration` (type: `object`):

Select the proxy to use. Apify Residential Proxy is recommended for Ceneo to prevent blocking.

## Actor input object example

```json
{
  "mode": "direct",
  "direct_list": [
    "179521260"
  ],
  "keywords_list": [
    "samsung s25"
  ],
  "minDate": "2024-01-01",
  "maxReviewsPerProduct": 10,
  "sortBy": "newest",
  "maxConcurrency": 2,
  "maxRequestsPerCrawl": 200
}
````

# Actor output Schema

## `results` (type: `string`):

All collected product reviews from Ceneo.pl. Each item contains fields such as review\_id, product\_id, author, score, text, pros, cons, date\_published, and purchase\_details.

## `debugScreenshots` (type: `string`):

JPEG screenshots captured when the scraper detects a block or CAPTCHA page (keys prefixed with BLOKADA\_UI\_). Useful for diagnosing anti-bot issues.

# 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 = {
    "direct_list": [
        "179521260"
    ],
    "keywords_list": [
        "samsung s25"
    ],
    "minDate": "2024-01-01"
};

// Run the Actor and wait for it to finish
const run = await client.actor("reviewscraper/ceneo-pl-product-reviews-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 = {
    "direct_list": ["179521260"],
    "keywords_list": ["samsung s25"],
    "minDate": "2024-01-01",
}

# Run the Actor and wait for it to finish
run = client.actor("reviewscraper/ceneo-pl-product-reviews-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 '{
  "direct_list": [
    "179521260"
  ],
  "keywords_list": [
    "samsung s25"
  ],
  "minDate": "2024-01-01"
}' |
apify call reviewscraper/ceneo-pl-product-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=reviewscraper/ceneo-pl-product-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Jea2nXkgjuW6nDYET/builds/6G151nXU2eyNkCgcI/openapi.json
