Zalando Products Scraper
Pricing
from $0.90 / 1,000 item processeds
Zalando Products Scraper
Scrape public Zalando search and category products with prices, brands, images, sizes, availability, and optional product detail fields.
Pricing
from $0.90 / 1,000 item processeds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape public Zalando search and category pages into clean product rows with product IDs, prices, brands, image URLs, source pages, and parser diagnostics.
Use it for ecommerce monitoring, assortment research, merchandising reports, competitor price checks, and API-driven catalog workflows.
At a glance
- Primary job: Extract priced Zalando product listings from public country-domain search and category pages.
- Input: Start URLs, optional search keyword/domain, result limit, proxy settings, and debug mode.
- Output: One dataset row per valid priced product, deduplicated by Zalando SKU/product ID.
- Best for: Small-to-medium recurring price and assortment checks where empty extraction should fail loudly.
Common workflows
- Keyword research: Run a Zalando keyword such as
cap,sneakers, orrunning shoesand export products to CSV or Excel. - Category monitoring: Paste a Zalando category URL and schedule repeat runs to compare prices and availability over time.
- Catalog enrichment: Feed product URLs, image URLs, IDs, prices, and brands into BI, pricing, or marketplace systems.
- Automation: Trigger runs through the Apify API, webhooks, MCP tools, or dataset integrations.
Input recipes
- Small smoke test:
startUrls: [{"url":"https://www.zalando.at/herren/?q=cap"}],maxItems: 3, residential proxy countryATif needed. - Keyword run: Set
query: "cap",domain: "zalando.at", andmaxItems: 25. - Category monitor: Paste a stable Zalando category URL, keep
maxItemsfocused, and schedule the Actor daily or weekly.
What data can you extract?
| Field | Description |
|---|---|
productId, sku | Zalando article identifier parsed from product data or URL. |
url, pageUrl, sourceDomain | Product URL, source listing/detail page, and Zalando country domain. |
brand, name | Product brand and name when exposed in page data. |
price, originalPrice, currency, discount | Current price and optional price metadata. |
color, sizes, availability | Optional variant and availability data when exposed. |
imageUrls, description, breadcrumbs, categoryPath | Product media and optional descriptive fields. |
scrapedAt, detailStatus, missingFields, parserVersion | Run timestamp and diagnostics for monitoring parser quality; V1 listing runs mark detailStatus as not_requested. |
Input configuration
| Setting | JSON key | Use it for | Example |
|---|---|---|---|
| Zalando start URLs | startUrls | Search, category, or product URLs from supported Zalando domains. | https://www.zalando.at/herren/?q=cap |
| Search keyword | query | Build a Zalando catalog search URL for the selected domain. | cap |
| Zalando domain | domain | Country domain for keyword searches. | zalando.at |
| Maximum products | maxItems | Cap saved priced products and control spend. | 25 |
| Maximum concurrency | maxConcurrency | Advanced throttle for cautious request pacing. | 2 |
| Proxy configuration | proxyConfiguration | Use Apify Proxy; residential country proxies can help with country-specific pages. | { "useApifyProxy": true } |
| Debug mode | debugMode | Store a bounded HTML sample for parser drift diagnosis. | false |
Example input
{"startUrls": [{ "url": "https://www.zalando.at/herren/?q=cap" }],"query": "cap","domain": "zalando.at","maxItems": 3,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "AT"}}
Example output
{"productId": "UR622E08F-A11","sku": "UR622E08F-A11","url": "https://www.zalando.at/urban-classics-loose-stoffhose-whitesand-ur622e08f-a11.html","sourceDomain": "zalando.at","query": "cap","pageUrl": "https://www.zalando.at/herren/?q=cap","brand": "Urban Classics","name": "Loose - Trousers","categoryPath": [],"price": 34.99,"originalPrice": null,"currency": "EUR","discount": null,"color": null,"sizes": [],"availability": null,"imageUrls": [],"description": null,"breadcrumbs": [],"scrapedAt": "2026-07-18T08:50:00.000Z","detailStatus": "not_requested","missingFields": [],"parserVersion": "zalando-products-v1"}
Pricing
| Event | Free | Bronze | Silver | Gold | Platinum | Diamond | Charged when |
|---|---|---|---|---|---|---|---|
| Start | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | $0.005 | Once when the Actor starts. |
| Item processed | $0.0015 | $0.0013 | $0.0011 | $0.0009 | $0.0007 | $0.0005 | Each valid priced product is saved. |
Tips for best results
- Start small: Use
maxItems: 3-10until the target domain and proxy settings are verified. - Use country-matched proxies: For country domains such as
.at, a matching residential country can improve consistency. - Avoid empty-success monitoring: The Actor fails when no priced products are extracted, so scheduled jobs do not silently produce empty datasets.
API usage
Node.js:
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor("fetch_cat/zalando-products-scraper").call({startUrls: [{ url: "https://www.zalando.at/herren/?q=cap" }],maxItems: 3});console.log(run.defaultDatasetId);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("fetch_cat/zalando-products-scraper").call(run_input={"startUrls": [{ "url": "https://www.zalando.at/herren/?q=cap" }],"maxItems": 3,})print(run["defaultDatasetId"])
cURL:
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~zalando-products-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":[{"url":"https://www.zalando.at/herren/?q=cap"}],"maxItems":3}'
MCP and AI agents
Use this Actor from MCP-compatible tools through the official Apify MCP Server.
$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/zalando-products-scraper"
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/zalando-products-scraper"}}}
Example prompt: "Run Zalando Products Scraper for a small Zalando Austria cap search and summarize product IDs, prices, and brands."
Limits and caveats
- Coverage: Zalando country pages differ; validate a small run before scheduling large jobs.
- Freshness: Prices and availability can change after a run finishes.
- Blocking: Some domains can return edge pages or sparse HTML; use debug mode for reproducible issue reports.
- Detail fields: V1 prioritizes stable priced product rows; optional fields are left empty when not exposed.
Legality and responsible use
Scrape only public data you are allowed to access. Follow Zalando terms, Apify terms, robots guidance where applicable, and privacy/data-protection laws.
Related actors
FAQ
Why did my run fail instead of returning an empty dataset?
Empty product extraction is treated as a failure to make monitoring reliable and catch parser drift, blocking, or unsupported URLs early.
Can I export results?
Yes. Apify datasets support JSON, CSV, Excel, XML, RSS, and API access.
Why are some optional fields empty?
Zalando pages do not expose every field in every response. The Actor leaves unavailable fields empty instead of guessing.
Support
Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID or URL, input JSON, expected output, actual output, and one reproducible public URL from Zalando.