# Datart.cz Scraper ($0.95/1K): Prices, EAN & Price Monitoring (`tsutseisoftware/datart-scraper`) Actor

Scrape Datart.cz (Czech electronics e-shop) by category (with the website's filters), search, product code or EAN: price, real discount vs. 30-day low, discount codes, stock per store, EAN and specifications. Monitoring returns only changed or removed products. Unofficial.

- **URL**: https://apify.com/tsutseisoftware/datart-scraper.md
- **Developed by:** [Tsutsei Software](https://apify.com/tsutseisoftware) (community)
- **Categories:** E-commerce, Automation
- **Features:** Limited permissions
- **Stats:** 4 total users, 1 monthly users, 99.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Datart.cz Scraper: Prices, EAN & Price Monitoring

Scrape products and prices from **Datart.cz**, one of the largest electronics e-shops in the Czech Republic. Use a **category URL** (also with the website's own filters and sorting), a **category overview**, **product URLs**, a **search term**, or your own list of **Datart product codes or EANs**. For each product you get the name, brand, current price, **lowest price in the last 30 days and the real discount**, availability online and in stores, delivery date, rating, labels and the bazaar condition. Optionally you also get the **EAN (barcode)**, full technical specifications, the **discount code and the price with it** ("Cena s kódem"), the promotion end, energy class, warranty, description and documents, and the **stock in each Datart store** with the home delivery options. Built for **e-shops, brands and price comparison services that track Datart's prices**, and for deal hunters.

Built for **price monitoring**: schedule it daily in monitoring mode and you get, and pay for, only products whose price or availability changed, plus (optionally) the products that **disappeared** and the ones that **came back**.

**New:** website filters and sorting, lookups by product code or EAN, stock in each store and removed products. Datart's Slovak sister shop has its own [NAY.sk Scraper](https://apify.com/tsutseisoftware/nay-sk-scraper) with the same output.

> **Česky:** Scraper a hlídač cen pro **Datart.cz**: ceny, skutečná sleva proti nejnižší ceně za 30 dní, slevové kódy, dostupnost na prodejnách, EAN a parametry. Hledání v kategorii (i s filtry webu), podle výrazu, kódu nebo EAN. Monitoring vrací jen změněné nebo odstraněné produkty. Výstup do Excelu, CSV nebo JSON. Podporu poskytujeme i česky.

### Why use this Datart scraper?

- 🏷️ **Real discounts, not marketing.** `isDiscounted` and `discountPercent` compare the price with the **lowest price of the last 30 days**, the way EU law (Omnibus) requires shops to show discounts.
- 🔢 **EAN for every product** (optional). Match Datart products with other shops or your own catalogue, or look up **your own list of product codes or EANs** (only exact matches are returned).
- 📉 **Monitoring mode and price drop alerts.** Only new or changed products, with `previousPrice`, `priceChange` and `priceChangePercent`. You can also ask for drops of at least X %.
- 🏬 **Store availability as numbers.** `storeCount` (stores with stock) and `deliveryDate` as an ISO date, and optionally the **stock in each Datart store** (Praha, Brno, Ostrava…): pieces, unpacked pieces, pickup time, and the home delivery options with dates and prices.
- 🎛️ **The website's own filters and sorting.** Any parameter of the filter panel (display technology, screen size… also ranges), condition (new or bazaar) and bazaar state, in stock in a given store, brands, price range and stock, applied by Datart.cz itself. Or just paste a URL with filters set on the website. More filters you don't pay for: discounted, name keywords, rating, labels, energy class, warranty, discount code.
- ⚡ **Fast and cheap.** No browser: **1 000 products from categories in under a minute for $0.95** (FREE plan), residential proxy included. Optional **fast mode** about 2x faster for a tiny extra charge.

### What data can you get?

| Field | Example |
|---|---|
| Name, brand, product code | Televize TCL 98P8K, TCL, TCL98P8K |
| Price, lowest price in 30 days | 36 490 CZK, 39 990 CZK |
| Discounted, discount | true, 8 % |
| Availability | in_stock (Ihned k odeslání) |
| Stores with stock | 1 (Skladem v 1 prodejně) |
| Delivery date | 2026-10-10 |
| Rating, reviews | 4.9, 298 |
| Category path | TV, foto, audio, video › Televize |
| Labels | PRODLOUŽENÁ ZÁRUKA, + dárek |
| Condition, bazaar price from | new / likeNew (zánovní), 24 990 CZK |
| EAN (optional) | 5901292525859 |
| Specifications (optional) | Technologie displeje: LED, … |
| Price with code, code, promotion end (optional) | 25 066 CZK, 2269DATN15H, 2026-10-30 |
| Energy class, warranty, documents, description (optional) | F, 24 months, energy label sheet and manual (PDF) |
| Stock per store, delivery options (optional) | Praha 1 - Národní třída: 2 pieces, pickup 2026-10-20 09:30; Balíkovna na adresu: free, tomorrow |
| Search term or code that found it | `searchQuery`, `matchedBy` |

See the **Output** tab for all fields.

### How to scrape Datart.cz

1. **Category:** open Datart.cz, go to a category, e.g. `https://www.datart.cz/televize.html`, and paste the URL into **Category, product or search URLs**. Category overviews (`https://www.datart.cz/tv-audio-video`) and product URLs work too.
2. **Or search:** type what you're looking for into **Search**, e.g. `lg oled` or `pračka bosch`. Results come in the shop's relevance order. **Or look up** your own list in **Product codes** or **EANs**. You can combine all of these in one run.
3. Set **Max products** (and optionally **Max products per search or URL**), turn on **Add EAN and specifications** or **Add stock per store** if you need them, and add filters.
4. Click **Start** and download the results as JSON, CSV or Excel, or use the API.

**Tip:** set filters and sorting on the website and paste the URL, e.g. `https://www.datart.cz/televize.html/filter/v:-4:-835/o:3` (Samsung, cheapest first). The actor keeps them.

### Use cases

**Daily price monitoring of a category.** Schedule it every morning:

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/televize.html" }],
  "maxItems": 0,
  "onlyNewOrChanged": true,
  "monitoringKey": "tv-daily"
}
```

**Discount alerts:** products that got at least 10 % cheaper since the last run.

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/pracky.html" }],
  "onlyNewOrChanged": true,
  "minPriceDropPercent": 10
}
```

**Current deals in a category:** discounted products with at least 15 % off the 30-day low.

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/notebooky.html" }],
  "onlyDiscounted": true,
  "minDiscountPercent": 15
}
```

**Cheapest Samsung OLED TVs in stock, filtered by Datart.cz itself:**

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/televize.html" }],
  "brands": ["Samsung"],
  "parameterFilters": { "Technologie displeje": ["OLED"] },
  "onlyInStock": true,
  "sortBy": "cheapest",
  "maxItems": 50
}
```

**Price check of your own product list by EAN** (only exact matches are returned):

```json
{
  "eans": ["8806096768006", "8806096705766"],
  "productCodes": ["LGG43QNED87B"]
}
```

**Bazaar bargains: like new and unpacked products with the price of the new one:**

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/televize.html" }],
  "productCondition": "bazaar",
  "bazaarStates": ["likeNew", "unpacked"],
  "maxItems": 100
}
```

**Where to buy today: stock in Prague stores with discount codes:**

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/mobilni-telefony.html" }],
  "availableInStores": ["Praha"],
  "includeDetails": true,
  "includeStoreAvailability": true,
  "maxItems": 50
}
```

