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

Scrape NAY.sk (Slovak electronics shop, formerly Datart SK) by category, search, product code, EAN or URL: EUR prices, 30-day low, discount codes, stock per store, EAN, parameters. Website filters, monitoring. Unofficial.

- **URL**: https://apify.com/tsutseisoftware/nay-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

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

Scrape products and prices from **NAY.sk**, the second-largest electronics shop in Slovakia (TVs, phones, laptops, appliances, small appliances, gaming, smart home and more). NAY is the **Slovak Datart**: since September 2024 the Slovak Datart stores and datart.sk run under the NAY brand on the same shop platform. For the Czech shop use the [Datart.cz Scraper](https://apify.com/tsutseisoftware/datart-scraper); both give the same output format.

Start from a **category**, a **category overview**, a **brand page**, the **sale of last pieces**, **search terms**, **product URLs**, or your own list of **NAY product codes or EANs**. For each product you get the name, brand, product code, the current **price in EUR with cents**, the **lowest price of the last 30 days** and the real **discount** against it, **availability** ("Ihneď na odoslanie", "U dodávateľa", "Nie je skladom"), the **number of NAY stores** with the product and the **delivery date**, the rating and number of reviews, labels ("doprava zadarmo", "+DARČEK"), the short specification line, **bazaar offers** (second-hand, unpacked, like new) with the price of the new product, and the cheapest bazaar offer of a new product.

Optionally you also get the **product page details**: **EAN**, **all technical parameters**, the **discount code and the price with it** ("Cena s kódom"), the end of the promotion, energy class, warranty, description and downloadable documents (energy label sheet, manuals); and the **stock in each of the ~55 NAY stores** with pickup times and the home delivery options with dates and prices.

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

### Why use this NAY.sk scraper?

- 🇸🇰 **The only NAY.sk scraper** in Apify Store, with the same output format as our [Datart.cz Scraper](https://apify.com/tsutseisoftware/datart-scraper) (`id`, `price`, `lowestPrice30Days`, `availability`, `ean`…), so Slovak and Czech prices of the same product can be compared directly (the product codes are mostly the same).
- 💶 **Prices you can trust:** EUR with cents, the lowest price of the last 30 days, `isDiscounted` only when the price is really below it, the discount in percent, the **price with the discount code** and its end date, checked against the website on real products.
- 🎛️ **The website's own filters and sorting:** brand, **any parameter of the filter panel** (display technology, screen size, refresh rate… also ranges), condition (new or bazaar) and bazaar state, **in stock**, **in stock in a given store** and the **price range**, applied by NAY.sk itself, so pages contain only matching products. Or just paste a URL with filters set on the website.
- 🏬 **Stock in each NAY store** (Bratislava, Košice, Žilina, Nitra…): pieces, unpacked pieces, pickup time, and the home delivery options with dates and prices.
- 🔢 **Your own product list:** NAY product codes or **EANs**, found with the website's search; the product page confirms each EAN.
- ♻️ **Bazaar offers** flagged (`condition`: unpacked, like new, cosmetic defect, minor damage) with the price of the new product, and filterable.
- 📉 **Monitoring mode and price drop alerts:** only new or changed products, with `previousPrice`, `priceChange` and `priceChangePercent`; removed and reappeared products on request.
- ⚡ **Light:** no browser; the next listing pages come as the small JSON answer the website's own "Načítať ďalšie" button gets, and product pages are read only up to the reviews. Optional **fast mode** about 3× faster for a tiny extra charge.

### What data can you get?

Share of products with a value, measured on live runs from 2026-10-14 (TVs, a brand page, a filtered listing, search "lg oled", lookups). Fields marked *optional* need the input in brackets.

| Field | Example | Filled |
|---|---|---|
| Name, product code, brand, internal ID | Televízor LG OLED55C66LB, LGGOLED55C66, LG | 100 % |
| Price (EUR incl. VAT, with cents) | 1 599.00, 355.00, 121.90 | 100 % of products with a price |
| Lowest price of the last 30 days | 1 799.00 | ~85 % (new products have none yet) |
| Discount (real, below the 30-day low) | `isDiscounted: true`, 11 % | discounted products (~30 % in October) |
| Availability, text | `in_stock`, "Ihneď na odoslanie" | 100 % |
| Number of stores, delivery date | "Skladom v 23 predajniach" → 23, 2026-10-16 | ~85 % / ~70 % (in-stock products) |
| Rating, reviews | 4.7, 6 | ~75 % (only the numbers, never names or texts) |
| Labels, summary line, image | `["doprava zadarmo"]`, "55" (139 cm) uhlopriečka • 4K UHD…" | ~90 % / 100 % / 100 % |
| Condition, bazaar price from | `likeNew`, 1 248.90 | 100 % / products with bazaar offers |
| Category, category path | Televízory, TV, foto, audio video › Televízory | listings 100 %, search results with details |
| EAN, parameters, documents *(Add product page details)* | 8806096685839, ~95 parameters, 2–3 PDFs | 100 % of product pages |
| Price with code, code, promotion end *(details)* | 1 199.20, 1026ZLAVT25H, 2026-10-31 | products with a code (all 5 discounted TVs of our 6-TV sample) |
| Energy class, warranty, description *(details)* | G, 24 months, the full text | products with an energy label / 100 % |
| Stock per store, delivery options *(Add stock per store)* | Bratislava - Nivy: 2 ks, pickup tomorrow 09:30; NAY DOPRAVA free | 100 % of in-stock products |

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

### How to scrape NAY.sk

1. Open NAY.sk, go to a category, e.g. `https://www.nay.sk/televizory`, and paste the URL into **Category, brand, sale, search or product URLs**. Category overviews (`https://www.nay.sk/tv-foto-audio-video`), brand pages (`https://www.nay.sk/samsung`), the sale (`https://www.nay.sk/vypredaj-poslednych-kusov`), search results and product URLs work too. Or type **Search terms**, or paste **Product codes** or **EANs**.
2. Optionally choose **Sort by**, the **Website filters** and **Filters**, and set **Max products**. Turn on **Add product page details** or **Add stock per store** 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.nay.sk/televizory/filter/v:-4:-7142582/o:3` (Samsung, cheapest first). The actor keeps them.

### Use cases

Copy an input into the **JSON** tab of the input and adjust it.

**Cheapest Samsung and LG OLED TVs in stock between 800 and 2 000 EUR:**

```json
{
  "startUrls": [{ "url": "https://www.nay.sk/televizory" }],
  "brands": ["Samsung", "LG"],
  "parameterFilters": { "Technológia displeja": ["OLED"] },
  "onlyInStock": true,
  "minPrice": 800,
  "maxPrice": 2000,
  "sortBy": "cheapest",
  "maxItems": 100
}
```

**Daily price tracker of a category with price drop alerts (schedule it):**

```json
{
  "startUrls": [{ "url": "https://www.nay.sk/mobilne-telefony" }],
  "maxItems": 0,
  "onlyNewOrChanged": true,
  "monitoringKey": "nay-phones",
  "minPriceDropPercent": 5
}
```

**Your products by EAN, with discount codes and stock per store:**

```json
{
  "eans": ["8806096685839", "8806099120481"],
  "includeStoreAvailability": true
}
```

**What is in stock in a store today (Bratislava - Aupark):**

```json
{
  "startUrls": [{ "url": "https://www.nay.sk/televizory" }],
  "availableInStores": ["Bratislava - Aupark"],
  "includeStoreAvailability": true,
  "maxItems": 50
}
```

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

```json
{
  "startUrls": [{ "url": "https://www.nay.sk/televizory" }],
  "productCondition": "bazaar",
  "bazaarStates": ["likeNew", "unpacked"],
  "maxItems": 100
}
```

**Compare with Datart.cz:** run the [Datart.cz Scraper](https://apify.com/tsutseisoftware/datart-scraper) on the same category and join both datasets on `productCode` or `ean` (EUR vs. CZK).

### Input

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

**Sort by**, **Only these brands**, **Exclude brands**, **Min price (EUR)**, **Max price (EUR)**, **Condition**, **Bazaar state**, **Only products in stock**, **In stock in these stores** and **Parameter filters** are taken from the filter panel of each listing, so NAY.sk sends only matching products. Names that a listing doesn't have are reported in the log together with the options it has. The actor checks the products again (also the price with cents).

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

**Only discounted products**, **Min discount (%)**, **Name must contain**, **Name must not contain**, **Min rating**, **Min number of reviews**, **Only with labels**, **Exclude bazaar products**, and the product page filters **Only with EAN**, **Energy classes**, **Min warranty (months)** and **Only with a discount code** (these turn on the product page details). Places freed by filtered-out products are filled with the next products, so **Max products** is met.

#### Search terms, codes and EANs

**Search terms** use the website's own search (at most 10 per run, one at a time, **Max pages per search**). **Product codes** must match exactly. **EANs** are confirmed on the product page, so each EAN costs one product page read and the row always has the details.

#### Fast mode (small extra charge)

Normal speed: at most 40 requests per minute, 2 at a time (lower it with **Max requests per minute (normal speed)**). **Fast mode**: at most 120 per minute, 4 at a time; it switches back to the normal speed for the rest of the run as soon as the website answers "too many requests", "service unavailable", "forbidden", shows a challenge or slows down.

#### Other inputs

**Description length** limits the description (with details), **Max pages per category** and **Max pages per search** limit the listings, **Max products per URL** limits each start URL, and **Proxy configuration** should stay at the default (Apify residential proxy, Slovakia).

#### 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, 30-day lowest price, discount or availability** changed. `previousPrice`, `priceChange` and `priceChangePercent` are filled when the price changed. Ratings, labels, store counts and delivery dates are not compared.

- **Monitoring: only price changes** narrows it to price changes, **Monitoring: min price drop (%)** to price drops.
- **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"`. It is checked only after a run that read everything it was asked for (not when **Max products**, **Max products per 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 NAY.sk?

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 (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 |

A product saved with its product page (**Add product page details**, EAN lookups) costs a little more, because the page goes through the residential proxy. Stock per store and removed-product rows don't change the price. There is also a tiny start fee of $0.00005 per run.

Typical runs (measured locally and offline on 2026-10-14; one listing page = 22 products, search pages 24):

| Scenario | Requests | Time (normal / fast mode) | Price (FREE plan) |
|---|---|---|---|
| 20 products from a category (the prefilled input) | 1 | ~5 s | $0.02 |
| 1 000 products from a category | 46 | ~1.5 min / ~30 s | $0.95 |
| 1 000 products with product page details | ~1 046 | ~27 min / ~9 min | $1.90 |
| 100 products with details and stock per store | ~205 | ~5 min / ~2 min | $0.19 |
| 100 EANs | ~200 | ~7 min / ~5 min (lookups run one at a time) | $0.19 |
| 1 search term, 72 results (3 pages) | 3 | ~15 s | $0.07 |

### Input example

```json
{
  "startUrls": [{ "url": "https://www.nay.sk/televizory" }],
  "maxItems": 100,
  "sortBy": "cheapest",
  "includeDetails": true
}
```

### Output example

```json
{
  "id": "nay:LGGOLED55C66",
  "source": "nay.sk",
  "url": "https://www.nay.sk/televizor-lg-oled55c66lb",
  "productCode": "LGGOLED55C66",
  "internalId": "2000330",
  "name": "Televízor LG OLED55C66LB",
  "brand": "LG",
  "category": "Televízory",
  "categoryPath": ["TV, foto, audio video", "Televízory"],
  "price": 1599.0,
  "currency": "EUR",
  "lowestPrice30Days": 1799.0,
  "isDiscounted": true,
  "isRefurbished": false,
  "newProductPrice": null,
  "discountPercent": 11.0,
  "availability": "in_stock",
  "availabilityText": "Ihneď na odoslanie",
  "storeAvailabilityText": "Skladom v 50 predajniach",
  "storeCount": 50,
  "deliveryText": "u vás už 16. 10. 2026",
  "deliveryDate": "2026-10-16",
  "rating": 4.7,
  "reviewCount": 6,
  "labels": ["ZĽAVOVÝ SUPERTÝŽDEŇ 25 %", "doprava zadarmo", "nay doprava zadarmo"],
  "specSummary": "55\" (139 cm) uhlopriečka • 4K UHD Smart televízia • OLED displej • …",
  "imageUrl": "https://image.nay.sk/foto/500/3/4/9/product_8297943.jpg",
  "ean": "8806096685839",
  "specifications": { "Technológia displeja": "OLED", "Uhlopriečka obrazovky": "139 cm (55\")", "Záruka": "24 mesiacov" },
  "detailScraped": true,
  "sourceUrl": "https://www.nay.sk/televizory",
  "scrapedAt": "2026-10-14T10:00:00Z",
  "position": 4,
  "condition": "new",
  "bazaarPriceFrom": null,
  "couponPrice": 1199.2,
  "couponCode": "1026ZLAVT25H",
  "promoLabel": "EXTRA CENA",
  "promoValidUntil": "2026-10-31T23:59:59+01:00",
  "energyClass": "G",
  "warrantyMonths": 24,
  "description": "55\" (139 cm) uhlopriečka • 4K UHD Smart televízia …",
  "documents": [{ "name": "Návod na použitie SK Televízor LG OLED55C66LB", "url": "https://image.nay.sk/document/6/4/7/doc_8488746.pdf" }],
  "storeAvailability": [{ "store": "Bratislava - Nivy", "region": "Bratislavský", "inStock": true, "pieces": 2, "unpackedPieces": 1, "stockText": "posledný kus", "pickupFrom": "2026-10-15T09:30", "deliveryToStoreFrom": null }],
  "storesInStock": ["Bratislava - Nivy"],
  "deliveryOptions": [{ "name": "NAY DOPRAVA", "date": "2026-10-16", "price": 0.0, "priceText": "zadarmo" }],
  "searchQuery": null,
  "matchedBy": null,
  "changeType": null,
  "firstSeenAt": null,
  "previousPrice": null,
  "priceChange": null,
  "priceChangePercent": null,
  "removedAt": null
}
```

### Limitations

- **Proxy.** NAY.sk answers data-center IP addresses (Apify's own and Apify datacenter proxy) with a JavaScript challenge, so the default is Apify residential proxy in Slovakia; it is included in the price. The actor never solves challenges or captchas.
- **Discounts** are against the lowest price of the last 30 days that the shop shows; the price with a discount code (`couponPrice`) is only on the product page, so it needs **Add product page details**.
- **Search results** don't say the category; it comes with the product page details. Search pages also list loosely matching products further down: keep **Max pages per search** low.
- **EAN** is only on the product page: turn on details, or look products up by **EANs**. An EAN lookup counts as found only when the website's search returns a single product and its page has the same EAN.
- **Stock per store** is what the website's "Rezervovať / where to pick it up" window says at the moment of the run; it is read for products that can be reserved (out-of-stock products have an empty list).
- **Ratings and reviews:** only the average and the number of reviews, never reviewer names or texts.
- **Photos and texts** are returned as URLs and plain text; they are copyrighted, so check the rights before you republish them.
- **Large listings:** **Max pages per category** defaults to 50 pages (1 100 products), up to 500.
- If the site rejects a request, it is asked once more after 30 seconds from the same IP address and session (never from another IP). If it rejects a few requests in a row even so, the run stops and says so. When only the stock per store is rejected, it is turned off for the rest of the run and the run goes on. Products whose page couldn't be read are returned with the listing data (`detailScraped: false`).

### For AI agents and API users

- **Minimal input:** `{"startUrls": [{"url": "https://www.nay.sk/televizory"}], "maxItems": 20}`, or `{"searchQueries": ["lg oled"], "maxItems": 10}`, or `{"eans": ["8806096685839"]}`.
- One row = one product = one charge (+ the fast-mode event when fast mode is on). Details and stock per store don't change the price per product.
- 22 products per listing page, 24 per search page. `maxItems` counts saved products, `maxItemsPerStartUrl` limits each URL, search term or the code list.
- Prices are in EUR incl. VAT with cents. `availability` is `in_stock`, `in_store_only`, `on_order`, `preorder`, `out_of_stock` or `unknown`. `condition` is `new`, `unpacked`, `likeNew`, `cosmeticDefect`, `minorDamage`, `refurbished` or `used`.
- The output has the same fields as the Datart.cz Scraper (plus NAY's own), so both datasets can be merged.
- 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/nay-scraper").call(run_input={
    "startUrls": [{"url": "https://www.nay.sk/televizory"}],
    "sortBy": "cheapest",
    "maxItems": 100,
})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(product["name"], product["price"], product["lowestPrice30Days"], product["availability"])
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('tsutseisoftware/nay-scraper').call({
    searchQueries: ['lg oled'], maxItems: 10,
});
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~nay-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"eans": ["8806096685839"], "productCodes": ["SAMUE43U8072H"], "includeStoreAvailability": true}'
```

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 NAY.sk category, category overview, brand, sale, search or product URL (cart, account and article pages have no product list). |
| `Ignored URL parameters …` (log) | The URL has parameters the actor doesn't use; use the website's own filters (`/filter/…`) or the input fields. |
| `unknown brands …` / `unknown parameter …` (log) | Use one of the options listed in the log for that listing. |
| `… skipped because the website filters match nothing there` | No product of that listing has the requested brand, condition or value. |
| `no products: …` | The listing or search is empty (with these filters). |
| `not found: …` | The website's search found no product with exactly this code, or the EAN didn't match. |
| `… lookups found a product already saved in this run` | Two of your codes or EANs belong to the same product; it is saved once. |
| `… could not be loaded` | The page doesn't exist (anymore); open the URL in your browser. |
| `stopped at the page limit …` | Raise **Max pages per category** or **Max pages per search**. |
| `stock per store turned off (…)` | The site rejected the stock-per-store window; the products are saved without it. Run again later. |
| `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** reached); removed products are checked in a complete run. |
| `NAY.sk is rejecting requests` | Keep the default proxy (residential, Slovakia) and try again later. |
| `… listing pages could not be read, so the results may be incomplete` | The site didn't answer some pages; run it again later for complete results. |
| `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
- [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

### FAQ

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

The actor collects publicly available product data (prices, availability, stock per store, parameters, documents) that anyone sees on the website without logging in. It reads the same pages and page parts a browser loads on NAY.sk (the product list, its "next page" answer, the product page and the "where to pick it up" window), does not log in, makes at most 40 requests per minute by default (120 in fast mode, with automatic slow-down) and never solves captchas or other challenges. It returns no personal data: only the average rating and the number of reviews, never reviewer names or texts. How you use the data is your responsibility. Use it for price monitoring and analysis, and don't republish the catalogue, texts or photos. If unsure, consult a lawyer. Objections and data protection requests: the **Issues** tab of this actor.

#### Is NAY.sk the same as Datart?

Yes, NAY.sk is the Slovak Datart: since September 2024 the Slovak Datart shops run under the NAY brand (datart.sk redirects to nay.sk) on the same platform. This actor reads nay.sk in EUR; the [Datart.cz Scraper](https://apify.com/tsutseisoftware/datart-scraper) reads datart.cz in CZK with the same output fields.

#### Do I need a proxy?

The default proxy (Apify residential, Slovakia) is needed, because NAY.sk rejects data-center IP addresses; it is already included in the price per product, so just keep the default.

#### 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 and long EAN lists, when the time matters.

#### Why is the EAN empty?

The EAN is only on the product page. Turn on **Add product page details**, or look products up by **EANs**.

#### 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 NAY a.s. (Bratislava), the operator of NAY.sk. This tool is also known as a NAY.sk API, NAY price tracker, Datart SK scraper or "sledovanie cien NAY".

# Actor input Schema

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

NAY.sk URLs: a category (e.g. https://www.nay.sk/televizory), a category overview (https://www.nay.sk/tv-foto-audio-video, its categories are read one after another), a brand page (https://www.nay.sk/samsung), a sale (https://www.nay.sk/vypredaj-poslednych-kusov), search results (https://www.nay.sk/vyhladavanie?q=lg+oled) or a product (incl. bazaar products /bazar/…). Tip: set filters and sorting on the website and paste the URL (…/filter/…); the actor keeps them. ?page=N starts at that page.

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

Searched with the website's own search, in its order (e.g. "lg oled", "iphone 17"). Up to 10 terms per run, one at a time; "Max pages per search" limits each.

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

NAY product codes (the "data-match" code, the end of the id field, e.g. LGGOLED55C66; mostly the same as on Datart.cz). Each is looked up with the website's search; only an exact code match is returned.

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

EAN barcodes (check digit verified). The website's search finds the product and the product page confirms the EAN (one product page per EAN, so details are included). Up to 500 codes and EANs per run.

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

Maximum number of products saved (and charged) in total. 0 = no limit.

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

Maximum number of products from each start URL or search term (and from all codes, or all EANs). 0 = no limit.

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

Reads each product page (one request per product, only its top part): EAN, all technical parameters, description, documents (energy label sheet, manuals), energy class, warranty, discount code and its price ("Cena s kódom"), promotion end. Turned on automatically by filters that need it.

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

Maximum characters of the description (with details). 0 = the whole text.

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

Stock in each NAY store as the website's "where to pick it up" window shows it (pieces, unpacked pieces, pickup time, delivery to the store) and the home delivery options with dates and prices. One extra request per product.

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

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

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

Brands as in the website's "Značky" filter, e.g. Samsung, LG.

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

Never these brands (the website's brand filter with all other brands).

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

Lowest price incl. VAT (the website's price filter, checked again by the actor with cents).

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

Highest price incl. VAT (the website's price filter, checked again by the actor with cents).

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

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

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

The website's "Bazár - stav tovaru" (any of the chosen).

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

The website's "Ihneď k odoslaniu" filter; the actor also drops products whose availability is not "in stock".

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

The website's "Dostupnosť na predajni" filter, e.g. "Bratislava - Aupark", "Košice", "Žilina"; 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. {"Technológia displeja": \["OLED"], "Uhlopriečka obrazovky": \["55" (139 cm)"], "Šírka vrátane stojana": {"min": 100, "max": 125}}. Unknown names or values are reported in the log with the options.

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

Only products whose price is below the lowest price of the last 30 days.

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

Only products with at least this discount against the 30-day low.

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

Any of these words (case and diacritics ignored).

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

None of these words (case and diacritics ignored).

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

Only products rated at least this (0-5).

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

Only products with at least this many reviews.

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

Only products with one of these labels, e.g. "doprava zadarmo", "+DARČEK".

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

Drops second-hand and opened ("bazár") offers (same as Condition: new only).

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

Only products with an EAN (turns on product page details).

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

Only these energy classes (turns on product page details).

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

Only products with at least this warranty (turns on product page details).

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

Only products whose page shows a discount code ("Cena s kódom"; turns on product page details).

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

Saves (and charges) only products that are new or whose price, availability, 30-day low or discount changed since the previous run with the same monitoring key. Ideal for scheduled runs (sledovanie cien).

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

Name of the saved state. Use a different key for each tracked list.

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

Of the changed products, only those whose price changed (new products are still saved).

## `minPriceDropPercent` (type: `number`):

Only products whose price fell by at least this many percent since the previous run.

## `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 NAY.sk about 3x faster: at most 120 requests per minute and 4 at a time instead of 40 per minute and 2 at a time. It stays polite: the moment the website answers "too many requests", "service unavailable", "forbidden", shows a challenge or slows down, the run switches back to the normal speed for the rest of the run; it waits when the website asks it to wait and 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.

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

All requests together (pages, product pages, stock per store). At most 60.

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

Listing pages (22 products each) read per category, brand or sale URL (and per category of an overview).

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

Result pages (24 products each) read per search term. The website's search also lists loosely matching products further down.

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

NAY.sk answers data-center IP addresses (Apify's own and Apify datacenter proxy) with a JavaScript challenge, so the default is Apify residential proxy in Slovakia (included in the price).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.nay.sk/televizory"
    }
  ],
  "searchQueries": [],
  "maxItems": 20,
  "maxItemsPerStartUrl": 0,
  "includeDetails": false,
  "descriptionMaxLength": 1000,
  "includeStoreAvailability": false,
  "sortBy": "default",
  "productCondition": "any",
  "onlyInStock": false,
  "parameterFilters": {},
  "onlyDiscounted": false,
  "excludeRefurbished": false,
  "onlyWithEan": false,
  "onlyWithCoupon": false,
  "onlyNewOrChanged": false,
  "monitoringKey": "default",
  "onlyPriceChanges": false,
  "includeRemovedProducts": false,
  "fastMode": false,
  "maxRequestsPerMinute": 40,
  "maxPagesPerCategory": 50,
  "maxSearchPages": 3,
  "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.nay.sk/televizory"
        }
    ],
    "searchQueries": [],
    "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/nay-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.nay.sk/televizory" }],
    "searchQueries": [],
    "maxItems": 20,
    "parameterFilters": {},
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "SK",
    },
}

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

```

## MCP server setup

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