# Allegro.cz Scraper - Products, Prices, Sellers (`reventadata/allegro-cz-scraper`) Actor

Scrape allegro.cz search results: title, price in CZK, seller, ratings, delivery text and product parameters. Filter by price, condition, delivery and Super Seller; sort by price. Export to JSON, CSV or Excel.

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

## Pricing

from $2.40 / 1,000 products

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Allegro.cz Scraper

> **Unofficial.** This Actor is not affiliated with, authorised by, endorsed by, or in any
> way officially connected to Allegro. "Allegro" is a trademark of its respective owner and is
> used here only to describe what this tool reads. It reads the same public search pages a
> browser does.

Allegro.cz Scraper turns an allegro.cz search into a table: product title, price in CZK, seller,
ratings, delivery text, product parameters and an offer link, for every search term you give it.

### What does it do?

For each search term it opens allegro.cz's own search (`/vyhledavani?string=...`), walks the result
pages and saves one row per distinct offer. Prices are read from the same data the page renders, so
the number in the row is the number on the card. It works for any category and any search term the
site understands, Czech or English.

### Why use it?

- **Price and seller on every row:** price as a number with its currency, plus the seller's login,
  shop page, Super Seller badge and positive-feedback percentage.
- **The site's own filters:** price range, new or used, free delivery, Super Seller and price sort
  are sent to allegro.cz itself, and the run stops with an error if the site did not apply one,
  instead of handing you unfiltered rows.
- **Fuzzy-search clean-up:** Allegro's search can return products that do not contain your term.
  "Title must contain" and "Title must not contain" remove them by title, ignoring case and accents.
- **Public data only:** seller logins, shop names and the ratings the site shows are in the rows;
  nothing from behind a login.

### How to use it

1. Put one or more search terms in `searchQueries`.
2. Set `maxItems` and, if you want, the price, condition, delivery, Super Seller and sort options.
3. Run the Actor and download the dataset as JSON, CSV, Excel or NDJSON.

#### Input

| Field | Type | Description |
|---|---|---|
| `searchQueries` | array | Search terms, one search each. Required. |
| `maxItems` | integer | Maximum products saved across all terms (default 100). |
| `minPrice`, `maxPrice` | integer | Price band in CZK, checked by the site and again on each row. |
| `condition` | string | `any`, `new` or `used`. |
| `freeDelivery` | boolean | Only offers on the site's free-delivery filter. |
| `superSellerOnly` | boolean | Only Super Seller offers. |
| `sortBy` | string | `relevance`, `price-asc` or `price-desc`. |
| `includeKeywords` | array | Title (or seller name) must contain every word. |
| `excludeKeywords` | array | Drop titles (or seller names) containing any word. |
| `includeSponsored` | boolean | Keep Allegro's paid "Sponzorované" placements (default on). |

#### Sample input

```json
{
    "searchQueries": ["iphone"],
    "maxItems": 20,
    "condition": "new",
    "excludeKeywords": ["kryt", "sklo", "pouzdro"]
}
```

#### Output

| Field | Type | Description |
|---|---|---|
| `id` | string | Allegro offer id. |
| `title` | string | Product title. |
| `url` | string | Offer page, `https://allegro.cz/nabidka/<id>`. |
| `price` | number | Price as a number. |
| `currency` | string | `CZK`. |
| `pricePerUnit` | string / null | Unit price text, when the card shows one. |
| `imageUrl` | string / null | Main thumbnail. |
| `sellerLogin`, `sellerId`, `sellerUrl` | string / null | The seller's public login, id and shop page. |
| `sellerSuperSeller` | boolean | Super Seller badge. |
| `sellerPositiveFeedbackPercent` | number / null | Positive feedback, percent. |
| `ratingAverage`, `ratingCount` | number / integer / null | Product rating, when it has reviews. |
| `popularityLabel` | string / null | Allegro's own "bought recently" text. |
| `deliveryLabel` | string / null | Delivery text on the card. |
| `parameters` | object | Product parameters on the card (colour, storage ...). |
| `productId`, `productOffersCount` | string / integer | The product the offer belongs to and how many offers it has. |
| `listingType` | string | `regular`, `promoted` or `sponsored`. |
| `matchedKeyword` | string | The search term that returned it. |
| `page` | integer | Result page it was read from. |
| `scrapedAt` | string | ISO 8601 timestamp. |

#### Sample output

One real row from a 1,000-row run on 2026-10-21 (run `6PuIZOXSkpFgihoiq`):