**Assortment tracking: new, changed, removed and returning products of a category:**

```json
{
  "startUrls": [{ "url": "https://www.datart.cz/tv-audio-video" }],
  "maxItems": 0,
  "onlyNewOrChanged": true,
  "includeRemovedProducts": true,
  "monitoringKey": "tv-audio-assortment"
}
```

**Find products and their EAN by name:**

```json
{
  "searchQueries": ["lg oled 55", "samsung qled 65"],
  "maxItemsPerStartUrl": 10,
  "includeDetails": true
}
```

#### Website filters (applied by the shop)

**Sort by**, **Condition**, **Bazaar state**, **In stock in these stores** and **Parameter filters** are applied by Datart.cz itself, so you get only matching products. With any of them (or with **Apply brand, price and stock filters on the website**), **Only these brands**, **Exclude brands**, **Min/Max price** and **Only products in stock** go to the website too. Names that a listing doesn't have are reported in the log together with the options it has. Without these inputs, the filters below work exactly as before, on every listing page.

#### Filters (you don't pay for filtered-out products)

| Filter | Example |
|---|---|
| **Only products in stock** | only products that ship now |
| **Only discounted products**, **Min discount (%)** | price below the 30-day low, at least 15 % off |
| **Min price (CZK)**, **Max price (CZK)** | 10 000 – 30 000 |
| **Only these brands**, **Exclude brands** | LG, Samsung / Hisense |
| **Name must contain**, **Name must not contain** | OLED / rozbaleno |
| **Min rating**, **Min number of reviews** | 4.5, 10 |
| **Only with labels** | doprava zdarma |
| **Exclude second-hand and opened products** | skip "bazar" products |
| **Only with EAN**, **Energy classes**, **Min warranty (months)**, **Only with a discount code** | need the product page, so they turn on **Add EAN and specifications**; places freed by filtered-out products are filled with the next products |

