# Smarty.sk Scraper (Slovakia): Prices, Stock, EAN & Filters (`tsutseisoftware/smarty-sk-scraper`) Actor

Scrape Smarty.sk (Slovak phone, gaming & electronics retailer) by category, search, order code, EAN or product URL: EUR prices with and without VAT, discounts, discount codes, cashback, stock per store, dispatch date, EAN, parameters, price history. Site filters, monitoring, fast mode. Unofficial.

- **URL**: https://apify.com/tsutseisoftware/smarty-sk-scraper.md
- **Developed by:** [Tomáš Buchta](https://apify.com/tsutseisoftware) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.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

## Smarty.sk Scraper: Prices, Stock, EAN & Filters (Slovakia)

Scrape products and prices from **Smarty.sk**, a Slovak retailer of phones, tablets, smart watches, gaming, computers and accessories with stores in Bratislava, Košice, Banská Bystrica, Nitra and Trnava. Use a **category URL**, **product URLs**, **search queries**, **order codes** or **EANs**. For each product you get the name, brand, **price in EUR with and without VAT**, **price before discount and discount %**, **discount codes and the price with the code**, **cashback and the price after cashback**, availability and stock, **dispatch and release dates**, labels, gift with purchase, energy class, colour variants, key parameters and rating. Optionally you also get the **EAN (barcode)**, **MPN**, **warranty**, full technical parameters, the **price history** and the **stock in each Slovak store**.

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

For the Czech shop use the [Smarty.cz Scraper](https://apify.com/tsutseisoftware/smarty-scraper); both give the same output format (EUR instead of CZK), and the product and order codes are mostly the same in both shops.

> Smarty.sk here is the Slovak electronics retailer (Smarty SK s.r.o.), not the US address-verification company Smarty.

### Why use this Smarty.sk scraper?

- 🇸🇰 **The only Smarty.sk scraper** in Apify Store, with the same output as our [Smarty.cz Scraper](https://apify.com/tsutseisoftware/smarty-scraper), so Slovak and Czech prices of the same product can be compared directly (join on `productId`, `orderCode` or `ean`).
- 🏷️ **Prices as shown on the website, with cents:** price incl. VAT, price without VAT, crossed-out price and discount %, each in its own numeric field.
- 🎟️ **Promotions as data:** discount codes (`couponCode`, `couponPrice`), cashback (`cashbackEur`, `priceAfterCashback`) and gift value (`giftValueEur`), read from the listing without extra requests.
- 📦 **Availability as data:** `availability` (in stock, store only, at the supplier, in transit, pre-order…), `stockText` ("> 5 ks"), `dispatchDate` and `releaseDate` as ISO dates.
- 🎛️ **The website's own filters and sorting:** brand, in stock, **stock in specific stores**, price range, new goods only and **any parameter of the category** (operating system, RAM, 5G, colour…). Sorting by price or newest is done by the shop, so it's free and fast. Or just paste a URL with filters set on the website.
- 🔎 **Search, order codes and EANs:** up to 10 search queries and 100 order code / EAN lookups per run.
- 📈 **Optional price history and store stock** for each product.
- 📉 **Monitoring mode and price drop alerts:** only new or changed products, with `previousPrice`, `priceChange` and `priceChangePercent`, and optionally `removed` and `reappeared` products.
- ⚡ **Light:** no browser, one listing page gives 24 products. Optional **fast mode** about 5× faster for a tiny extra charge.

### What data can you get?

| Field | Example |
|---|---|
| Name, brand, order code | Apple iPhone 17 Pro 256GB kozmicky oranžový, Apple, 278120 |
| Price incl. / without VAT | 1 259,00 €, 1 023,58 € |
| Price before discount, discount | 1 379,00 €, 9 % |
| Discount code, price with the code | 5EXTRA (5 %), 847,31 €; app-only code price ("Len v aplikácii s kódom") 899,01 € |
| Cashback, price after cashback | 170 €, 829,00 € |
| Availability, stock | in_stock (Na sklade > 5 ks) |
| Dispatch, release date | Dnes → 2026-10-19; Zajtra; 23.10. (piatok) → 2026-10-23 |
| Labels, gift | Akcia, Upgrade bonus 60 €; Darček k nákupu v hodnote 7,99 € (7.99) |
| Energy class, colour variants | A; Čierna, Strieborná (with product URLs) |
| Used / open-box | `isUsedOrOpenBox`, `conditionLabel` ("Použité", "Rozbalené", "Zánovné") |
| Key parameters | Veľkosť pamäte RAM: 12 GB, Veľkosť úložiska: 256 GB, … |
| Rating | 5.0 |
| EAN, MPN (optional) | 195950627398, MG8H4SX/A |
| Warranty (optional) | 24 months (businesses 12 months) |
| Parameters, category path (optional) | Typ displeja: Super Retina XDR, …; Mobily a smart zariadenia › Apple › … |
| Price history (optional) | 2026-08: 1 232 €, 2026-09: 1 319 €, 2026-10: 1 259 € |
| Stock in stores (optional) | Bratislava - Avion: Na sklade 1 ks, pickup Do 60 min |

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

### How to scrape Smarty.sk

1. Open Smarty.sk, go to a category, e.g. `https://www.smarty.sk/mobily-4c13740`, and paste the URL into **Category or product URLs**. Product URLs (e.g. `https://www.smarty.sk/apple-iphone-17-pro-256gb-kozmicky-oranzovy-4p240056`) and search URLs (`https://www.smarty.sk/Vyhladavanie?query=powerbanka`) work too. Or type words into **Search queries**, or codes into **Order codes** / **EANs**.
2. Optionally choose **Sort by** (e.g. *Cheapest first*), **Site filters** (brand, availability, stores, parameters, new goods only) and **Filters**, and set **Max products** (and **Max products per URL** for several categories). Turn on **Add EAN, warranty and parameters**, **Add price history** or **Add stock in stores** if you need them.
3. 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.smarty.sk/mobily-4c13740?s=p#pr=833&st=1` (Apple, in stock, cheapest first). The actor keeps them.

### Use cases (ready-made inputs)

**The 20 cheapest phones in stock:**

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740" }],
  "sortBy": "cheapest",
  "siteAvailability": ["in_stock"],
  "excludeUsedOrOpenBox": true,
  "maxItems": 20
}
```

**Products with cashback** (price after cashback included):

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740" }],
  "onlyWithCashback": true,
  "maxItems": 0
}
```

**Look up your product list by EAN or order code** (e.g. to compare with your own prices; EAN lookups also return warranty and parameters):

```json
{
  "eans": ["195950627398", "0840353925977"],
  "orderCodes": ["278120", "P77778"]
}
```

**Watch prices below your target price** (schedule daily; you get a product when its price drops by 5 % or more and it is at most 800 €; the first run only records the current prices):

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740#pr=833" }],
  "maxPrice": 800,
  "onlyNewOrChanged": true,
  "monitoringKey": "apple-under-800",
  "minPriceDropPercent": 5,
  "maxItems": 0
}
```

**Daily monitoring of a whole category, with removed products:**

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740" }],
  "maxItems": 0,
  "onlyNewOrChanged": true,
  "includeRemovedProducts": true,
  "monitoringKey": "phones-daily"
}
```

**5G Android phones, cheapest first:**

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740" }],
  "sortBy": "cheapest",
  "parameterFilters": { "Operačný systém": "Android", "Najrýchlejšia dátová sieť": "5G", "Typ produktu": "Mobilné telefóny" },
  "maxItems": 20
}
```

**Search for products:**

```json
{
  "searchQueries": ["galaxy s25", "powerbanka"],
  "maxSearchPages": 2,
  "brands": ["Samsung", "Anker"]
}
```

**Products in stock in Bratislava stores, with stock per store:** `"stores": ["Bratislava"], "includeStoreStock": true`.

**Compare with Smarty.cz:** run the [Smarty.cz Scraper](https://apify.com/tsutseisoftware/smarty-scraper) on the same category URL path (e.g. `/mobily-4c13740`) and join both datasets on `productId` (EUR vs. CZK).

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

| Input | What it does |
|---|---|
| **Sort by** | Recommended (TOP), Cheapest first, Most expensive first, Newest first. |
| **Brands** | Only these brands, e.g. `Apple`, `Samsung`. |
| **Available** | In stock in total ("Skladom celkom"). |
| **In stock in store** | Specific stores, e.g. `Bratislava - Avion`, or `Bratislava` for all Bratislava stores. |
| **Parameter filters** | Any filter of the category: `{"Name": "value"}`, `{"Name": ["value 1", "value 2"]}` or ranges `{"Veľkosť pamäte RAM": "8-16"}`. "Typ produktu" (product type) works too; single checkboxes take `"áno"`. |
| **Exclude used and open-box products** | Uses the website's "Stav tovaru" filter where the category has used or open-box goods, and the product labels everywhere. |
| **Min / Max price** | Also passed to the shop's price filter when the category has one. |

Names are matched without case and diacritics; a unique beginning is enough (`operacny` → *Operačný systém*). If a name or value doesn't exist in a category, the log lists the available ones, and the category is skipped when nothing in it can match. The shop's brand filter lists only the most common brands of a category; for other brands the actor filters the products itself (reading more pages).

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

| Input | Example |
|---|---|
| **Only products in stock**, **Availability** | in stock / store only / at the supplier / in transit / pre-order / unknown |
| **Only discounted products**, **Min discount (%)** | crossed-out price, at least 15 % off |
| **Min price (EUR)**, **Max price (EUR)** | 200 – 800 |
| **Exclude brands**, **Name must contain**, **Name must not contain** | `256GB`, not `puzdro` |
| **Labels** | `Akcia`, `Cashback`, `Novinka`, `Posledná šanca` |
| **Only products with a discount code**, **Only products with cashback** | `couponCode` / `cashbackEur` is set |
| **Energy classes** | `A`, `B` |
| **Min rating**, **Min number of ratings**, **Only products with EAN** | 4.5, 5 |

When a filter needs the product page (**Min number of ratings**, **Only products with EAN**), the actor keeps reading the listing until **Max products** is reached.

**Advanced:** **Max pages per category** (24 products per page, default 50) and **Max requests per minute (normal speed)** (default 12, max. 20).

#### Search, order codes and EANs

**Search queries** (or search URLs in **Category or product URLs**) work like the website's search box: at most **10 queries per run**, 2–100 characters each, and **Max pages per search** result pages (24 products each, default 2, max. 5). When the site redirects a query to a category (e.g. "iphone") or a product list ("powerbanka"), that page is read instead, within the same page limit. Site filters and sorting apply to search results too.

**Order codes** ("Objednávací kód" on the product page, e.g. `278120`, `P77778`) and **EANs** are looked up through the website's search, at most **100 per run** together. An order code is matched on the first results page (2 requests); an EAN is confirmed on the product page (3 requests; new goods are preferred over used ones with the same EAN). Found products have `matchedBy` set to `orderCode` or `ean`; codes that aren't found are listed in the status message. If the site rejects a search page (also on a second attempt 30 seconds later), searching and lookups stop for the rest of the run.

#### Optional extras (one extra request per product each)

- **Add EAN, warranty and parameters:** reads the product page (EAN, MPN, warranty, technical parameters, category path, number of ratings).
- **Add price history:** the monthly prices in EUR from the product's "Vývoj ceny" tab (`priceHistory`: month, price and, when the chart shows it, the competitors' average price). Smarty.sk compiles this history and says the chart is illustrative and doesn't show every price change, so the actor doesn't derive "lowest price" values from it. Use it for your own analysis, not for republishing.
- **Add stock in stores:** the store popup (`storeStock`: store name, stock text as shown, `inStock`, pickup time) for the 7 Slovak stores and "Ostatné predajne" (other stores). No addresses or coordinates.

#### Fast mode (small extra charge)

Normal speed: one request at a time, at most 12 requests per minute (raise it to 20 with **Max requests per minute (normal speed)**). **Fast mode**: at most 60 requests per minute, 2 at a time; it switches back to the normal speed for the rest of the run as soon as Smarty.sk rejects a request, shows a challenge, asks to wait or slows down. Requests are spread over short proxy sessions in both modes.

#### 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 or price before discount** changed. **Monitoring: only price changes** narrows it to price changes, **Monitoring: min price drop (%)** to price drops. With **Monitoring: include removed products**, products that are no longer listed are returned once as `"removed"` (with their last known name, price and URL, and `removedAt`), and when they come back as `"reappeared"`. Removed products are checked only when the run read the whole listing (no **Max products** or page limit reached, no rejected pages). For monitoring, use category URLs rather than search queries.

### How much does it cost to scrape Smarty.sk?

You pay per saved product. Filtered-out and unchanged products (in monitoring mode) are free, and there are no extra charges for search, price history or store stock. A product saved with its product page (EAN and parameters, lookups) costs a little more, because the page goes through the residential proxy. The proxy is included.

| Plan | Per 1 000 products | + with the product page (details, lookups) | + Fast mode |
|---|---|---|---|
| FREE | **$0.95** | +$0.95 | +$0.01 |
| BRONZE | **$0.93** | +$0.93 | +$0.01 |
| SILVER | **$0.90** | +$0.90 | +$0.01 |
| GOLD and higher | **$0.85** | +$0.85 | +$0.01 |

That is $0.00095 per product on the Free plan (+$0.00095 with its product page), and $0.00001 per product for fast mode. See the **Pricing** tab for the current prices. Typical runs:

| Scenario | Requests | Time (normal / fast mode) | Price (FREE plan) |
|---|---|---|---|
| 20 products from a category | 1 | a few seconds | ~$0.02 |
| 1 000 products from a category | ~42 | ~4 min / ~1 min | ~$0.95 |
| 100 products with EAN and parameters | ~105 | ~9 min / ~2 min | ~$0.19 |
| 100 products with EAN, price history and store stock | ~305 | ~25 min / ~5 min | ~$0.19 |
| 10 EAN lookups | ~30 | ~3 min / ~30 s | ~$0.02 |
| 1 search query, 2 pages (48 products) | 3 | ~15 seconds | ~$0.05 |

### Input example

```json
{
  "startUrls": [{ "url": "https://www.smarty.sk/mobily-4c13740" }],
  "maxItems": 100,
  "sortBy": "cheapest",
  "brands": ["Samsung", "Xiaomi"],
  "includeDetails": false
}
```

### Output example

```json
{
  "id": "smarty-sk:278120",
  "source": "smarty.sk",
  "url": "https://www.smarty.sk/apple-iphone-17-pro-256gb-kozmicky-oranzovy-4p240056",
  "orderCode": "278120",
  "productId": "240056",
  "ean": "195950627398",
  "mpn": "MG8H4SX/A",
  "name": "Apple iPhone 17 Pro 256GB kozmicky oranžový",
  "brand": "Apple",
  "category": "Mobilné telefóny",
  "categoryPath": ["Mobily a smart zariadenia", "Apple", "Apple iPhone", "iPhone 17", "iPhone 17 Pro", "iPhone 17 Pro 256GB"],
  "price": 1259.0,
  "priceWithoutVat": 1023.58,
  "currency": "EUR",
  "priceBeforeDiscount": 1379.0,
  "discountPercent": 9,
  "isDiscounted": true,
  "cashbackEur": null,
  "priceAfterCashback": null,
  "couponCode": null,
  "couponDiscount": null,
  "couponPrice": null,
  "isUsedOrOpenBox": false,
  "conditionLabel": null,
  "availability": "in_stock",
  "availabilityText": "Na sklade > 5 ks",
  "stockText": "> 5 ks",
  "dispatchText": "Dnes",
  "dispatchDate": "2026-10-19",
  "releaseDate": null,
  "rating": 5.0,
  "reviewCount": 3,
  "labels": ["Akcia", "Upgrade bonus 60 €"],
  "giftText": null,
  "giftValueEur": null,
  "energyClass": "A",
  "colorVariants": null,
  "keyParameters": { "Typ displeja": "Super Retina XDR", "Veľkosť úložiska": "256 GB", "Veľkosť pamäte RAM": "12 GB" },
  "imageUrl": "https://doc.smarty.sk/pic/d_f770a09b8140454b809d700e840cdf62-600-600.webp",
  "position": 4,
  "warrantyMonths": 24,
  "warrantyMonthsBusiness": 12,
  "specifications": { "Typ displeja": "Super Retina XDR", "Veľkosť displeja": "6,3\"", "Čipová sada": "Apple A19 Pro" },
  "description": null,
  "priceHistory": [
    { "month": "2026-09", "price": 1319, "competitorAveragePrice": null },
    { "month": "2026-10", "price": 1259, "competitorAveragePrice": null }
  ],
  "storeStock": [
    { "store": "Bratislava - Avion", "stockText": "Na sklade 1 ks", "inStock": true, "pickupText": "Do 60 min" },
    { "store": "Ostatné predajne", "stockText": "Skladom celkom > 5 ks", "inStock": true, "pickupText": null }
  ],
  "detailScraped": true,
  "matchedBy": null,
  "changeType": null,
  "firstSeenAt": null,
  "previousPrice": null,
  "priceChange": null,
  "priceChangePercent": null,
  "removedAt": null,
  "sourceUrl": "https://www.smarty.sk/mobily-4c13740",
  "scrapedAt": "2026-10-19T10:00:00Z"
}
```

From category and search pages, `ean`, `mpn`, `warrantyMonths`, `specifications`, `categoryPath` and `reviewCount` are `null` unless **Add EAN, warranty and parameters** is on; `priceHistory` and `storeStock` are `null` unless their option is on. `keyParameters`, `giftText`, `colorVariants` and `position` come from listing pages.

### Limitations

- **Requests are spread over several proxy IPs.** Each proxy session (its own IP address and cookies) makes at most 3 requests, and the run uses up to 5 sessions at a time.
- **Challenges are never solved.** If Smarty.sk rejects a request (Cloudflare "Just a moment…"), the actor asks once more after 30 seconds from the same IP address and session (never from another IP); this recovers short-lived rejections. A listing page rejected twice is skipped and the actor goes on with the next page, so the results can be incomplete (with gaps in the sorted order); the status message says how many pages could not be read. After 3 rejections in a row the run stops and returns what it has. A product whose page, price history or store stock was rejected is returned with the data read so far (`detailScraped: false` without the product page), as long as it passes your filters.
- **Search and lookups** are limited to 10 queries (5 pages each) and 100 codes per run; if a search page is rejected twice, searching stops for the run.
- **EAN, MPN, warranty and parameters** are on the product page only: turn on **Add EAN, warranty and parameters** (one extra request per product). For product URLs and EAN lookups they are always included.
- **Price before discount** is the crossed-out price shown by the shop. The shop doesn't say whether it is a 30-day lowest price or a recommended price, so the actor returns it as is. **Price with the code** is shown by the shop on product tiles (also the app-only code price, "Len v aplikácii s kódom", without the code itself); otherwise it is computed from the label (rounded to cents).
- **Price without VAT** is returned as shown. Used goods exempt from VAT ("Oslobodené od DPH") have it equal to the price; tiles and pages that show only the price with a discount code don't show it (`null`).
- **Availability `unknown`** also covers products where the shop says "Expedícia bude upresnená" (dispatch to be specified); **`preorder`** covers "V predaji od …".
- **Used goods** in the "Použité" categories often show a "from" price (several pieces in different condition); the actor returns that lowest price.
- **Rating** on listing pages is the average shown by the shop; the number of ratings comes from the product page. Reviews themselves are not collected.
- **Sorting with equal prices:** the shop doesn't order products with the same price consistently between pages, so a product at a page boundary can occasionally be missed in very long sorted runs.
- **Descriptions:** only a ~200-character excerpt (**Add a short description excerpt**). Images are returned as URLs; product photos and texts are copyrighted, so check the rights before you republish them.

### For AI agents and API users

- **Minimal input:** `{"startUrls": [{"url": "https://www.smarty.sk/mobily-4c13740"}], "maxItems": 20}`, `{"searchQueries": ["powerbanka"], "maxItems": 20}` or `{"eans": ["195950627398"]}`.
- One row = one product = one charge (+ the fast-mode event when fast mode is on). Optional extras add 1 request per product each, same price per product.
- 24 products per listing page. `maxItems` counts saved products, `maxItemsPerStartUrl` limits each URL, search query or lookup.
- Prices are in EUR. `availability` is one of `in_stock`, `in_store_only`, `at_supplier`, `in_transit`, `preorder`, `out_of_stock`, `unknown`.
- `id` is `smarty-sk:<order code>` and stays the same between runs. Monitoring state is kept per `monitoringKey` between runs of the same user.
- The output has the same fields as the Smarty.cz Scraper, except `cashbackEur` and `giftValueEur` (instead of `cashbackCzk`, `giftValueCzk`) and the extra `matchedBy` and `removedAt`.

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("tsutseisoftware/smarty-sk-scraper").call(run_input={
    "startUrls": [{"url": "https://www.smarty.sk/mobily-4c13740"}],
    "sortBy": "cheapest",
    "maxItems": 100,
})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(product["name"], product["price"], product["couponPrice"], product["availability"])
```

