# Zalando Search API

> Zalando search results as JSON: keyword, page, damen/herren/kinder shop and sort by popularity, newest, price or sale. Article numbers, prices, sizes.

- URL: https://everydata.io/zalando-search-api
- Updated: 2026-09-20
- Publisher: everydata.io (https://everydata.io)

Search is how shoppers navigate Zalando's several hundred thousand articles, and it is also how assortment analysts find out what is ranking. The everydata.io Zalando Search API executes a keyword search on zalando.de – optionally restricted to the women's, men's or kids' shop – and returns the result grid as structured JSON: article number, brand, title, price versus original price, image, the available sizes shown on the tile and a sponsored flag. Paging follows Zalando's own grid, so page 1 of "sneaker" in the damen shop gives you the same 66 or so tiles a visitor would see.

## Key facts

- Platform: [Zalando API](https://everydata.io/apis/zalando) (live)
- Main endpoint: `GET /zal/zalando-search-by-keyword`
- Quota: A call to the Zalando API counts as 2 requests against the monthly quota.
- Pricing: 100 free requests a month; paid plans from €30 a month for 5,000 requests (€1.00–€6.00 per 1,000 requests). One quota is shared across all 35 platforms; failed requests (5xx, blocked pages) are not counted.

## What you get

Each hit in searchProductDetails is a colourway-level article, identified by its Zalando article number (asin / productId such as HU315O085-G12) and linked to its detail page through dpUrl. price and retailPrice let you spot marked-down tiles immediately, variations lists the sizes Zalando advertises on the tile, imgUrl points to the packshot on img01.ztat.net and sponsored marks paid placements so you can exclude them from organic-rank analysis.

The envelope tells you where you are in the result set: resultCount is the total number of matching articles (28,228 for "sneaker" in the women's shop), numberOfProducts is the count on this page, and currentPage / nextPage / lastPage drive your loop. sortStrategy echoes the sort you asked for and mainCat the shop section.

- keyword search on zalando.de with optional mainCat damen, herren or kinder
- sortBy most-popular, activation-date (newest), price-asc, price-desc or sale
- Per tile: article number, manufacturer, productDescription, price, retailPrice, currency
- Available sizes as advertised on the tile plus the detail-page URL (dpUrl)
- sponsored flag to separate paid placements from organic ranking
- resultCount, numberOfProducts, currentPage, nextPage and lastPage for paging
- withCache option for research crawls where a recently cached result page is fine

## How it works

Call GET /zal/zalando-search-by-keyword with keyword and page. domainCode defaults to de; mainCat narrows the search to one of Zalando's three shops and sortBy switches from Zalando's popularity ranking to newest arrivals, price or sale items first.

```bash
curl -s "https://api.everydata.io/zal/zalando-search-by-keyword?keyword=sneaker&page=1&domainCode=de&mainCat=damen&sortBy=most-popular" \
  -H "x-api-key: YOUR_API_KEY"
```

Response (shortened):

```json
{
  "responseStatus": "PRODUCT_FOUND_RESPONSE",
  "responseMessage": "Product successfully found!",
  "sortStrategy": "most-popular",
  "domainCode": "de",
  "keyword": "sneaker",
  "mainCat": "damen",
  "numberOfProducts": 66,
  "resultCount": 28228,
  "currentPage": 1,
  "nextPage": 2,
  "lastPage": 337,
  "searchProductDetails": [
    {
      "productDescription": "HANDBALL PERFEKT CL UNISEX - Sneaker low - chocolate truffle polignac",
      "manufacturer": "Hummel",
      "asin": "HU315O085-G12",
      "productId": "HU315O085-G12",
      "imgUrl": "https://img01.ztat.net/article/spp-media-p1/93f6f207c5cc4511a7023a6d7bf56b8e/2c4ecdc7ccff4e49b0420afaa79b0431.jpg?imwidth=400&filter=packshot",
      "price": 59.95,
      "retailPrice": 59.95,
      "dpUrl": "https://www.zalando.de/hummel-handball-perfekt-cl-unisex-sneaker-low-chocolate-truffle-polignac-hu315o085-g12.html",
      "sponsored": false,
      "variations": [
        "36",
        "37"
      ],
      "currency": "EUR"
    }
  ]
}
```

Iterate with page until nextPage is null or you reach lastPage. Because Zalando personalises very little of its search grid, results are stable enough for rank tracking: store the position of each article number per keyword and date and you have a ranking history.

The tile-level variations array is what Zalando prints under the product image – typically the sizes in stock – and is a quick proxy for availability. For the definitive per-size stock and the seller behind the offer, follow dpUrl into /zal/zalando-lookup-product.

sortBy=sale is Zalando's own "Sale" ordering and is the fastest way to enumerate reduced articles for a keyword; compare price and retailPrice on each tile to compute the markdown percentage.

## What teams build with this

### Keyword rank tracking for fashion brands

Record where your articles appear for "sneaker", "trenchcoat" or "laufschuhe" in the damen and herren shops, and how many sponsored tiles sit above you.

### New-arrival monitoring

Run the search with sortBy=activation-date every morning to catch competitor launches on zalando.de the day they go live.

### Sale and markdown scans

Combine sortBy=sale with price/retailPrice to build a daily list of reduced articles per category and brand.

### Assortment breadth research

resultCount per keyword and shop section quantifies how deep Zalando's assortment is in a niche before you decide to list there.

## Pricing

Every result page is one request and counts 2 quota units; a full sweep of the first ten pages for one keyword costs 20 units. On the Production plan (50,000 units, €80) you can track about 80 keywords ten pages deep every day. Set withCache=true on exploratory crawls to reuse recently fetched pages and keep realtime calls for rank tracking.

## FAQ

### Which storefront does the search run on?

domainCode defaults to de, Zalando's German storefront with EUR prices. The mainCat values damen, herren and kinder correspond to the German shop sections.

### How many results are on a page?

The API returns Zalando's own grid – typically around 66 tiles per page, reported in numberOfProducts. resultCount holds the total number of matching articles and lastPage the number of pages.

### Can I filter by brand, size or price?

The endpoint supports keyword, category (mainCat) and sort order. Include the brand name in the keyword to narrow results, and filter by price or size on your side using the tile fields.

### Are sponsored results included?

Yes, they appear in the same array with sponsored set to true so you can decide whether to keep or drop them.

### How do I get stock per size for a search hit?

Take the dpUrl of the tile and call /zal/zalando-lookup-product. The search tile only lists the sizes Zalando prints under the image.

## Related use cases

- [Zalando Product Data API](https://everydata.io/zalando-product-data-api)
- [Zalando Price Monitoring API](https://everydata.io/zalando-price-monitoring-api)
- [ASOS Search API](https://everydata.io/asos-search-api)

## More

- [All platforms](https://everydata.io/apis) · [Pricing](https://everydata.io/pricing) · [API reference](https://everydata.io/docs) · [Getting started](https://everydata.io/docs/getting-started) · [MCP server](https://everydata.io/docs/mcp) · [Status](https://everydata.io/status)
- Machine-readable: [llms.txt](https://everydata.io/llms.txt), [llms-full.txt](https://everydata.io/llms-full.txt), [OpenAPI](https://api.everydata.io/openapi.json)