#### Product codes and EANs

**Product codes** (the end of the `id` field, e.g. `LGGOLED55B65`) and **EANs**, up to 500 per run. Only exact matches are returned. A product found by EAN always comes with the product page details (and their charge). Codes that aren't found are listed in the status message.

#### Fast mode (small extra charge)

**Fast mode** reads up to about 2× faster and drops back to the normal speed for the rest of the run at the first sign of load. It never changes IP address to get around a limit. It costs $0.01 per 1 000 products saved in fast mode.

Safety limits in **Advanced**: **Max pages per category** (22 products per page) and **Max pages per search**. **Description length** limits the description. **Proxy configuration**: Datart.cz needs a residential proxy; it is set by default and included in the price.

#### Monitoring mode explained

With **Monitoring: only new or changed products** each run compares products with the previous run that used the same **Monitoring key**. A product is returned as `changeType: "new"` or `"updated"` only if it is new or its **price, availability, 30-day lowest price or discount status** changed. New reviews, labels or delivery estimates don't count as a change. **Monitoring: only price changes** narrows it to price changes. **Monitoring: min price drop (%)** returns only price drops. For monitoring, use category URLs rather than search terms: categories have no search limits and give stable results.

**Monitoring: include removed products** also returns products of the previous run that are no longer listed, as `changeType: "removed"` with `removedAt` and the last known name, price and URL. When such a product comes back, it is `"reappeared"`. Removed products are checked only after a run that read everything it was asked for (not when **Max products**, **Max products per search or URL**, a page limit or unread pages cut it short; the status message then says why). Use one **Monitoring key** per input.

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

You pay per saved product. Platform usage **and the residential proxy** are included. Filtered-out and unchanged products (in monitoring mode) are free.

| Plan | Per 1 000 products | + with the product page | + found by a code or EAN lookup | + Fast mode |
|---|---|---|---|---|
| FREE | **$0.95** | +$1.65 | +$1.75 | +$0.01 |
| BRONZE | **$0.93** | +$1.65 | +$1.75 | +$0.01 |
| SILVER | **$0.90** | +$1.65 | +$1.75 | +$0.01 |
| GOLD and higher | **$0.85** | +$1.65 | +$1.75 | +$0.01 |

