# Alza Scraper (CZ, SK, HU, AT, DE) – Prices, Specs & MPN (`ewood2020/alza-catalog-builder`) Actor

Returns one row per product from Alza category pages on alza.cz, .sk, .hu, .at and .de: price with currency (CZK, EUR, HUF), regularPrice, discountPercent, MPN, brand, full spec sheet, categoryPath, variants and url. Input: category URLs; countries can be mixed.

- **URL**: https://apify.com/ewood2020/alza-catalog-builder.md
- **Developed by:** [Enrique Wood](https://apify.com/ewood2020) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Alza Scraper – Catalog Builder (CZ, SK, HU, AT, DE)

**Get Alza products as clean, structured catalog data, not just titles and prices.**

Other Alza scrapers give you a list. This one gives you a catalog you can import, compare or analyze straight away: the real sale price next to the original price, the manufacturer part number, the full technical spec sheet as structured fields, and a clean category path.

### What makes it different

| | Typical Alza scraper | This Actor |
|---|---|---|
| Price | One price, often the strike-through one | **Sale price, original price and discount %** |
| Product identity | Alza order code | Alza code **+ manufacturer part number (MPN) + brand** |
| Specs | Name and maybe a description | **Full spec sheet as key-value fields** (30–50 per product) |
| Categories | Alza breadcrumb | **Clean category path** + family / model, plus the original breadcrumb |
| Variants | Only the page you gave it | **Colour and storage variants as separate rows** (beta) |

**Why MPN matters:** Alza does not publish EAN barcodes on its product pages. Brand + MPN is the identifier that lets you find the same product in other shops, in your supplier's price list, or in a product content database.

### Who it's for

- **E-shops** building or refreshing a catalog (WooCommerce, Shoptet, PrestaShop): import-ready rows with categories and specs.
- **Pricing and category managers** tracking Alza's prices and discounts in a category.
- **Brands and distributors** checking how their products are listed, priced and rated on Alza.

### Quick start

1. Paste one or more Alza **category** URLs, e.g. `https://www.alza.cz/EN/lcd-monitors/18842948.htm`.
2. Set how many products per category.
3. Run. Export the results as Excel, CSV or JSON, or pull them through the API.

Works on all five Alza shops: **alza.cz, alza.sk, alza.hu, alza.at and alza.de**, and you can mix countries in one run. Tested in the cloud on 25 Oct 2026 on every domain: each product comes with the right currency (CZK, EUR or HUF), sale and original price, MPN, brand and the full spec sheet. Category IDs are the same across countries, so `…/18842948.htm` is the monitor category on every domain. The `/EN/` versions of alza.cz return English names and specs; the other domains return specs in their local language.

### Output example

```json
{
  "sku": "WC118a12b13",
  "mpn": "24G4HRE",
  "brand": "AOC",
  "name": "24\" AOC 24G4HRE",
  "family": "AOC",
  "categoryPath": "Computers & Laptops > Monitors",
  "alzaBreadcrumb": "Computers and Laptops > Monitors",
  "price": 1890,
  "regularPrice": 2700.01,
  "discountPercent": 30,
  "currency": "CZK",
  "inStock": true,
  "rating": 4.9,
  "ratingCount": 45,
  "color": "Black",
  "inch": "24",
  "connectivity": "HDMI, DisplayPort",
  "specs": {
    "Resolution": "1920 × 1080 Full HD",
    "Refresh rate": "200 Hz",
    "Response time": "0.5 ms",
    "Panel type": "LCD",
    "VESA mounting": "100×100",
    "Weight": "3.43 kg",
    "Energy efficiency class in SDR mode": "E"
  },
  "url": "https://www.alza.cz/EN/24-aoc-24g4hre-d13041842.htm"
}
```

(`specs` shortened here; a monitor typically has 40+ fields.)

### Input

| Field | Default | What it does |
|---|---|---|
| Category URLs | — | Alza category or subcategory pages |
| Max products per category | 50 | Product pages opened per category |
| Max products in total | no cap | Hard limit for the run |
| Follow variant links | off | Beta: colour / storage variants become their own rows |
| Include descriptions | **off** | Alza's marketing text (see below) |
| Include image URLs | **off** | Image gallery URLs (see below) |
| Proxy | Residential, CZ | Recommended; Alza blocks datacenter IPs |

### Content rights

By default the Actor returns **factual data only**: identifiers, prices, specs, categories, ratings. Descriptions and photos belong to Alza or the brand, so they are off by default. If you turn them on, reusing them in your own shop is your responsibility. For publishable content, use brand + MPN to get official images and texts from the manufacturer or a licensed content provider.

### Good to know

- Alza protects its site against bots. The Actor uses real browsers, rotating sessions and Czech residential proxies (these worked for all five domains in testing), and retries blocked pages. Keep concurrency at 2–4.
- Images, fonts and trackers are not downloaded during the crawl, which keeps proxy traffic and cost low. Image URLs are still collected when you turn that option on.
- Prices are what Alza shows at the time of the run, in the domain's currency, VAT included.
- The category taxonomy covers electronics, gaming, toys, pet supplies and home appliances in depth. Other categories fall back to Alza's own breadcrumb.

### Coming next

- Same product, other Czech shops: price comparison by brand + MPN
- Price-change tracking between scheduled runs
- Shoptet / WooCommerce column presets for direct import

Questions or a shop you want covered? Open an issue on the Issues tab.

*Built by Enrique Wood, Prague.*

# Actor input Schema

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

Alza category or subcategory pages from alza.cz, alza.sk, alza.hu, alza.at or alza.de. You can mix countries in one run. On alza.cz the English (/EN/) version gives English names and specs.

## `maxProductsPerCategory` (type: `integer`):

How many product pages to open from each category URL.

## `maxTotalProducts` (type: `integer`):

Hard cap for the whole run. 0 means no cap (the per-category limit still applies).

## `followVariants` (type: `boolean`):

Beta. Also open the colour / storage variants linked from each product page, so every variant becomes its own row.

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

OFF by default. Product descriptions are written by Alza. Only turn this on if you have the right to reuse that text in your own store.

## `includeImages` (type: `boolean`):

OFF by default. Adds the main image URL and the full gallery (image.alza.cz). Same licensing caveat as descriptions.

## `maxConcurrency` (type: `integer`):

Parallel browser pages. Alza throttles aggressive crawling; 2 is a safe default, 4 works with residential proxies.

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

Alza blocks datacenter IPs. Residential proxies from the Czech Republic are strongly recommended.

## `failOnLowQuality` (type: `boolean`):

Turn on for scheduled runs that feed other systems: the run ends as FAILED instead of succeeding with warnings, so your monitoring or alerts catch it.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.alza.cz/EN/lcd-monitors/18842948.htm"
    }
  ],
  "maxProductsPerCategory": 10,
  "maxTotalProducts": 0,
  "followVariants": false,
  "includeDescription": false,
  "includeImages": false,
  "maxConcurrency": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  },
  "failOnLowQuality": false
}
```

# Actor output Schema

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

No description

## `summary` (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.alza.cz/EN/lcd-monitors/18842948.htm"
        }
    ],
    "maxProductsPerCategory": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CZ"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ewood2020/alza-catalog-builder").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.alza.cz/EN/lcd-monitors/18842948.htm" }],
    "maxProductsPerCategory": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CZ",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ewood2020/alza-catalog-builder").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.alza.cz/EN/lcd-monitors/18842948.htm"
    }
  ],
  "maxProductsPerCategory": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CZ"
  }
}' |
apify call ewood2020/alza-catalog-builder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ewood2020/alza-catalog-builder"
        }
    }
}
```

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/2SUNOdrJf2gbQE0aE/builds/QFpMaUI76F2hlFDBC/openapi.json
