Zalando Scraper [💰$1.5/1K] | Fashion | Products | Prices
Pricing
from $1.47 / 1,000 results
Zalando Scraper [💰$1.5/1K] | Fashion | Products | Prices
💰 $1.5 / 1K results. Scrape Zalando fashion listings and collect everything you need — product details, brands, prices, sizes, availability, images, and more. Ideal for competitor monitoring, fashion research, price comparison, and large-scale product data collection.
Pricing
from $1.47 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
1
Bookmarked
23
Total users
4
Monthly active users
20 hours ago
Last modified
Categories
Share
Zalando Scraper - Fashion Listings, Prices and Stock by Market
The Zalando Scraper collects public fashion listings from Zalando storefronts and returns structured product rows with names, brands, SKUs, prices, discounts, images, sizes, stock status and product URLs. It supports listing and product URLs, keyword searches and 17 European markets.
Use it for competitor price monitoring, assortment research, size availability checks and catalog enrichment. Listing cards are enriched from Zalando's embedded hydration JSON (images, sizes, flags, prices and currency) without extra page requests. A lightweight GraphQL availability query adds per-size stock status on paid runs. It can emit only changes between scheduled runs.
Main Use Cases for Zalando Product Data
- Competitor price monitoring - track current and original prices, discounts and sale flags across Zalando markets.
- Assortment research - measure which brands and categories a market carries and how deeply each assortment is stocked.
- Size availability analysis - collect per-size availability and identify broken size runs and popular sizes without downloading full product pages.
- Markdown tracking - schedule runs with monitor mode to capture price drops, price rises and sold-out events.
- Catalog enrichment - append product names, SKUs, brand data, images and URLs to an internal PIM or marketplace feed.
How It Works