Product page details (**Add product page details**) and lookups cost a little more (see the table): a product found by a code or EAN lookup is charged the lookup on top. Stock per store and removed-product rows don't change the price. See the **Pricing** tab for the current prices.

Typical runs:

| Scenario | Price (FREE plan) | Typical time (normal / fast mode) |
|---|---|---|
| 100 products from a category | $0.10 | a few seconds |
| 1 000 products from categories | $0.95 | under a minute |
| 100 products with EAN and specifications | $0.26 | ~1 minute / ~30 s |
| 100 products with details and stock per store | $0.26 | ~2 minutes / ~1 minute |
| 100 EANs | $0.44 | ~6 minutes |
| 5 search terms, 2 pages each (up to 240 products) | up to $0.23 | ~1 minute (searches are deliberately paced) |

### Input example

```json
{
  "searchQueries": ["lg oled"],
  "startUrls": [{ "url": "https://www.datart.cz/televize.html" }],
  "maxItems": 100,
  "includeDetails": false,
  "onlyInStock": false,
  "onlyNewOrChanged": false
}
```

### Output example

Real output (specifications and the specification summary shortened):

```json
{
  "id": "datart:TCL98P8K",
  "source": "datart.cz",
  "url": "https://www.datart.cz/televize-tcl-98p8k",
  "productCode": "TCL98P8K",
  "internalId": "1908197",
  "name": "Televize TCL 98P8K",
  "brand": "TCL",
  "category": "Televize",
  "categoryPath": [
    "TV, foto, audio, video",
    "Televize"
  ],
  "price": 36490.0,
  "currency": "CZK",
  "lowestPrice30Days": 39990.0,
  "isDiscounted": true,
  "isRefurbished": false,
  "newProductPrice": null,
  "discountPercent": 8.0,
  "availability": "in_stock",
  "availabilityText": "Ihned k odeslání",
  "storeAvailabilityText": "Skladem v 1 prodejně",
  "storeCount": 1,
  "deliveryText": "u vás již 10. 10. 2026",
  "deliveryDate": "2026-10-10",
  "rating": null,
  "reviewCount": null,
  "labels": [
    "+ dárek"
  ],
  "specSummary": "248 cm (98\") úhlopříčka • rozlišení: 4K Ultra HD • DVB-C, DVB-S2, DVB-T2 (H.265) • QLED • …",
  "imageUrl": "https://image.datart.cz/foto/500/3/5/5/product_7264553.jpg",
  "ean": "5901292525859",
  "specifications": {
    "Technologie displeje": "LED",
    "Úhlopříčka obrazovky": "248 cm (98\")",
    "Rozlišení displeje": "4K Ultra HD"
  },
  "detailScraped": true,
  "sourceUrl": "https://www.datart.cz/televize.html",
  "scrapedAt": "2026-10-09T12:41:58Z",
  "position": 7,
  "changeType": null,
  "firstSeenAt": null,
  "previousPrice": null,
  "priceChange": null,
  "priceChangePercent": null
}
```

### Limitations

- **Search** reads at most 10 search terms per run and **Max pages per search** pages per term (24 products per page; default 2, at most 10). Searches run one after another with a short pause. For large or scheduled runs, use category URLs. If the website rejects searches, searches and code or EAN lookups stop for the rest of the run.
- **Website filters:** a listing with website filters may read one extra page. A filter value that a listing doesn't offer is reported in the log (with the options it has) and checked by the actor instead.
- A search for a **brand only** (e.g. `samsung`) leads to the brand's page, which has no product list. The actor tells you so; use a more specific term (`samsung televize`) or a category URL. A search that leads straight to a category (e.g. `televize`) continues with that category, limited by **Max pages per search**.
- **Search results have no category** in the listing; turn on **Add EAN and specifications** to get it from the product page.
- **Reviews:** only the average rating and the number of reviews, never review texts or reviewer names.
- **Images** are returned as URLs only. Product photos are copyrighted, so check the rights before you republish them.
- **Second-hand and opened products** ("bazar") show the price of a new product instead of the 30-day low: you get it as `newProductPrice` (`lowestPrice30Days` is null, `isRefurbished` is true).
- `deliveryDate` is the estimated delivery date, or for products on order the expected restocking date ("očekáváme …").
- A page the website rejects is retried once a little later, never from another IP address; if rejections continue, the run stops with what it has saved and says so. Products whose page couldn't be read are returned with the listing data (`detailScraped: false`).

