# Heureka Scraper \[Only $2💰] | Prices | Shops | Reviews (`ahmed_jasarevic/heureka-scraper`) Actor

Scrape Heureka.cz and Heureka.sk products for price monitoring and market research: current prices, per-shop offers, specifications, ratings and reviews, from any category, search query or product URL.

- **URL**: https://apify.com/ahmed_jasarevic/heureka-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 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/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

## Heureka Scraper

Scrape product data from Heureka.cz and Heureka.sk, Czechia's and Slovakia's largest price-comparison marketplaces: current prices, per-shop offers, specifications and rating statistics, from any category, search query or product URL.

The actor calls the same JSON endpoints Heureka's frontend uses, so a typical run finishes in seconds. It needs no browser. Category and search pages use a country-matched Apify Residential proxy, because Heureka blocks those JSON endpoints from datacenter IPs.

### Main Use Cases

- Price monitoring and minimum/maximum price tracking across the Czech and Slovak market
- Competitor and market research across products, brands and categories
- Building structured product databases with specifications and per-shop offers
- Finding which e-shops sell a given product (retail distribution and lead generation)
- Rating and review-count analysis at scale
- MAP and price-parity monitoring for brand owners and distributors

### How It Works

![Heureka Scraper workflow: from product searches to offers, specifications and rating data across Czech and Slovak shops](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-heureka-scraper.webp)

Looking for a **Heureka scraper** or a practical **Heureka product data alternative**? Search by keyword or paste category or product URLs for Heureka.cz and Heureka.sk. Each product row includes name, brand, category breadcrumb, minimum and maximum price, currency, offer count, shop count, rating, review count, specifications and per-shop offers.

Use the dataset for price comparison, competitor research, catalog enrichment, MAP monitoring and rating analysis in Czechia and Slovakia. Export as JSON, CSV or Excel, or pull results through the Apify API. Pay from $1.00 per 1,000 products.

### Extract Heureka Prices And Shop Offers Without An Official API

Heureka runs an official Marketplace API, but it is for sellers who list on Heureka: it connects an e-shop to the marketplace, syncs product feeds, and manages bidding and conversion tracking. It does not return the public catalog or competitor prices. This actor reads the same product data a visitor sees:

- Search by category, search query or direct product URL.
- Return the price range, offer count and shop count for each product.
- Return the per-shop offer list with each shop's price, delivery price and availability.
- Page through a listing and cap the run with `maxItems`.

### Analyze Heureka Ratings And Specifications

When product details are enabled, the actor returns the full parameter and specification table, the per-shop offer list and rating/review-count statistics for each product. This is the dataset to use for spec-level comparison between brands, rating distribution and offer analysis.

### Speed

A run that reads a category listing and fetches details for a few products typically takes 2–5 seconds; listing-only runs take about 2–3 seconds. Larger runs are limited by the number of categories and products you request; listing pages are read until `maxItems` is reached and product details are fetched with concurrency 10.

### Pricing

The Actor uses pay-per-event pricing. You pay for:

- One `apify-default-dataset-item` event for each product or offer row written to the dataset.
- One `product-detail` event for each product whose detail page is successfully fetched. This covers the per-shop offer list, the specification table and rating/review statistics.
- The `apify-actor-start` event once per run.

Listing-only runs (`scrapeProductDetails: false`) do not trigger `product-detail`. A failed detail request that falls back to listing data is also not charged as a detail. Exact event prices and loyalty discounts are shown in the Actor's Pricing tab.

### Input Parameters

| Field                  | Type    | Required | Default                                | Notes                                                                                                                          |
| ---------------------- | ------- | -------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `startUrls`            | array   | No       | `https://mobilni-telefony.heureka.cz/` | Heureka category, search or product URLs.                                                                                      |
| `searchQueries`        | array   | No       | `[]`                                   | Search terms (for example `iphone 15`). Each is turned into a search query.                                                    |
| `country`              | string  | No       | `CZ`                                   | `CZ` or `SK`, used for search queries. A start URL's own domain takes precedence.                                              |
| `maxItems`             | integer | No       | `100`                                  | Maximum products/offers to save. Pagination continues until this number is reached. Free users are capped at 10.               |
| `scrapeProductDetails` | boolean | No       | `true`                                 | Fetch each product's detail JSON for offers, specifications and rating statistics. Disable for a faster, listing-only run.     |
| `proxy`                | object  | No       | Apify Residential, country-matched     | Category and search pages require Residential CZ/SK on Apify. Product URLs can use direct requests. Unblocker is not reliable. |

