Zalando Products Scraper

Scrape public Zalando search and category products with prices, brands, images, sizes, availability, and optional product detail fields.

Data fields

FieldTypeDescription
productIdstringValue exported as productId.
skustringValue exported as sku.
urlstringValue exported as url.
sourceDomainstringValue exported as sourceDomain.
querystringValue exported as query.
pageUrlstringValue exported as pageUrl.
brandstring | nullValue exported as brand.
namestring | nullValue exported as name.

Input preview

startUrlsZalando start URLs
querySearch keyword
domainZalando domain
maxItemsMaximum products
maxConcurrencyMaximum concurrency
proxyConfigurationProxy configuration

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Scrape public Zalando search and category pages into product rows with verified names, SKU-scoped prices, optional brands, source pages, and parser diagnostics. Rows lacking a real card name or price are skipped.

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 products from public country-domain search, category, and product pages. Product-page inputs return only the requested SKU, never substitute recommendations.
  • 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, or running shoes and export products to CSV or Excel.
  • Category monitoring: Paste a Zalando category URL and schedule repeat runs to compare prices over time; availability is included only when Zalando exposes it.
  • 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 country AT if needed.
  • Keyword run: Set query: "cap", domain: "zalando.at", and maxItems: 25.
  • Category monitor: Paste a stable Zalando category URL, keep maxItems focused, 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; Listing runs mark detailStatus as not_requested; parsed product-page rows use enriched and include brand and image when exposed.

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"
}

Tips for best results

  • Start small: Use maxItems: 3-10 until 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 ApifyClient

client = 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.

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.

Common questions

Questions and answers reused from the canonical actor README.

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.