Provide Zalando listing or product URLs in startUrls, or supply searchTerms and pick a market with domain. Search terms become a Zalando search page on that storefront. Start URLs keep their own market and query string, so you can mix markets in one run.
The listing parser extracts the product name, SKU, brand, current and original price, discount, thumbnail, image set, flags, availability, product URL and size cards. Pagination continues until maxItems is reached or the listing pages run out. Up to three pages can be fetched and enriched concurrently; stock lookups are batched, item-budget reservations keep maxItems exact, and each row is pushed as soon as its stock lookup finishes so partial results survive an aborted run. maxPages can cap pagination, and maxItems is the hard budget applied after filters.
Listing rows already include the image set, size SKUs, merchandising flags, currency and availability from Zalando's hydration JSON. Paid runs also call Zalando's lightweight GraphQL availability query for each saved product and merge the complete size run. That query is a few kilobytes per product and returns which variants are in stock, not exact FEW/MANY quantities. Full product pages are not fetched for listing rows, so no product-detail event is required. The free tier returns rich listing data without per-size stock. minPrice, maxPrice, onSaleOnly and brandIncludes filter candidates before the item budget is consumed, while sortBy controls local ordering and Zalando order parameters.
deduplicateProducts skips a SKU already saved when the same product appears on several pages or search paths. Monitor mode adds a changeType of new, price_drop, price_rise, back_in_stock or sold_out and stores state under monitorKey; unchanged products are omitted to keep scheduled runs small.
Input
All fields are optional in the schema, but you need at least one start URL or one search term. The most important controls are the market, item budget, stock switch and monitor mode.
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
startUrls | string[] | No | Zalando AT example | Zalando listing or product URLs. Each URL keeps its own market and filters. |
searchTerms | string[] | No | [] | Keywords to search on the selected market. Each term becomes a search page. |
domain | string | No | at | Zalando market code used for search terms, such as at, de, fr, it, nl, pl or se. |
maxItems | integer | No | 100 | Maximum products saved. The free tier is limited to 50. |
scrapeDetails | boolean | No | true | Adds per-size availability through Zalando's lightweight GraphQL query. No full PDP fetch and no product-detail event. Forced off on the free tier. |
minPrice | number | No | None | Keep products at or above this current price in the listing currency. |
maxPrice | number | No | None | Keep products at or below this current price in the listing currency. |
onSaleOnly | boolean | No | false | Keep only products whose current price is below the original price. |
brandIncludes | string[] | No | [] | Case-insensitive brand names to include. Empty means all brands. |
sortBy | string | No | relevance | Sort candidates by relevance, price, newest or another supported Zalando order. |
maxPages | integer | No | 0 | Maximum listing pages. Zero derives a page budget from maxItems. |
deduplicateProducts | boolean | No | true | Skip a SKU already saved in this run. |
monitorMode | boolean | No | false | Emit only new, price change and stock change events between runs. |
monitorKey | string | No | zalando-monitor | State key for a monitored product set. Use one key per feed. |
maxConcurrency | integer | No | 40 | Parallel page requests. Paid default 40, free tier capped at 5. |
maxRequestsPerMinute | integer | No | 1200 | Global request rate limit. Free tier capped at 150. |
cookies | string | No | None | Optional cookie header or EditThisCookie array for regional sessions. |
proxyConfig | object | No | Residential Apify Proxy | Proxy configuration. Residential proxies are strongly recommended. |
Start with a narrow search term or category URL and maxItems around 100 to validate the market and filters. The free tier returns at most 50 products without per-size stock, and caps concurrency and request rate. Prices are numeric in the listing currency; priceCurrency is filled from hydration when Zalando exposes it.
Output
A product row contains identity, pricing, availability, media, size and monitoring fields. Listing rows are already enriched; scrapeDetails adds per-size availability from Zalando's GraphQL size query.
| Field group | Fields | What you get |
|---|---|---|
| Identity | url, sku, name, brand | Product URL, stable SKU, full product name and brand object with optional brand URL. |
| Pricing | price.original, price.current, price.promotional, priceCurrency | Original, current and promotional price values plus the storefront currency when exposed. |
| Availability | available, comingSoon, flags | Whether the product can be bought, whether it is upcoming, and visible merchandising flags. |
| Sizes | sizes, sizes[].inStock, sizes[].stockStatus | Size labels, variant SKUs and per-size availability merged from Zalando's GraphQL size run. |
| Media | thumbnail, images, videos | Packshot thumbnail, gallery URLs and video URLs when present. |
| Monitoring | changeType, monitorKey | Change event in monitor mode and feed key. |
| Provenance | scrapedFrom, scrapedAt, stockStatusSource, stockStatusExact | How the row was produced, the observation timestamp, and whether stock came from GraphQL availability or a direct PDP. |
priceCurrency is read from Zalando's hydration data when available, but can still be null in some markets. sizes contains labels, variant SKUs and inStock booleans. For GraphQL-enriched rows, stockStatus is MANY when at least one unit is available and NONE when the size is unavailable; stockStatusExact is false because Zalando's public size query does not expose exact FEW/MANY quantities. stockStatusSource is graphql-availability for those rows. videos, rating, sizeAdvice and some flags can be null. Monitor mode omits unchanged products, so a small run is expected even when the catalog has not shrunk. Direct product URLs still use a full PDP fetch and can return exact FEW/MANY stock; if that PDP request fails, the Actor can return a basic listing-fallback row from the already-fetched listing card.
Pricing
Pricing is pay-per-event. A start event is charged per run and each saved product is charged as a result.
| Event | FREE | BRONZE | SILVER | GOLD+ |
|---|---|---|---|---|
| Actor start, per run | $0.00005 | $0.00005 | $0.00005 | $0.00005 |
| Product result | $0.0015 | $0.00149 | $0.00148 | $0.00147 |
That is $1.50 per 1,000 products on FREE and $1.47 per 1,000 on GOLD+. A 1,000-product run costs about $1.50 before the start fee. Per-size availability uses a tiny GraphQL response per product, so it does not need a separate product-detail event. Full product pages are only fetched for direct product URLs; that path still supports the optional product-detail event. The free preview is limited to 50 products without per-size stock.
Example Input
{"searchTerms": ["nike air max"],"domain": "de","maxItems": 200,"scrapeDetails": true,"onSaleOnly": true,"brandIncludes": ["Nike"],"maxConcurrency": 10,"proxyConfig": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
This searches the German storefront for discounted Nike Air Max products and keeps up to 200 listing rows with per-size availability. Lower concurrency if Zalando returns challenge pages.
Example Output
{"url": "https://www.zalando.de/nike-air-max-90-sneaker-white-ni111a0n7-a11.html","sku": "NI111A0N7-A11","name": "Nike Air Max 90 - white/black","brand": {"name": "Nike","uri": "https://www.zalando.de/nike/"},"price": {"original": 149.99,"current": 119.99,"promotional": null},"priceCurrency": "EUR","available": true,"comingSoon": false,"flags": ["sale"],"sizes": [{"size": "42","sku": "NI111A0N7-A11042","inStock": true,"stockStatus": "MANY"},{"size": "43","sku": "NI111A0N7-A11043","inStock": false,"stockStatus": "NONE"}],"stockStatusSource": "graphql-availability","stockStatusExact": false,"thumbnail": "https://img01.ztat.net/article/spp-media-p1/example.jpg?filter=packshot","images": ["https://img01.ztat.net/article/spp-media-p1/example.jpg?filter=packshot"],"videos": [],"scrapedAt": "2026-10-22T12:00:00.000Z"}
Values are illustrative; exact SKU, image and size objects depend on the market. stockStatus: "MANY" here means the size is available, not an exact quantity. A product can have available: true while specific sizes are sold out.
Integrations and Automation
Run the Actor through the Apify API, Apify MCP, schedules, Zapier, Make or n8n. Export JSON, CSV, Excel or HTML, or push rows to Google Sheets, Airtable, BigQuery, a database, a PIM or a webhook.
For price monitoring, key the warehouse on sku plus market. Store price.original, price.current and available per snapshot, then compare runs. Monitor mode is lighter because it emits only changed products with a changeType.
For assortment analysis, aggregate by brand.name, category URL and sizes.stockStatus. Keep the source market separate, because the same SKU can differ in pricing, availability and size runs across countries.
Related Actors
- IKEA Scraper - product, price and availability data from IKEA markets.
- Shopify Product Scraper - product catalogs, variants, prices and inventory from Shopify stores.
- eBay Sold Items Scraper - completed-listing prices for resale and secondary-market comparisons.
FAQ
Which Zalando markets are supported?
The domain field accepts market codes such as at, de, fr, it, nl, pl and se. Start URLs point at any Zalando storefront and keep their own market.
Why did I get fewer than maxItems products?
Filters, exhausted pages, deduplication and the item budget can reduce the count. On the free tier, results are capped at 50 regardless of maxItems.
Are sizes and stock status always included?
Paid listing runs include size labels, variant SKUs and per-size inStock/stockStatus from Zalando's GraphQL availability query when scrapeDetails is enabled (the default). The free tier returns size labels and SKUs without per-size stock. Exact FEW/MANY quantities are only read from direct product URLs, which use a full PDP fetch.
What does monitor mode change?
It compares the current run with state under monitorKey and emits only new, price-change and stock-change rows. Unchanged products are skipped. Use a different key for each product set.
Why is priceCurrency null?
The Actor reads priceCurrency from Zalando's embedded hydration data when it is present. It can still be null for some markets or card formats; derive it from the storefront domain if you need a guaranteed value.
Do I need a Zalando account or API key?
No. The Actor reads public storefront pages. It does not log in, add to a cart or access account data.
For AI Agents and LLM Apps
The Actor provides structured product records with stable SKUs, brand data, price fields, sizes and stock status. It is callable through the Apify API and Apify MCP for commerce research and monitoring agents.
- One row is one product in one Zalando market. Use
skuplus market as the stable key. - Prices are numeric, but
priceCurrencycan be null. Resolve currency from the storefront domain before comparing rows. - Listing rows include images, size labels/SKUs, flags and currency. Paid runs add per-size
inStock/stockStatusfrom a lightweight GraphQL query; free-tier runs do not include per-size stock. - Monitor mode emits a
changeTypeand omits unchanged products, so absence from a run does not mean the product disappeared. - The free tier is capped at 50 products and five concurrent requests.
Legal and Compliance
This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Zalando. It reads publicly visible product data for market research, price comparison and catalog analysis. Zalando terms and applicable consumer and competition law still apply.
Product data can include brand names, images and pricing protected by third-party rights. Keep attribution where required, do not republish copyrighted media as your own, and treat prices as observations rather than guaranteed live offers. Do not use the Actor to overload a storefront or bypass access controls.
SEO Keywords
Zalando scraper, Zalando product data, Zalando price tracker, Zalando fashion scraper, Zalando API alternative, Zalando catalog data, Zalando sizes, Zalando stock status, fashion product scraper, European fashion data, Zalando markdown tracking, Zalando brand monitoring, Zalando dataset, competitor price monitoring, fashion ecommerce data, Zalando sale tracker, product availability data, Zalando market research, fashion catalog enrichment, Zalando listing scraper