```json
{
    "id": "18231547644",
    "title": "Smartphone Apple iPhone 17 Pro 12 GB / 256 GB 5G stříbrný",
    "url": "https://allegro.cz/nabidka/18231547644",
    "price": 28487,
    "currency": "CZK",
    "pricePerUnit": null,
    "imageUrl": "https://a.allegroimg.com/s180/11294d/bdf8e79e430ca43ae2e3f0b123a4/Smartphone-Apple-iPhone-17-Pro-256-GB-stribrny",
    "sellerLogin": "smartSPOT",
    "sellerId": "102969755",
    "sellerUrl": "https://allegro.cz/uzivatel/smartSPOT",
    "sellerSuperSeller": true,
    "sellerPositiveFeedbackPercent": 97.7,
    "ratingAverage": 4.96,
    "ratingCount": 239,
    "popularityLabel": "293 lidí nedávno koupilo",
    "deliveryLabel": null,
    "parameters": {
        "Barva": [
            "stříbrná"
        ],
        "Úhlopříčka displeje": [
            "6.3\""
        ],
        "Interní paměť": [
            "256 GB"
        ],
        "Paměť RAM": [
            "12 GB"
        ]
    },
    "productId": "c4920379-0f9c-4cfb-b58b-172354f83bce",
    "productOffersCount": 25,
    "listingType": "regular",
    "matchedKeyword": "iphone",
    "page": 1,
    "scrapedAt": "2026-10-21T19:43:52.051007+00:00"
}
```

### How much does it cost to scrape allegro.cz?

Pay-per-event: **$0.0024 per result** saved to the dataset (**$2.40 per 1,000 results**), plus
**$0.00005** charged once when the run starts. No subscription. Duplicate offers, offers outside the
price band, titles that fail "Title must contain" / "Title must not contain" and (when turned off)
sponsored placements are dropped before the row is saved, so they are not charged.

### Good to know

- **Search ceiling:** allegro.cz serves at most 100 result pages per search (about 6,000 products
  for a broad term). A search with fewer results has fewer pages. For more than that, split the
  search with price bands.
- **Speed:** allegro.cz sits behind a bot-protection service, so every page is fetched through a
  commercial unblocking service. Pages are fetched three at a time. In the 1,000-row test run
  (17 pages) each page took 37 to 85 seconds and the run took 8 minutes. Give big runs a timeout of
  at least 15 minutes.
- **Fuzzy search:** a search term that matches nothing can still return unrelated products;
  use "Title must contain" when you need strict matches.
- **Sorting:** only relevance and price (both directions) are offered, the sorts whose direction
  was checked against the returned prices.
- **Sponsored rows:** these are paid placements; an offer found both sponsored and organic is saved once.
- **Czech marketplace only:** the Slovak and Polish Allegro sites are not covered.

### Privacy & Compliance

This Actor reads only publicly accessible pages and returns the public data they show. It sends no login.

# Actor input Schema

## `searchQueries` (type: `array`):

Search terms to look up on allegro.cz, one search per term. Any category, any language the site understands (Czech or English product names work).

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

Maximum number of products to save across all search terms. A page holds about 60 distinct products and the site serves at most 100 pages per search.

## `minPrice` (type: `integer`):

Only products priced at or above this amount in Czech koruna. Leave empty for no lower limit. 0 is a real value.

## `maxPrice` (type: `integer`):

Only products priced at or below this amount in Czech koruna. Leave empty for no upper limit.

## `condition` (type: `string`):

Filter by the condition the site records for the offer: new (nové) or used (použité). 'any' sends no condition filter.

## `freeDelivery` (type: `boolean`):

Only offers the site marks as delivered free of charge (its own 'doprava zdarma' filter).

## `superSellerOnly` (type: `boolean`):

Only offers from sellers carrying Allegro's Super Seller badge (its own 'super prodejce' filter).

## `sortBy` (type: `string`):

Order of the results: the site's relevance order, price from low to high, or price from high to low.

## `includeKeywords` (type: `array`):

Keep only products whose title (or seller name) contains every one of these words, ignoring case and accents. Allegro's search is fuzzy and can return products that do not contain your term; this removes them.

## `excludeKeywords` (type: `array`):

Drop products whose title (or seller name) contains any of these words, ignoring case and accents. Useful to remove cases, covers and accessories from a phone search.

## `includeSponsored` (type: `boolean`):

Allegro mixes paid 'Sponzorované' placements into the results. Turn off to drop them; an offer that appears both sponsored and organic is saved once either way.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "maxItems": 20,
  "condition": "any",
  "freeDelivery": false,
  "superSellerOnly": false,
  "sortBy": "relevance",
  "includeSponsored": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

One row per allegro.cz offer that matched the search and cleared the filters: price in CZK, seller, rating, delivery text, parameters, offer link.

# 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 = {
    "searchQueries": [
        "iphone"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("reventadata/allegro-cz-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 = {
    "searchQueries": ["iphone"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("reventadata/allegro-cz-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "iphone"
  ],
  "maxItems": 20
}' |
apify call reventadata/allegro-cz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,reventadata/allegro-cz-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/AHGnrYsWtl7cFSzFG/builds/I9WZBw0xXEeLwYqtU/openapi.json
