# Datart.cz Product Scraper (`michal.turek/datart-scraper`) Actor

Scrapes product details (name, price, specs, images, availability) from datart.cz

- **URL**: https://apify.com/michal.turek/datart-scraper.md
- **Developed by:** [Michal Turek](https://apify.com/michal.turek) (community)
- **Categories:** E-commerce
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Datart.cz Product Scraper

**Datart.cz Product Scraper** extracts structured product data — prices, specifications, images, ratings, and availability — from [datart.cz](https://www.datart.cz/), one of the largest Czech consumer electronics retailers. Start from the homepage to crawl the entire catalog, or point it at a single category page to scope your run.

Run it directly in [Apify Console](https://console.apify.com) — no coding required. Results are stored in a dataset you can export as JSON, CSV, or Excel and connect to any downstream system via the Apify API.

### Why use Datart.cz Product Scraper?

- **Price monitoring** — track price changes across product categories over time
- **Competitor research** — collect structured product specs and pricing for analysis
- **Catalog synchronization** — keep an external database in sync with live product data
- **Market analysis** — aggregate ratings and availability across thousands of products

### ⚠️ Important

This scraper requires a proxy (Apify Proxy is recommended). Running without a proxy will very likely result in no results, as Datart actively blocks requests from non-proxied or datacenter IPs.

### How to use Datart.cz Product Scraper in standard mode

1. Go to the Actor page on Apify Console and click **Try for free**.
2. In the **Start URLs** field, enter one or more URLs:
   - `https://www.datart.cz/` — crawl all categories and products
   - `https://www.datart.cz/televize.html` — crawl only TVs
   - `https://www.datart.cz/notebooky-a-it-technika.html` — crawl only laptops & IT
3. Optional: Enable residential proxy and configure the country to "Czech Republic". If you get no results, this might be the root cause.
4. Set **Max Requests per Crawl** to limit run size (200 = roughly 150–180 products).
5. Click **Save & Run**.
6. When finished, open the **Output** tab or download the dataset.

### Input

| Field                 | Type    | Description                            | Default                  |
| --------------------- | ------- | -------------------------------------- | ------------------------ |
| `startUrls`           | array   | URLs to start crawling from            | `https://www.datart.cz/` |
| `maxRequestsPerCrawl` | integer | Max pages fetched (0 = unlimited)      | `200`                    |
| `proxyConfiguration`  | object  | Proxy settings (Apify Proxy or custom) | disabled                 |

**Example input:**

```json
{
    "startUrls": [{ "url": "https://www.datart.cz/televize.html" }],
    "maxRequestsPerCrawl": 500
}
```

### Output

Each product is stored as one record in the default dataset. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

**Example output item:**

```json
{
    "url": "https://www.datart.cz/televize-samsung-qe50q7f",
    "title": "Televize Samsung QE50Q7F",
    "category": "televize",
    "sku": "SAMQE50Q7FA",
    "internalId": "1915142",
    "price": 9490,
    "images": ["https://image.datart.cz/foto/500/0/5/7/product_7421750.jpg"],
    "rating": 4.8,
    "ratingCount": 188,
    "availability": "Ihned k odeslání",
    "specifications": {
        "Technologie displeje": "QLED",
        "Úhlopříčka obrazovky": "125 cm (50\")",
        "Rozlišení": "3840 x 2160 (Ultra HD 4K)"
    },
    "breadcrumbs": [
        { "text": "TV, foto, audio, video", "url": "https://www.datart.cz/tv-audio-video" },
        { "text": "Televize", "url": "https://www.datart.cz/televize.html" }
    ],
    "scrapedAt": "2026-06-17T10:00:00.000Z"
}
```

### Data table

| Field            | Type   | Description                                   |
| ---------------- | ------ | --------------------------------------------- |
| `url`            | string | Canonical product URL                         |
| `title`          | string | Full product name                             |
| `sku`            | string | Datart product code (`Kód:`)                  |
| `internalId`     | string | Datart internal ID (`ID:`)                    |
| `price`          | number | Price in CZK including VAT                    |
| `images`         | array  | Product image URLs (500px size)               |
| `rating`         | number | Average customer rating (0–5)                 |
| `ratingCount`    | number | Number of customer ratings                    |
| `availability`   | string | Stock/delivery status in Czech                |
| `specifications` | object | Technical specs as key/value pairs            |
| `breadcrumbs`    | array  | Navigation path objects `{text, url}`         |
| `scrapedAt`      | string | ISO 8601 timestamp of when data was collected |

### Standby mode

The actor can be started also in the Standby mode. The inner HTTP server then accepts `GET /scrape-product?url=<productUrl>` requests and returns
scraped product data synchronously. When enabled, no batch crawl is run — the actor simply waits for incoming requests.

Each successful scrape and response is charged using `apify-default-dataset-item` event.

### Pricing / Cost estimation

This Actor uses **CheerioCrawler** (HTTP-based, no browser) making it very fast and cost-efficient. Each page fetch consumes minimal compute units.

Approximate cost estimates on Apify platform:

- **200 requests** (~150 products): ~$0.01–0.02
- **5,000 requests** (~4,000 products): ~$0.20–0.40
- **Full catalog crawl** (tens of thousands of products): ~$2–5

New Apify accounts include a free tier that typically covers hundreds of product scraping runs per month.

### Tips

- **Scope by category**: provide a specific category URL (e.g. `/notebooky-a-it-technika.html`) to focus the run and reduce cost.
- **Large-scale runs**: enable Apify Proxy in the `proxyConfiguration` field to avoid IP-based rate limiting when crawling thousands of products.
- **Scheduled monitoring**: use Apify's scheduler to run this Actor daily/weekly for price tracking.
- **Filtering**: use `maxRequestsPerCrawl` during testing (e.g. 50) to preview results before a full run.

### FAQ, disclaimers, and support

**Is it legal to scrape datart.cz?**
This Actor collects only publicly available product information. Respect datart.cz's Terms of Service and robots.txt directives. Do not use the collected data for commercial redistribution without permission.

**Some fields are null — why?**
A few products may have non-standard page layouts. The scraper uses content-based selectors; a null value means the field wasn't found in the expected format on that page.

**Need a custom solution?**
Contact [Apify](https://apify.com/contact) for enterprise-grade custom scrapers with SLA support.

**Found a bug or have feedback?**
Open an issue in the [Issues tab](../../issues) on this Actor's page.

# Actor input Schema

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

One or more datart.cz URLs to start from. Use the homepage to crawl everything or a category page (e.g. https://www.datart.cz/zamky-na-kolo.html) to scope the run to one category.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of pages (categories + products) the crawler may fetch. Set to 0 for unlimited.

## `proxyConfiguration` (type: `object`):

Proxy settings for avoiding IP blocks. Enable Apify Proxy for large-scale runs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.datart.cz/zamky-na-kolo.html"
    }
  ],
  "maxRequestsPerCrawl": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}
```

# 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://www.datart.cz/zamky-na-kolo.html"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("michal.turek/datart-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://www.datart.cz/zamky-na-kolo.html" }] }

# Run the Actor and wait for it to finish
run = client.actor("michal.turek/datart-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://www.datart.cz/zamky-na-kolo.html"
    }
  ]
}' |
apify call michal.turek/datart-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,michal.turek/datart-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/Yb4eEqXCCgl8iYVPZ/builds/F3uPNFLuXa9tIGkZi/openapi.json