#### JavaScript

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

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

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/tsutseisoftware~smarty-sk-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://www.smarty.sk/mobily-4c13740"}], "maxItems": 20}'
```

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 … not a category … or product URL` | Use a Smarty.sk category URL (…-4c<number>), product URL (…-4p<number>) or search URL (/Vyhladavanie?query=…). |
| `unknown store / parameter / value …` (log) | Use one of the names listed in the log for that category. |
| `… skipped because the site filters match nothing there` | No product in that category or search has the requested value. |
| `not found: …` | Smarty.sk has no product with that order code or EAN (or doesn't show it in its search). |
| `… listing pages could not be read, so the results may be incomplete` | Smarty.sk rejected some pages; run it again later for complete results. |
| `searching stopped because Smarty.sk rejected a search page` | Try later, or use the category the search would lead to. |
| `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 the whole listing (e.g. Max products reached); use `"maxItems": 0` for monitoring with removed products. |
| `Search is temporarily disabled` | Use category or product URLs. |
| `… could not be loaded` | The category or product doesn't exist anymore; open the URL in your browser. |
| `Smarty.sk is rejecting requests` | Keep the default proxy configuration (Apify Proxy, residential, Slovakia) and 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):

- [Datart.cz Scraper](https://apify.com/tsutseisoftware/datart-scraper): electronics: prices, 30-day low, EAN, store availability
- [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

### FAQ

#### Is it legal to scrape Smarty.sk?

The actor collects only publicly available product data (prices, availability, labels, parameters, EAN shown on the product page, the price history tab and the store stock popup) and no personal data: no reviews, questions or contacts. It does not log in, makes one request at a time and at most 12 per minute by default (20 at most; 60 in fast mode, with automatic slow-down), and never solves captchas or other challenges. How you use the data is your responsibility. Use it for price monitoring and analysis, and don't republish the catalogue, texts, photos or the price history. If unsure, consult a lawyer.

#### Is Smarty.sk the same as Smarty.cz?

Smarty.sk is the Slovak shop of the same retailer, run by Smarty SK s.r.o. (Bratislava) on the same website platform with the same categories and product IDs. This actor reads smarty.sk in EUR; the [Smarty.cz Scraper](https://apify.com/tsutseisoftware/smarty-scraper) reads smarty.cz in CZK with the same output fields.

#### Do I need a proxy?

It's already set up. Smarty.sk rejects requests from Apify's own server IP addresses and, for product pages and searches, from data-center proxy IPs, so the default **Proxy configuration** is Apify Proxy with residential IPs in Slovakia. The proxy is included in the price per product. Keep the default unless you have your own Slovak 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, price history or long EAN lists, when the time matters.

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

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

#### Something doesn't work

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

Unofficial, not affiliated with or endorsed by Smarty SK s.r.o. (Bratislava), the operator of Smarty.sk. This tool is also known as a Smarty.sk API, Smarty.sk price tracker or "sledovanie cien Smarty".

# Actor input Schema

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

Smarty.sk category URLs (e.g. https://www.smarty.sk/mobily-4c13740), product URLs (e.g. https://www.smarty.sk/apple-iphone-17-pro-256gb-kozmicky-oranzovy-4p240056) or search URLs (https://www.smarty.sk/Vyhladavanie?query=powerbanka). Tip: set filters and sorting on the website and paste the URL (e.g. …/mobily-4c13740?s=p#pr=833\&st=1); the actor keeps them.

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

Search Smarty.sk like in the website's search box, e.g. 'powerbanka', 'usb-c kábel'. At most 10 queries per run, 2–100 characters each. When the site redirects a query to a category or product, that page is read instead (within Max pages per search).

## `orderCodes` (type: `array`):

Look up products by Smarty order code ("Objednávací kód" on the product page, e.g. 278120 or P77778), through the website's search. At most 100 order codes and EANs together per run. Each found product is returned with matchedBy: "orderCode".

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

Look up products by EAN (barcode, 8–14 digits with a valid check digit), through the website's search and the product page (to confirm the EAN; new goods first). Each found product is returned with EAN, warranty and parameters and matchedBy: "ean".

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

How many result pages (24 products each) to read for each search query, at most 5.

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

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

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

Limit for each start URL, search query or lookup 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 the EAN (barcode), MPN (manufacturer part number), warranty, technical parameters, category path and number of ratings. Slower: one extra request per product (at most 20 requests per minute).

## `includeDescription` (type: `boolean`):

Add the first ~200 characters of the product summary. Reads the product page (like "Add EAN, warranty and parameters"), so it is slower.

## `includePriceHistory` (type: `boolean`):

Add the monthly prices in EUR from the product's "Vývoj ceny" tab (and the competitors' average price when the chart shows it). Optional and slower: one extra request per product. The history is compiled by Smarty.sk; use it for your own analysis, not for republishing.

## `includeStoreStock` (type: `boolean`):

Add the stock in each Smarty store in Slovakia (Bratislava, Košice, Banská Bystrica, Nitra, Trnava…) as shown in the website's store popup (store name, stock text, pickup time). Optional and slower: one extra request per product.

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

Order of products, as on the website. Sorting is done by the shop, so it's free and fast.

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

Only these brands, e.g. 'Apple', 'Samsung'. Case doesn't matter. The shop filters the most common brands of the category; for other brands the actor filters the products itself.

## `siteAvailability` (type: `array`):

Only products in stock, as in the website's filter "Skladom celkom" (in stock in the warehouse or stores).

## `stores` (type: `array`):

Only products in stock in these stores, e.g. 'Bratislava - Avion' or just 'Bratislava' (all Bratislava stores). Several values = any of them.

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

Filter by the category's parameters, as in the website's filter panel. Keys are filter names, values are a value or a list of values (any of them); ranges as "min-max". Example for phones: {"Operačný systém": "Android", "Najrýchlejšia dátová sieť": "5G", "Veľkosť pamäte RAM": "8-16", "Typ produktu": "Mobilné telefóny"}. Available names and values are listed in the log when a name isn't found.

## `excludeUsedOrOpenBox` (type: `boolean`):

Skip used (použité), open-box (rozbalené) and like-new (zánovné) products. Uses the website's "Stav tovaru" filter where the category has one, and the product labels everywhere.

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

Keep only products shown as in stock ('Na sklade …', 'Skladom …'). Store-only, supplier and in-transit products are skipped.

## `availability` (type: `array`):

Keep only products with these availability states.

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

Keep only products shown with a crossed-out price.

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

Keep only products discounted by at least this many percent (as shown by the shop).

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

Keep only products with price (incl. VAT) at least this.

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

Keep only products with price (incl. VAT) at most this. Tip: combine with Sort by: Cheapest first.

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

Skip products of these brands, e.g. 'Aligator'. Case and diacritics don't matter.

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

Keep only products whose name contains at least one of these words (case and diacritics don't matter), e.g. '256GB'.

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

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

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

Keep only products with a label containing one of these words, e.g. 'Akcia', 'Cashback', 'Novinka', 'Posledná šanca'.

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

Keep only products with a discount code label, e.g. "Zľava 5 % s kódom 5EXTRA" (see couponCode and couponPrice in the output).

## `onlyWithCashback` (type: `boolean`):

Keep only products with a cashback promotion, e.g. "Cashback 170 €" (see cashbackEur and priceAfterCashback in the output).

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

Keep only products with one of these energy classes (shown on the product tile, e.g. phones and TVs). Products without an energy class are skipped when set.

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

Keep only products rated at least this (0–5 stars). Products without ratings are skipped when set.

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

Keep only products with at least this many ratings. Reads the product pages (like "Add EAN, warranty and parameters").

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

Skip products without an EAN (barcode). Reads the product pages (like "Add EAN, warranty and parameters").

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

Return only products that are new or whose price, availability or price before discount changed since the previous run with the same Monitoring key. Unchanged products are free.

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

Name of the saved state. Use a different key for each tracked set of products (e.g. 'phones-daily').

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

With monitoring: return new products and products whose price changed, not availability-only changes.

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

With monitoring: return only products whose price dropped by at least this many percent (price drop alerts).

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

With monitoring: also return products that disappeared since the previous run (changeType: "removed", with their last known values), and products that are back ("reappeared"). Checked only when the run read everything (no Max products or page limit reached, no rejected pages).

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

About 5× faster: up to 60 requests per minute, 2 at a time, for a small extra charge per product saved at that speed (see Pricing). Switches back to the normal speed (no extra charge) as soon as Smarty.sk rejects a request, shows a challenge or slows down.

## `maxRequestsPerMinute` (type: `integer`):

To keep the load on the shop low the actor makes one request at a time, by default at most 12 per minute (max. 20). Fast mode ignores this.

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

Safety limit for each category (24 products per page). 0 = no limit.

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

Smarty.sk rejects requests from Apify's own IP addresses and, for product pages and searches, from data-center proxy IPs, so the default is Apify Proxy with residential IPs in Slovakia. Requests are spread over a few proxy sessions (a different IP every 3 requests). You can also use your own Slovak proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.smarty.sk/mobily-4c13740"
    }
  ],
  "maxSearchPages": 2,
  "maxItems": 20,
  "maxItemsPerStartUrl": 0,
  "includeDetails": false,
  "includeDescription": false,
  "includePriceHistory": false,
  "includeStoreStock": false,
  "sortBy": "recommended",
  "parameterFilters": {},
  "excludeUsedOrOpenBox": false,
  "onlyInStock": false,
  "onlyDiscounted": false,
  "onlyWithCoupon": false,
  "onlyWithCashback": false,
  "onlyWithEan": false,
  "onlyNewOrChanged": false,
  "monitoringKey": "default",
  "onlyPriceChanges": false,
  "includeRemovedProducts": false,
  "fastMode": false,
  "maxRequestsPerMinute": 12,
  "maxPagesPerCategory": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "SK"
  }
}
```

# 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.smarty.sk/mobily-4c13740"
        }
    ],
    "maxItems": 20,
    "parameterFilters": {},
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "SK"
    }
};

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

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

```

## MCP server setup

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