### Output Fields

Each dataset item is a product or an offer.

Product row:

- `type`, `source`, `id`, `localId`, `uuid`, `name`, `url`, `slug`: row type, source and product identity.
- `category`: category id, name, slug and breadcrumbs.
- `brand`, `minPrice`, `maxPrice`, `currency`: brand and price range.
- `offerCount`, `shopCount`: number of offers and number of shops.
- `rating`, `reviewCount`, `ratingCount`: rating statistics.
- `priceDrop`, `topBadge`: listing price-drop details (`shopCount`, `percentage`, `originalPrice`) and badge value.
- `imageUrl`, `description`, `shortDescription`: product content.
- `specifications`: parameter and specification table.
- `offers`, `biddingOffers`, `topOffer`: per-shop offers (`shop`, `shopSlug`, `price`, `deliveryPrice`, `availability`, `availabilityDays`, `isBuyable`, `url`).
- `reviews`: rating and review counts; `items` is empty because the JSON API does not return review texts.
- `scrapedAt`: ISO 8601 scrape timestamp.

Offer row (search results):

- `type`, `source`, `id`, `name`, `price`, `currency`: row type, source and offer identity.
- `shop`, `shopSlug`, `url`, `imageUrl`: shop and offer links.
- `scrapedAt`: ISO 8601 scrape timestamp.

Dataset view: `overview`.

### Example Input And Output

Example input:

```json
{
    "startUrls": [{ "url": "https://mobilni-telefony.heureka.cz/" }],
    "maxItems": 10,
    "scrapeProductDetails": true
}
```

Example product row (offers array shortened):

```json
{
    "type": "product",
    "source": "product",
    "id": "cf710b91-b322-54ef-87fa-fbb13f663b67",
    "localId": "1442824885",
    "uuid": "cf710b91-b322-54ef-87fa-fbb13f663b67",
    "name": "Motorola Moto G77 8GB/256GB PANTONE Black Olive",
    "url": "https://mobilni-telefony.heureka.cz/motorola-moto-g77-8gb-256gb-pantone-black-olive/",
    "slug": "motorola-moto-g77-8gb-256gb-pantone-black-olive",
    "category": { "id": "731", "name": "Mobilní telefony", "slug": "mobilni-telefony", "breadcrumbs": [] },
    "brand": "Motorola",
    "minPrice": 6803,
    "maxPrice": 9378,
    "currency": "CZK",
    "offerCount": 22,
    "shopCount": 22,
    "rating": 84,
    "reviewCount": 29,
    "ratingCount": 29,
    "imageUrl": "https://img-cdn.heureka.group/v1/p/cf710b91-b322-54ef-87fa-fbb13f663b67.jpg?width=400&height=400",
    "specifications": { "Kapacita baterie": "5200 mAh", "Velikost displeje": "6.8 \"" },
    "offers": [
        {
            "shop": "Allegro.cz",
            "shopSlug": "allegro-cz",
            "price": 6803,
            "deliveryPrice": 65,
            "availability": "THREE_DAYS",
            "availabilityDays": 3,
            "isBuyable": false,
            "url": "https://www.heureka.cz/exit-click-web?..."
        }
    ],
    "reviews": { "rating": 84, "reviewCount": 29, "ratingCount": 29, "items": [] },
    "scrapedAt": "2026-10-23T14:03:02.479Z"
}
```

Example offer row:

```json
{
    "type": "offer",
    "source": "search",
    "id": "5601614628",
    "name": "Sablio Rucnik s potiskem Vykrik - Edvard Munch - 50x100 cm",
    "price": 499,
    "currency": "CZK",
    "shop": "CeskeLuzkoviny.cz",
    "shopSlug": "ceskeluzkoviny-cz",
    "url": "https://www.heureka.cz/exit-click-web/?id=5601614628&shop=ceskeluzkoviny-cz",
    "scrapedAt": "2026-10-23T14:03:02.479Z"
}
```

### Integrations & Automation

Results are written to Apify datasets, so you can export them as JSON, CSV or Excel, read them through the Apify API, or push them onward with webhooks. Connect the actor to Zapier or Make to load rows into a spreadsheet, a database or a BI tool.

For price monitoring, schedule the actor daily on the same categories and search queries, so each run records the same market over time. A weekly schedule is usually enough for market research. Recurring runs also help the actor surface better in the Apify Store.

### Related Actors

- [cashmere_verdict/heureka-product-scraper](https://apify.com/cashmere_verdict/heureka-product-scraper)
- [stealth_mode/heureka-product-search-scraper](https://apify.com/stealth_mode/heureka-product-search-scraper)
- [yurko/actor-heureka-shop-reviews](https://apify.com/yurko/actor-heureka-shop-reviews)
- [stealth_mode/heureka-reivews-scraper](https://apify.com/stealth_mode/heureka-reivews-scraper)
- [studio-amba/heureka-scraper](https://apify.com/studio-amba/heureka-scraper)

### FAQ

#### Is there an official Heureka API?

Heureka runs an official Marketplace API, but it is an integration for sellers who join the Heureka Marketplace: it connects a shop, syncs product feeds, and manages bidding and conversion tracking. It does not expose the public product catalog or competitor prices to third parties.

#### What are the alternatives to this actor for Heureka data?

Alternatives include the official Heureka Marketplace API (if you are a listed seller), paid scraping APIs from providers such as Bright Data, and other Apify Store actors that focus on Heureka products or Heureka shop reviews. This actor returns products, per-shop offers, specifications and rating statistics from a single run.

#### Can Heureka be scraped without a browser?

Yes. This actor requests Heureka's JSON responses directly over HTTP/2, so it needs no browser and no HTML parsing. Category and search pages require a country-matched Apify Residential proxy on the platform, because the listing gateway blocks datacenter IPs; direct product URLs do not need one.

#### How fast is a run?

Typically 2–5 seconds for a category and a few product details, or 2–3 seconds for a listing-only run. Speed depends on the number of listings and products requested; pages are read automatically until `maxItems` is reached. Product details are fetched with concurrency 10.

#### Are individual reviews included?

No. The JSON responses expose rating and review counts, but not review texts. The `reviews` object contains the rating, review count and rating count; `reviews.items` is empty. Use a dedicated review scraper if you need review text.

#### Does it cover both Heureka.cz and Heureka.sk?

Yes. Use Heureka.cz or Heureka.sk category, search or product URLs in `startUrls`. Prices are in CZK for `.cz` and EUR for `.sk`. The `country` field sets the default for search queries; a start URL's domain takes precedence.

#### Which proxies do I need?

Category and search pages need Apify Residential in the matching country (CZ or SK); the input schema selects Residential by default and the actor fills in the country. Direct requests work locally and for product URLs, but the listing gateway returns `403 Checking security` to datacenter IPs. Apify Unblocker times out on this endpoint.

#### Can I monitor Heureka prices daily?

Yes. Keep the same category and search URLs and run the actor on a daily schedule. The `minPrice`, `maxPrice` and `price` fields and the per-shop `offers` list let you track how prices change over time.

### SEO Keywords

heureka scraper, heureka.cz scraper, heureka.sk scraper, scrape heureka, heureka product data, heureka price monitoring, heureka prices, czech price comparison data, heureka shop offers, heureka api, heureka product scraper, heureka reviews scraper, price monitoring czech republic, slovak ecommerce data, heureka specifications, per-shop price comparison, czech ecommerce market research, heureka dataset, map price monitoring, price parity monitoring, competitor price tracking, heureka alternative, heureka data extraction, price comparison scraper

### For AI Agents & LLM Apps

Purpose: return Heureka product or offer rows (with prices, per-shop offers, specifications and rating statistics) for a set of category, search or product URLs.

Minimal working input:

```json
{
    "startUrls": [{ "url": "https://mobilni-telefony.heureka.cz/" }]
}
```

Variant that searches and skips product details for a faster run:

```json
{ "searchQueries": ["iphone 15"], "country": "CZ", "scrapeProductDetails": false, "maxItems": 50 }
```

Output fields: product rows use `type`, `source`, `id`, `localId`, `uuid`, `name`, `url`, `slug`, `category`, `brand`, `minPrice`, `maxPrice`, `currency`, `offerCount`, `shopCount`, `rating`, `reviewCount`, `ratingCount`, `priceDrop`, `topBadge`, `imageUrl`, `description`, `shortDescription`, `specifications`, `offers`, `biddingOffers`, `topOffer`, `reviews`, `scrapedAt`. Offer rows use `type`, `source`, `id`, `name`, `price`, `currency`, `shop`, `shopSlug`, `url`, `imageUrl`, `scrapedAt`.

Behaviors an agent should know:

- `startUrls` and `searchQueries` are both honoured; `country` sets the default for search queries, while a start URL's domain determines its own country.
- When `scrapeProductDetails` is enabled, offers, specifications and review statistics are always included; disable it for a listing-only run.
- `reviews.items` is always empty; the JSON API returns rating and counts only.
- The per-shop `offers` array is capped at 20 by the API; `offerCount` is the total.
- Leaving `maxItems` unset uses the default of 100; free users are capped at 10.
- The default proxy is Apify Residential in the selected country, required for category and search pages. Direct requests work for product URLs but not for the listing gateway on Apify datacenter IPs.

Billing: pay-per-event. `apify-actor-start` once per run, one `apify-default-dataset-item` per row, and one `product-detail` per product whose detail page is fetched. See the Actor's Pricing tab for current event prices and loyalty discounts.

### Legal & Compliance Disclaimer

This actor is independent and is not affiliated with, endorsed by or sponsored by Heureka or Heureka Shopping s.r.o. It requests the same publicly reachable JSON endpoints that Heureka's own frontend uses: it does not log in, does not bypass authentication and does not solve CAPTCHAs.

Users are responsible for complying with Heureka's Terms of Service and with applicable data-protection law (for example GDPR) in their own jurisdiction. Where the output contains personal data, that data must not be used for unsolicited commercial outreach in violation of applicable law.

# Actor input Schema

## `startUrls` (type: `array`):

Heureka category, search or product URLs. Examples: https://mobilni-telefony.heureka.cz/ (category), https://mobilni-telefony.heureka.cz/motorola-edge-50-fusion-8gb-256gb-forest-blue/ (product), https://www.heureka.cz/?h\[fraze]=iphone (search).

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

Search terms to look up on Heureka (e.g. "iphone 15"). Each query is turned into a search URL.

## `country` (type: `string`):

Which Heureka marketplace to use for search queries.

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

Maximum number of products/offers to save to the dataset. The actor reads as many listing pages as needed until it reaches this number.

## `scrapeProductDetails` (type: `boolean`):

Fetch each product's detail to get per-shop offers, full specifications and review statistics. Disable for a faster, listing-only run.

## `proxy` (type: `object`):

Defaults to Apify Residential in the selected country. Heureka blocks category and search API requests from datacenter IPs, so CZ and SK residential proxies are required for listing runs. Product URLs work with direct requests. Apify Unblocker is not reliable for this endpoint.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://mobilni-telefony.heureka.cz/"
    }
  ],
  "country": "CZ",
  "maxItems": 100,
  "scrapeProductDetails": true,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://mobilni-telefony.heureka.cz/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/heureka-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 = { "startUrls": [{ "url": "https://mobilni-telefony.heureka.cz/" }] }

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/heureka-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 '{
  "startUrls": [
    {
      "url": "https://mobilni-telefony.heureka.cz/"
    }
  ]
}' |
apify call ahmed_jasarevic/heureka-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/heureka-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/NARcXIqUvd8Ote7JF/builds/lhf1mWadRQmn3HoiE/openapi.json
