Zalando API & Scraper
The Zalando API returns EU fashion product data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary search endpoint returns products with name, brand, SKU, price, colour, images and URL, and you can browse a category, sale and new_arrivals, pull a product, its variants and similar items, and the brands, categories and filters. It is built for fashion-price monitoring, catalog enrichment and EU retail analytics that need Zalando data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Zalando country codes, storefront hosts and the currency each returns
The country parameter picks a Zalando storefront, and that decides the host, the product language and the currency prices come back in. Every value below was confirmed on 2026-08-27 by running the sale action once per country and reading the currency field off the first card. gb is an alias of uk and resolves to the same host and the same results.
| country | Storefront host | Currency returned | Example price returned |
|---|---|---|---|
| de | zalando.de | EUR | 19.99 |
| uk (or gb) | zalando.co.uk | GBP | 65.99 |
| fr | zalando.fr | EUR | 49.0 |
| nl | zalando.nl | EUR | 40.8 |
| it | zalando.it | EUR | 32.99 |
| es | zalando.es | EUR | 19.99 |
| pl | zalando.pl | PLN | 126.56 |
Coverage is not identical across actions. On 2026-08-27 the keyword search action answered only on de and fr; uk, gb, nl, it, es and pl each returned error code NOT_FOUND because Zalando serves no /catalogue/ search path on those hosts. sale, category, product and variants answered on every country. Category slugs are per-language, so the German slug herrenschuhe-sneaker only works with country de.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/zalando/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"q": "nike",
"country": "de"
}
}{
"ok": true,
"meta": {
"api": "zalando",
"endpoint": "search",
"mode": "live",
"latency_ms": 2342.4,
"record_count": 24,
"bytes": 1813120,
"cache_hit": false,
"method": "hydration_blob",
"extra": {
"url": "https://www.zalando.de/catalogue/?q=nike",
"country": "de",
"page": 1,
"page_size": 24,
"has_more": true,
"next_page": 2
}
},
"data": {
"results": [
{
"sku": "NI111A0XD-A11",
"name": "[redacted-name]",
"brand": "Nike Sportswear",
"color": null,
"url": "https://www.zalando.de/nike-sportswear-air-force-1-sneaker-low-white-ni111a0xd-a11.html",
"image": "https://img01.ztat.net/article/spp-media-p1/54ebff14c74f4e55a760de6f09436896/[redacted-phone]b4d87871e6aada1547495.jpg?imwidth=500&filter=packshot",
"images": [
"https://img01.ztat.net/article/spp-media-p1/54ebff14c74f4e55a760de6f09436896/[redacted-phone]b4d87871e6aada1547495.jpg?imwidth=500&filter=packshot",
"https://img01.ztat.net/article/spp-media-p1/54ebff14c74f4e55a760de6f09436896/[redacted-phone]b4d87871e6aada1547495.jpg?imwidth=780&filter=packshot",
"https://img01.ztat.net/article/spp-media-p1/54ebff14c74f4e55a760de6f09436896/[redacted-phone]b4d87871e6aada1547495.jpg?imwidth=400&filter=packshot"
],
"category": {
"products": {
"edges": "[trimmed-depth]",
"totalCount": "[trimmed-depth]"
}
},
"sizes": [
"35.5",
"36",
"36.5"
],
"navigation_target_group": "WOMEN",
"condition": null,
"in_stock": null,
"availability": null,
"price": 101.99,
"original_price": 119.99,
"currency": "EUR",
"discount_percent": 18,
"formatted_price": "101,99 € Ursprünglich: 119,99 € Letzter niedrigster Preis: 107,99 € -6%",
"on_sale": true
},
{
"sku": "N1244D06L-A11",
"name": "[redacted-name]",
"brand": "Nike Performance",
"color": null,
"url": "https://www.zalando.de/nike-performance-everyday-cush-crew-3-pack-sportsocken-whiteblack-n1244d06l-a11.html",
"image": "https://img01.ztat.net/article/spp-media-p1/61af5ef973313caa84bd0eab4448c480/fa7bc[redacted-phone]b91b4485f5b1a515.jpg?imwidth=500",
"images": [
"https://img01.ztat.net/article/spp-media-p1/61af5ef973313caa84bd0eab4448c480/fa7bc[redacted-phone]b91b4485f5b1a515.jpg?imwidth=500",
"https://img01.ztat.net/article/spp-media-p1/61af5ef973313caa84bd0eab4448c480/fa7bc[redacted-phone]b91b4485f5b1a515.jpg?imwidth=780",
"https://img01.ztat.net/article/spp-media-p1/61af5ef973313caa84bd0eab4448c480/fa7bc[redacted-phone]b91b4485f5b1a515.jpg?imwidth=400"
],
"category": "STOCKING",
"sizes": [
"34-38",
"38-42",
"42-46"
],
"navigation_target_group": "ALL",
"condition": null,
"in_stock": null,
"availability": null,
"price": 15.95,
"original_price": 15.95,
"currency": "EUR",
"discount_percent": null,
"formatted_price": "15,95 €",
"on_sale": false
},
{
"sku": "N1244D06O-A11",
"name": "[redacted-name]",
"brand": "Nike Performance",
"color": null,
"url": "https://www.zalando.de/nike-performance-everyday-cush-crew-6-pack-sportsocken-whiteblack-n1244d06o-a11.html",
"image": "https://img01.ztat.net/article/spp-media-p1/e24ad250e41232c4a42b081331c2fcd7/e00b72951afb48ff8b42756e760f4252.jpg?imwidth=500",
"images": [
"https://img01.ztat.net/article/spp-media-p1/e24ad250e41232c4a42b081331c2fcd7/e00b72951afb48ff8b42756e760f4252.jpg?imwidth=500",
"https://img01.ztat.net/article/spp-media-p1/e24ad250e41232c4a42b081331c2fcd7/e00b72951afb48ff8b42756e760f4252.jpg?imwidth=780",
"https://img01.ztat.net/article/spp-media-p1/e24ad250e41232c4a42b081331c2fcd7/e00b72951afb48ff8b42756e760f4252.jpg?imwidth=400"
],
"category": "STOCKING",
"sizes": [
"34-38",
"38-42",
"42-46"
],
"navigation_target_group": "ALL",
"condition": null,
"in_stock": null,
"availability": null,
"price": 24.95,
"original_price": 24.95,
"currency": "EUR",
"discount_percent": null,
"formatted_price": "24,95 €",
"on_sale": false
}
],
"page": 1,
"page_size": 24,
"has_more": true,
"next_page": 2,
"query": "nike"
}
}What the Zalando API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Zalando by keyword — returns product cards with name, brand, SKU, price, color, images and product URL. Filterable by brand, price range and category; paginated. | Pricing teams call search to search Zalando by keyword. | q, country, page, category, order, ... |
| category | Browse Zalando products by category (e.g. herrenschuhe-sneaker) — returns listing cards with name, brand, price and images. Filterable and paginated. | Marketplace operators call category to get browse Zalando products by category (e.g. | category, country, page, order, brand, ... |
| sale | On-sale / discounted Zalando products — the outlet grid with original price, current price, discount percent (0-100) and discount amount (money off). Scope to a category, otherwise lands on the country's sale/outlet section. Paginated. | Catalog enrichment teams call sale to get on-sale / discounted Zalando products. | country, category, page, brand, min_price, ... |
| new_arrivals | Newest Zalando products in a category, sorted newest-first. Scope to a category (e.g. damenschuhe-sneaker), otherwise lands on the country's primary section. Paginated. | Retail analysts call new_arrivals to get newest Zalando products in a category, sorted newest-first. | country, category, page, brand, min_price, ... |
| product | Full Zalando product detail by URL or SKU — name, brand, price, color, gallery images, available sizes, rating and attributes. | Pricing teams call product to get full Zalando product detail by URL or SKU. | url, sku, country |
| similar | Products similar to a given Zalando item — pulled from the product page recommendation cards. | Marketplace operators call similar to get products similar to a given Zalando item. | url, sku, country |
| variants | All size variants for a Zalando product with in-stock flags — useful for monitoring stock availability. | Catalog enrichment teams call variants to get all size variants for a Zalando product with in-stock flags. | url, sku, country |
| brands | Distinct brands present in a given Zalando listing — the brands found across the product cards of the supplied category or keyword search (one listing page, not Zalando's full brand directory). Useful for building brand filter chips for that listing. Pass category or q; defaults to the country's primary section. | Retail analysts call brands to get distinct brands present in a given Zalando listing. | country, category, q, page |
| categories | Top-level Zalando category links for a country, live-discovered from that TLD's own localized homepage navigation — so each country returns its real localized paths (fr: femme/homme/enfant, it: donna/uomo/bambini, es: mujer/hombre, nl: dames/heren, pl: kobiety/mezczyzni …), feed these paths to the category / sale / new_arrivals actions. | Pricing teams call categories to get top-level Zalando category links for a country, live-discovered from that TLD's own localized…. | country, gender |
| filters | Discover which sort and filter options are available for Zalando listings, including price range, brand and sort order. | Marketplace operators call filters to discover which sort and filter options are available for Zalando listings, including price ra…. | country, category, q |
| reviews | Customer reviews and overall rating summary for a Zalando product (when reviews are embedded on the product page). | Catalog enrichment teams call reviews to get customer reviews and overall rating summary for a Zalando product (when reviews are embedded…. | url, sku, country |
| attributes | Product attribute clusters for a Zalando item — material composition, care instructions and other structured attributes from the product page. | Retail analysts call attributes to get product attribute clusters for a Zalando item. | url, sku, country |
Call search from your stack
curl -X POST https://api.reefapi.com/zalando/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"q":"nike","country":"de"}'import requests
r = requests.post(
"https://api.reefapi.com/zalando/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"q": "nike",
"country": "de"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/zalando/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"q": "nike",
"country": "de"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.zalando.search with {"q":"nike","country":"de"}.Who uses this API and why
- Fashion-pricing tools call search and sale to track Zalando prices and markdowns by brand.
- Catalog-enrichment products use product and variants to fill listings with colours and sizes.
- Retail analysts use new_arrivals and brands to spot trends across the EU fashion market.
Questions developers ask before integrating
What does a Zalando SKU like NI114D0HT-A11 mean?
It is the article number: nine characters identifying the article, a hyphen, then a three-character color code, 13 characters in total. NI114D0HT-A11 and NI112N022-A11 are two different Nike Sportswear articles in the same A11 colorway. The same article number is used on every storefront: a search on de and the same search on fr both returned NI114D0HT-A11 for the same shoe, with only the URL slug and the language of the product name changing.
How do Zalando size variants get their own SKU?
Each size is the 13-character article SKU plus a seven-character size code, giving a 20-character variant SKU. Measured on 2026-08-27 for NI112N022-A11: size 38.5 is NI112N022-A110060000, size 39 is NI112N022-A110065000, size 40 is NI112N022-A110070000. The suffix is a sort key rather than the size itself, so read the size field instead of trying to decode the digits.
Why does the product action return null for price, brand and images?
product reads the product page's own data block, which on the pages measured on 2026-08-27 carried only sku, name, url and the full size ladder. price, original_price, currency, brand, images and rating all came back null for both NI112N022-A11 and NI114D0HT-A11. Take price and images from a listing card returned by search, category or sale, and use product or variants for the sizes and their in_stock flags.
Is a Zalando price in cents or in currency units?
In currency units, as a plain number. A measured German search card returned price 69.95 with currency EUR, and the Polish sale grid returned price 126.56 with currency PLN. There is no minor-unit encoding to divide by 100. formatted_price carries the storefront's own rendering if you want the localized string instead.
How do I tell whether a Zalando item is discounted?
Read on_sale, then take the markdown two ways: discount_percent is a rate between 0 and 100 and discount_amount is the money saved in the row's own currency, so nothing has to be divided. Re-measured on 43 discounted rows across the German, British and Polish stores, all 43 agreed with the two prices: 26.00 from 43.99 gave 40.9 and 17.99, 39.90 from 129.90 gave 69.3 and 90.00. discount_percent used to carry the money difference rather than the rate; that is fixed, and discount_amount is where the money lives now. When there is no discount, original_price equals price, both discount fields are null and on_sale is false, which is what a 179.95 card in the same result set returned.
Which Zalando countries can I keyword-search?
As measured on 2026-08-27, keyword search answered on de and fr. The other storefronts returned error code NOT_FOUND because Zalando does not serve the /catalogue/ search path there. The sale, category, product and variants actions did answer on all eight country values, so for uk, nl, it, es and pl browse by category slug or by the sale grid instead of by keyword.
Does a listing card tell me which sizes are in stock?
No. A search or category card carries a sizes array of labels such as '38.5', '39', '40', but its in_stock field came back null on every card measured, so a card cannot tell you whether a given size is buyable. Use the variants action for that: it returns one row per size with the size label, the 20-character variant sku and an in_stock boolean.
How does paging work on the Zalando listing actions?
Every listing action returns 24 cards per page. meta.extra carries page, page_size, has_more, next_page and the resolved upstream URL, so you page forward by feeding next_page back into the page parameter. A category call with page=2 on herrenschuhe-sneaker returned 24 different cards and has_more true.
What is the Zalando API?
Zalando API is a ReefAPI endpoint group for zalando It returns live JSON through POST requests under /zalando/v1.
Is the Zalando API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Zalando calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Zalando login or account?
No login to Zalando 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 Zalando 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 Zalando API use?
Zalando actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Zalando from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call zalando actions with the same key, credit pool and JSON envelope used by normal REST requests.