Central Europe's biggest electronics shop, as one JSON API
The Alza API returns Central Europe's largest electronics retailer as clean JSON, in four actions - search, category, product/detail and product/reviews - across five national storefronts on one platform: Czechia (CZK), Slovakia (EUR), Hungary (HUF), Austria (EUR) and Germany (EUR).
4 active endpoints, on 1 and 2 credit tiers.
- POST/alza/v1/search
- POST/alza/v1/category
- POST/alza/v1/product/detail
- POST/alza/v1/product/reviews
What Alza endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Alza API
4 of 4 endpoints, ready to run
24 products per page from one national storefront with an exact result total: the price now, the struck price and discount, stock wording, the 5-star rating with its count, energy class and how many variants exist.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Alza API works
Alza is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 280 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Find a product, read everything Alza publishes about it, then compare the next market
The search row already carries the price, the discount and the rating. product/detail is where the figure without VAT, the specification and the variants are - and the country parameter is what makes the second market a different answer, not a copy.
{"query": "iphone", "country": "cz", "sort": "price_asc", "discounted_only": true}Cheapest first, reduced products only. On the day this was measured that narrowed 123 products to 4, and the response says so in total_results. Take results[].product_id.
{"product_id": "13078788", "country": "cz"}The full record: 29,990 CZK including VAT and 24,785 without it, 68 specification rows, 11 images, both colour and capacity variants, and the stock wording the shop prints.
{"product_id": "13078788", "country": "cz", "limit": 10}The shop's own reviews with the liked and disliked lists and the verified-purchase flag. total_reviews said 80 for this product, while its page reports 345 ratings and 58 written reviews.
{"query": "iphone", "country": "sk"}The same question on the Slovak storefront. One parameter changes the country, and the currency, the catalogue and the price follow it.
One keyword, one complete product record, its reviews and a cross-border comparison, in four calls against the same schema.
curl -X POST https://api.reefapi.com/alza/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","country":"cz"}'{
"ok": true,
"data": { … },
"meta": {
"api": "alza",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Which storefront, which currency — and why you cannot reuse an id across them
One platform, one parameter. Measured on 2026-09-23: every storefront below returned a live search and at least one full product record in the same run. The catalogue, the currency and the price are all per storefront - the same product is not the same price in two countries, even two euro ones.
| country | storefront | currency | measured live |
|---|---|---|---|
| cz | alza.cz | CZK | search + category + product/detail + reviews |
| sk | alza.sk | EUR | search + category + product/detail + reviews |
| hu | alza.hu | HUF | search + category + product/detail |
| at | alza.at | EUR | search + product/detail |
| de | alza.de | EUR | search + product/detail |
Alza closed its UK shop: alza.co.uk has not sold anything since 27 May 2022 and publishes a suspension notice instead of a catalogue, so country=uk is rejected with that reason rather than returning an empty result. Product ids belong to a catalogue, not to the group: of five Czech iPhone ids checked, all five existed on Slovakia, two on Austria and Germany, and none on Hungary, which lists the same phone under its own id. Ask for an id a storefront does not carry and you get NOT_FOUND, never a different product.
Which country, which id, which price — and what Alza does not publish
Five national storefronts on one platform. Measured on 2026-09-23: 58 live checks all behaved as expected, 16 products across 7 categories and 4 storefronts were counted field by field, and every price was compared three ways against the shop's own page and a second endpoint. Five of these lines go against us.
country picks the storefront: cz, sk, hu, at, de. The currency follows it - CZK, EUR, HUF - and so does the catalogue and the price. Measured on the same day: one Bosch appliance was 325.90 EUR on the Austrian shop and 323.90 EUR on the German one, an iPhone 1,159 EUR against 1,149 EUR, and a headset 37.90 EUR in Slovakia against 35.90 EUR in Germany. Catalogue sizes differ too - the keyword "lenovo notebook" returned 589 products in Czechia, 586 in Slovakia, 318 in Hungary and 16 in Austria. Two euro markets are not interchangeable.
alza.co.uk has sold nothing since 27 May 2022 and serves a suspension notice instead of a catalogue. country=uk and any co.uk URL are rejected with that reason, so you never get an empty result you have to interpret.
The id is the number after the -d in a product URL. Of five Czech iPhone ids checked against the other storefronts, all five resolved on Slovakia, two on Austria and Germany, and none on Hungary - which lists the same phone under its own id. Ask a storefront for an id it does not carry and you get NOT_FOUND, never a different product: the engine checks that the record it read is the one you asked for. Pass a full URL and its host sets the country; a country that contradicts the URL is rejected.
price is what a logged-out consumer pays with VAT, price_ex_vat is Alza's own figure without it, and both matched the shop's own product page on 16 of 16 sampled products. discount_percent is computed from price and was_price; Alza's own badge ships separately as discount_percent_site and discount_label because the two can disagree - one product down from 43,990 to 41,990 is 4.55 percent and the badge prints -4 percent. The monthly financing figure is returned as monthly_instalment and never as a price.
Measured on one category in a single run, unfiltered 214 products: minimum price 20,000 gives 100, maximum 15,000 gives 86, both bounds 31, in stock only 193, on sale only 13, newly added 1, well rated 144, brand GIGABYTE 62 - which matches the count the brand list itself reports. Sorting cheapest-first and dearest-first both returned strictly monotonic prices. Rating is a single well-rated switch rather than a star number, because that is what Alza offers; the API does not invent a star scale.
Alza publishes a manufacturer part number, always returned as mpn. Where that value is itself a valid EAN-13 it is also returned as ean, after the check digit is verified. Measured across 7 categories: toys 2 of 2 and drugstore 2 of 2 carried an EAN, phones 0 of 4, laptops 0 of 2, appliances 0 of 2 and storage 0 of 2 did not. Nothing is derived or guessed.
Alza does not publish a delivery date to an anonymous visitor - it asks for a postcode first - so no delivery date is returned and exact_date_requires_address says why. You get the stock wording the shop prints, such as "Skladem > 5 ks", where else the item is held and the shop's delivery promise. There is no numeric stock count anywhere on this surface, and no seller: Alza sells these products itself and runs no third-party marketplace on them. There is no price history either.
Alza answers most keywords with one of its own category or brand pages - 11 of 16 sampled keywords - and there you get the exact category total plus every sort and filter. The rest are answered by its free-text search page, where Alza itself offers no sorting or filtering; asking for one there is rejected with an explanation rather than silently dropped, and filters_supported tells you which mode you are in. Free-text totals were observed to plateau near 300 on broad queries, while category-resolved searches report true totals such as 123, 589, 970 and 4,643.
For 16 products across phones, laptops, appliances, toys, storage, drugstore and gaming on four storefronts, each fact was read three times: by the API, by a separate reader of the product page using no API code, and from a second endpoint that lists the same product. Title, price, price without VAT, currency, part number, rating, both rating counts, image count and the presence of the specification table agreed on 16 of 16. An id taken from search resolved to the same id, as the same type, on 16 of 16.
Every listing returns 24 products per page and an exact total, so page_count is simply that total divided by 24 - there is no hidden cap on a category. On search in free-text mode the total is Alza's own free-text result set, which stops near 300.
What people build with Alza
The jobs this data is most often used for.
endpoints
credits per call
Track Czech, Slovak, Hungarian, Austrian and German prices for the same product line and see where a market really is cheaper - the same item was 325.90 EUR in Austria and 323.90 EUR in Germany on the same day.
Feed a B2B pricing or procurement sheet that needs the figure without VAT, which Alza publishes on every product.
Watch discounts: pull the on-sale filter on a category each morning and keep price, was_price and the shop's own discount badge.
Build or enrich a product catalogue with the full specification table grouped as the retailer groups it, the image gallery, the part number and the EU energy class.
What Alza data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 280 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/alza/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","country":"cz"}'import requests
r = requests.post(
"https://api.reefapi.com/alza/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone",
"country": "cz"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Alza.
Get a free key →Does Alza publish prices with and without VAT?▾
Yes, and the API returns both on every product. price is what a logged-out consumer pays, VAT included, and price_ex_vat is the shop's own figure without VAT. Both were checked against the shop's own product page on 16 of 16 sampled products across 7 categories and 4 storefronts.
How do I find products that are actually on discount right now?▾
Set discounted_only on search or category. It is Alza's own sale filter and it really narrows the set: on the Czech iPhone category it cut 123 products to 4, and on a graphics-card category 214 to 13, in the same run. Discounted rows carry was_price alongside price, plus discount_percent.
Whose discount percentage do I get, yours or Alza's?▾
Both, separately. discount_percent is computed from the two prices, and discount_percent_site plus discount_label carry Alza's own badge. They can disagree: one product priced 41,990 down from 43,990 is 4.55 percent, and the shop's badge prints -4 percent. Neither figure overwrites the other.
Do I get an EAN?▾
Only when the shop really publishes one. Alza publishes a manufacturer part number, which the API always returns as mpn. On some categories that value is itself a valid EAN-13 and is then also returned as ean; on others it is a vendor part code. Measured across 7 categories: toys 2 of 2 and drugstore 2 of 2 had an EAN, while phones 0 of 4, laptops 0 of 2, appliances 0 of 2 and storage 0 of 2 did not. The API never derives or guesses one.
Can I get a delivery date?▾
No, and the API says so rather than inventing one. Alza does not publish a delivery date to an anonymous visitor - it asks for a postcode first. What you do get is the stock wording the shop prints, such as "Skladem > 5 ks", where else it is held, the shop's delivery promise, and exact_date_requires_address set to true.
Do the sort and filter options actually change the results?▾
Yes, and every response reports the exact total so you can verify it. Measured on one category in one run: unfiltered 214 products, price from 20,000 gives 100, price up to 15,000 gives 86, both bounds together give 31, in stock only 193, on sale only 13, newly added 1, well rated 144, and brand GIGABYTE 62. Sorting by cheapest and by most expensive both returned strictly monotonic prices.
Is there anything search cannot do?▾
Yes. Alza answers most keywords with one of its own category or brand pages - 11 of 16 sampled keywords - and there you get the exact category total plus every sort and filter. The other keywords are answered by its free-text search page, where Alza itself offers no sorting or filtering, so asking for one there is rejected with an explanation instead of being silently ignored. The response field filters_supported tells you which mode you got, and free-text totals were observed to plateau near 300 on broad queries.
What do the different review numbers mean?▾
Alza publishes three and the API keeps them apart. rating_count is how many people gave a star rating, review_count is how many wrote a text review, and total_reviews on product/reviews is what the review feed will actually page through. On one phone those were 345, 58 and 80. A product nobody has rated returns rating null with rating_count 0, never a zero-star rating.
What is the Alza API?▾
Alza API is a ReefAPI endpoint group for central europe's largest electronics retailer in 5 countries: prices with and without vat, discounts, stock, specs and reviews. It returns live JSON through POST requests under /alza/v1.
Is the Alza API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Alza calls use the same shared credit balance as every other ReefAPI engine.
Do I need an Alza login or account?▾
No login to Alza is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Alza data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Alza API use?▾
Alza actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Alza from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call alza actions with the same key, credit pool and JSON envelope used by normal REST requests.
116 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Alza, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 279 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-23.