### For AI agents and API users

- **Minimal input:** `{"searchQueries": ["lg oled"], "maxItems": 20}`, `{"startUrls": [{"url": "https://www.datart.cz/televize.html"}], "maxItems": 20}` or `{"eans": ["8806096768006"]}`.
- One row = one product = one charge (+ the `fast-mode` event when fast mode is on). `includeDetails: true` adds the product page data (EAN, specifications, discount code, documents…) and the `product-details` charge per product; a product found by a code or EAN adds the `product-lookup` charge; `includeStoreAvailability: true` doesn't change the price.
- New fields are added after the original ones; a row always has every field (null or an empty list when not read).
- `maxItems` counts saved products, `maxItemsPerStartUrl` limits each search term or URL.
- Prices are in CZK including VAT. `availability` is one of `in_stock` (ships now), `in_store_only` (not shippable, but some stores have it), `on_order`, `preorder`, `out_of_stock`, `unknown`.
- Monitoring state is kept per `monitoringKey` between runs of the same user.

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("tsutseisoftware/datart-scraper").call(run_input={
    "startUrls": [{"url": "https://www.datart.cz/televize.html"}],
    "maxItems": 100,
})
for product in client.dataset(run.default_dataset_id).iterate_items():
    print(product["name"], product["price"], product["discountPercent"])
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('tsutseisoftware/datart-scraper').call({ searchQueries: ['lg oled'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((p) => `${p.name}: ${p.price} CZK`));
```

You can also connect the actor to Make, Zapier, n8n, Google Sheets, Slack or webhooks and schedule it in Apify Console.

### Troubleshooting

| Status message | What to do |
|---|---|
| `Skipping unsupported URL` | Use a Datart.cz category, category overview, product or search URL (filters and sorting set on the website are fine). |
| `unknown … (options here: …)` | A website filter name or value that this listing doesn't have; pick one of the listed options. |
| `not found: …` | The product code or EAN isn't on Datart.cz (codes must match exactly). |
| `fast mode: N products, then the normal speed because …` | The website asked to slow down; the rest of the run used the normal speed (no fast-mode charge). |
| `removed products were not checked because …` | The run didn't read everything (e.g. **Max products** was reached); raise the limits for monitoring runs. |
| `… could not be loaded` | The category or product doesn't exist anymore; open the URL in your browser. |
| `… leads to the brand page …` | Use a more specific search term or a category URL. |
| `Datart.cz is rejecting requests right now` | Try again later. |
| `Saved 0 products (new or changed since last run)` | Nothing changed since the previous monitoring run; that's expected. |

### More Czech & Slovak e-shop scrapers

Compare prices across Czech and Slovak shops with the same output format (EAN for matching, monitoring mode):

- [Czech E-shop Price Comparison](https://apify.com/tsutseisoftware/czech-eshop-aggregator): one product compared across 9 Czech e-shops in one run: lowest price and its shop, price per shop, monitoring
- [TSBOHEMIA.CZ Scraper](https://apify.com/tsutseisoftware/tsbohemia-scraper): IT & electronics: prices, discount codes, EAN, site filters
- [Planeo.cz Scraper](https://apify.com/tsutseisoftware/planeo-scraper): electronics & appliances: prices, discount codes, store pickup, EAN
- [Smarty.cz Scraper](https://apify.com/tsutseisoftware/smarty-scraper): electronics: prices, coupons, cashback, EAN, price history, store stock
- [BAUHAUS.cz Scraper](https://apify.com/tsutseisoftware/bauhaus-cz-scraper): DIY & garden: prices, unit prices, stock in 9 stores, variants, EAN
- [Mironet.cz Scraper](https://apify.com/tsutseisoftware/mironet-scraper): electronics: prices, store stock, delivery date, MPN, warranty, price history
- [Alza Scraper (CZ, SK, HU, AT, DE)](https://apify.com/tsutseisoftware/alza-scraper): electronics: prices, coupons, ratings, reviews, pickup points, MPN
- [NAY.sk Scraper (Slovakia)](https://apify.com/tsutseisoftware/nay-sk-scraper): electronics: prices in EUR, discount codes, stock in 54 stores, EAN
- [BAUHAUS.sk Scraper (Slovakia)](https://apify.com/tsutseisoftware/bauhaus-sk-scraper): DIY & garden: EUR prices, Bratislava store stock, variants, EAN
- [Planeo.sk Scraper (Slovakia)](https://apify.com/tsutseisoftware/planeo-sk-scraper): electronics & appliances: EUR prices, discount codes, cashback, stock in 69 stores, EAN
- [TSBOHEMIA.SK Scraper (Slovakia)](https://apify.com/tsutseisoftware/tsbohemia-sk-scraper): IT & electronics: EUR prices, discount codes, EAN, lookups
- [Smarty.sk Scraper (Slovakia)](https://apify.com/tsutseisoftware/smarty-sk-scraper): electronics: EUR prices, coupons, cashback, stock in Slovak stores, EAN
- [OnlineShop.cz Scraper](https://apify.com/tsutseisoftware/onlineshop-scraper): electronics & appliances: prices, 30-day low, discount codes, EAN, stock
- [Mobil Pohotovost Scraper](https://apify.com/tsutseisoftware/mobil-pohotovost-scraper): phones, tablets and watches, new, like new and used: prices, EAN, MPN, condition, stock, monitoring
- [iSTYLE.cz Scraper](https://apify.com/tsutseisoftware/istyle-scraper): Apple products: prices, EAN, Apple part number, open-box and refurbished offers, stock, monitoring

### Custom scrapers and changes

Need a custom version of this actor, another field or filter, or a scraper for a different website? Write to **info@tsutsei-software.com** with the website, the data you need and how often, and we will reply with a fixed quote. We work mainly with clients from the Czech Republic and from outside the EU.

More about us and all our actors: [tsutsei-software.com](https://tsutsei-software.com).

### FAQ

#### Is it legal to scrape Datart.cz?

The actor collects only publicly available product data (prices, availability, stock per store, parameters, documents) and no personal data. It reads only publicly available data, without logging in, at most 120 requests per minute (240 in fast mode), slows down when the website asks, never changes IP address to get around a limit and never solves captchas or other challenges. Note that the site's robots.txt asks crawlers not to use its search pages; the **Search** field does use them (slowly and with limits), while category and product URLs don't. How you use the data is your responsibility. Use it for price monitoring and analysis, and don't republish the catalogue or photos. If unsure, consult a lawyer.

#### Do I need a proxy?

It's already set up. Datart.cz needs a **residential proxy**. It is set by default and its cost is included in the price. Keep the default unless you have your own Czech proxies.

#### What does fast mode cost and when should I use it?

$0.01 per 1 000 products on top of the normal price, only for products saved at the fast speed. Use it for large categories, product page details, stock per store and long EAN lists, when the time matters. Without it the actor works as it always did.

#### Can I use it through the API?

Yes. See the Python and JavaScript examples above, or the **API** tab.

#### Something doesn't work

Open an issue in the **Issues** tab and include the input you used.

This is an unofficial tool, not affiliated with or endorsed by HP TRONIC Zlín, spol. s r.o., the operator of Datart.cz. It is also known as a Datart API, Datart price tracker or "hlídač cen Datart".

# Actor input Schema

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

Search terms, e.g. 'lg oled', 'pračka bosch' or an EAN. Results come in the shop's relevance order. At most 10 terms per run; searches run one after another with a short pause, so prefer category URLs for large or scheduled runs.

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

Datart.cz category URLs (e.g. https://www.datart.cz/televize.html), category overviews (https://www.datart.cz/tv-audio-video, its categories are read one after another), product URLs or search result URLs (https://www.datart.cz/vyhledavani?q=...). Tip: set filters and sorting on the website and paste the URL (…/filter/…); the actor keeps them. ?page=N starts at that page.

## `productCodes` (type: `array`):

Datart product codes (the end of the id field, e.g. LGGOLED55B65). Only an exact code match is returned (matchedBy "productCode").

## `eans` (type: `array`):

EAN barcodes (check digit verified). Only exact matches are returned; a product found by EAN comes with the product page details (matchedBy "ean"). Up to 500 codes and EANs together per run.

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

Maximum number of products saved. You pay per saved product. 0 = no limit.

## `maxItemsPerStartUrl` (type: `integer`):

Limit for each search term and each start URL separately, so one large category doesn't use up the whole Max products. 0 = no limit.

## `includeDetails` (type: `boolean`):

Open each product page to add EAN (barcode), full technical specifications, description, documents (energy label sheet, manuals), energy class, warranty, discount code and its price ("Cena s kódem"), promotion end and, for search results, the category. Slower. Turned on automatically by filters that need it.

## `descriptionMaxLength` (type: `integer`):

Maximum characters of the product description (with "Add EAN and specifications"). 0 = the whole text.

## `includeStoreAvailability` (type: `boolean`):

Stock in each Datart store (pieces, unpacked pieces, pickup time, delivery to the store) and the home delivery options with dates and prices. Slower.

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

The website's sorting. "Default" keeps the sort of the URL (otherwise the website's "Doporučujeme"; relevance for searches).

## `applyFiltersOnWebsite` (type: `boolean`):

Uses the website's own filters for "Only these brands", "Exclude brands", "Min/Max price", "Only products in stock" and "Exclude second-hand and opened products" (faster when the filters are narrow; "position" is then the position in the filtered list). Always on when Condition, Bazaar state, In stock in these stores or Parameter filters are used.

## `productCondition` (type: `string`):

The website's "Stav zboží": new products or bazaar offers (second-hand, opened, with defects).

## `bazaarStates` (type: `array`):

The website's "Bazar - stav zboží" (any of the chosen).

## `availableInStores` (type: `array`):

The website's "Dostupnost na prodejně" filter, e.g. "Praha 1 - Palladium", "Brno", "Ostrava"; part of the name is enough (several stores = any of them).

## `parameterFilters` (type: `object`):

The listing's parameter filters by name as the filter panel shows them, e.g. {"Technologie displeje": \["OLED"], "Úhlopříčka obrazovky": \["65" (163 – 165 cm)"]}; ranges as {"min": 100, "max": 125}. Unknown names or values are reported in the log with the options.

## `onlyInStock` (type: `boolean`):

Keep only products that can be ordered and shipped now (availability in_stock). Store-only and out-of-stock products are skipped.

## `onlyDiscounted` (type: `boolean`):

Keep only products whose price is below the lowest price of the last 30 days (the shop shows the old price crossed out).

## `minDiscountPercent` (type: `integer`):

Keep only discounted products with at least this discount against the lowest price of the last 30 days.

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

Skip products cheaper than this.

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

Skip products more expensive than this.

## `brands` (type: `array`):

Keep only products of these brands, e.g. LG, Samsung. Case-insensitive.

## `excludeBrands` (type: `array`):

Skip products of these brands.

## `nameKeywords` (type: `array`):

Keep only products whose name contains at least one of these words (case and diacritics insensitive), e.g. OLED.

## `excludeNameKeywords` (type: `array`):

Skip products whose name contains any of these words, e.g. 'rozbaleno'.

## `minRating` (type: `number`):

Keep only products with at least this average rating (0-5), e.g. 4.5.

## `minReviewCount` (type: `integer`):

Keep only products with at least this many reviews.

## `labels` (type: `array`):

Keep only products with one of these shop labels, e.g. 'doprava zdarma'.

## `excludeRefurbished` (type: `boolean`):

Skip second-hand, opened and refurbished products (Datart 'bazar'), whose crossed-out price is the price of a new product.

## `onlyWithEan` (type: `boolean`):

Only products with an EAN (turns on "Add EAN and specifications").

## `energyClasses` (type: `array`):

Only these energy classes (turns on "Add EAN and specifications").

## `minWarrantyMonths` (type: `integer`):

Only products with at least this warranty (turns on "Add EAN and specifications").

## `onlyWithCoupon` (type: `boolean`):

Only products whose page shows a discount code ("Cena s kódem"; turns on "Add EAN and specifications").

## `onlyNewOrChanged` (type: `boolean`):

Return (and pay for) only products that are new or whose price, availability or 30-day lowest price changed since the previous run with the same monitoring key. Ideal for scheduled price monitoring of categories.

## `monitoringKey` (type: `string`):

Name of the saved monitoring state. Use a different key for each set of categories you monitor. Empty = "default". The value is stored encrypted.

## `onlyPriceChanges` (type: `boolean`):

In monitoring mode, return updated products only when their price changed (new products are still returned). Every returned product has previousPrice, priceChange and priceChangePercent.

## `minPriceDropPercent` (type: `integer`):

In monitoring mode, return only products whose price dropped by at least this percentage since the last run. Great for discount alerts.

## `includeRemovedProducts` (type: `boolean`):

Adds rows with changeType "removed" for products that disappeared since the previous run (only after a run that read everything) and "reappeared" when they are back.

## `fastMode` (type: `boolean`):

Reads Datart.cz up to about 2x faster and drops back to the normal speed for the rest of the run at the first sign of load. It never changes IP address to get around a limit. Extra charge "Fast mode" ($0.01 per 1 000 products, see the Pricing tab) only for products saved while the fast speed was on.

## `maxPagesPerCategory` (type: `integer`):

Safety limit for listing pages per category (22 products per page). 0 = no limit.

## `maxSearchPages` (type: `integer`):

How many result pages to read for each search term (24 products per page, at most 10 pages).

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

Datart.cz needs a residential proxy. It is set by default and its cost is included in the price. You can also use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.datart.cz/televize.html"
    }
  ],
  "maxItems": 20,
  "maxItemsPerStartUrl": 0,
  "includeDetails": false,
  "descriptionMaxLength": 1000,
  "includeStoreAvailability": false,
  "sortBy": "default",
  "applyFiltersOnWebsite": false,
  "productCondition": "any",
  "parameterFilters": {},
  "onlyInStock": false,
  "onlyDiscounted": false,
  "excludeRefurbished": false,
  "onlyWithEan": false,
  "onlyWithCoupon": false,
  "onlyNewOrChanged": false,
  "onlyPriceChanges": false,
  "includeRemovedProducts": false,
  "fastMode": false,
  "maxPagesPerCategory": 50,
  "maxSearchPages": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}
```

# Actor output Schema

## `products` (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/televize.html"
        }
    ],
    "maxItems": 20,
    "parameterFilters": {},
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CZ"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tsutseisoftware/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/televize.html" }],
    "maxItems": 20,
    "parameterFilters": {},
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CZ",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tsutseisoftware/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/televize.html"
    }
  ],
  "maxItems": 20,
  "parameterFilters": {},
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}' |
apify call tsutseisoftware/datart-scraper --silent --output-dataset

```

## MCP server setup

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