← Blog

Fashion

Zalando Price Tracker: Price Alerts and Price History

Track Zalando prices, discounts and size availability across 23 country stores. Set up Zalando price alerts and build a price history, with API examples.

Epic Scrapers

Zalando runs sales constantly, and prices on the same sneaker or jacket can move several times a month. If you’re waiting for a specific item to drop, or you sell the same brands and need to know when Zalando undercuts you, refreshing product pages by hand doesn’t scale. Zalando’s own wishlist will nudge you about some sales, but it won’t give you a price history, a spreadsheet, or a webhook.

The Zalando Price Tracker does. You give it Zalando product URLs, run it on a schedule, and each run checks the current price, discount and sizes, compares them with the previous check, and tells you exactly what changed.

What the Zalando price tracker returns

Each input URL produces one row per run:

Group Fields
Product sku, name, brand, color, category, url, sourceUrl, imageUrl
Price currency, currentPrice, originalPrice, discount, discountPercent
Change priceChanged, previousPrice, priceDifference, priceDifferencePercent
Sizes sizes (each with size, sku and availability)
Extra attributes (optional), checkedAt, status

status is OK, NOT_FOUND or ERROR, so a product that’s been delisted shows up as a clear record instead of silently disappearing. priceDifference is the current price minus the previous one, so a negative number is a price drop.

Supported stores cover 23 countries: Austria, Belgium, Switzerland, the United Kingdom, Czechia, Germany, Denmark, Spain, Finland, France, Croatia, Hungary, Ireland, Italy, Lithuania, the Netherlands, Norway, Poland, Portugal, Romania, Sweden, Slovenia and Slovakia. The tracker keeps a separate price baseline for each product and store, so you can follow the same item on zalando.de and zalando.it side by side.

How to set up Zalando price tracking

  1. Open the Zalando Price Tracker and click Try for free.
  2. Paste one or more Zalando product page URLs into Product URLs (productUrls). These must be product detail pages, the ones ending in something like -ni112o0p5-a27.html. Search, category and brand pages aren’t supported.
  3. Choose whether to include sizes (includeSizes, on by default) and detailed attributes (includeAttributes, off by default).
  4. Click Start. The first run records the baseline price for each product.
  5. Run it again later, or put it on a schedule, and every run after that reports changes.

A typical input:

{
    "productUrls": [
        "https://www.zalando.it/nike-sportswear-air-max-90-sneakers-basse-whitecrimson-ni112o0p5-a27.html"
    ],
    "changeOnly": false,
    "includeSizes": true,
    "includeAttributes": false,
    "maxConcurrency": 3
}

maxConcurrency sets how many products are checked at the same time, from 1 to 5. The proxy option is off by default; if Zalando starts blocking requests, switch it to an Apify residential proxy.

Sample output

A row from a later run, after the price dropped:

{
    "sku": "NI112O0P5-A27",
    "name": "AIR MAX 90",
    "brand": "Nike Sportswear",
    "color": "white/crimson",
    "category": "Shoes",
    "currency": "EUR",
    "currentPrice": 119.99,
    "originalPrice": 149.99,
    "discount": 30,
    "discountPercent": 20,
    "sizes": [
        { "size": "42", "sku": "NI112O0P5-A270420000", "availability": "AVAILABLE" }
    ],
    "priceChanged": true,
    "previousPrice": 129.99,
    "priceDifference": -10,
    "priceDifferencePercent": -7.69,
    "checkedAt": "2026-10-03T08:00:00.000Z",
    "status": "OK"
}

On the very first run there’s nothing to compare against, so the change fields only start telling you something from the second run.

Zalando price alerts

To turn the tracker into a price alert:

  1. Set changeOnly to true. The dataset then contains only new products, products whose price changed, and errors. Unchanged products are left out.
  2. Save the input as a task in Apify Console and add a schedule. Daily (0 8 * * *) works for most wishlists; use hourly (0 * * * *) during big sale events.
  3. In the task’s Integrations tab, add an email, Slack, webhook, Make or Zapier integration that fires when a run succeeds.

Because the dataset only holds changes, every notification is something you care about. If you only want drops, filter on priceDifference < 0 in your Zapier or Make step, or in your own code as shown below.

Size availability is useful here too. Keep includeSizes on and you’ll see whether your size is AVAILABLE at the new price, which saves a click on a deal that’s already sold out in your size.

Building a Zalando price history

For a full history, keep changeOnly set to false so every scheduled run saves a complete snapshot of every product. Each row has sku and checkedAt, so appending runs to a Google Sheet (via the Google Sheets integration) or a database gives you a clean time series of currentPrice and discountPercent per product. Chart it and you’ll quickly see each item’s normal price, its usual sale price, and how often it goes on discount.

The same snapshot approach is described for secondhand fashion in our Vinted price tracking guide, if you’re comparing new and resale prices for the same brands.

Track Zalando prices through the API

Run the tracker and get results in one request:

curl -X POST "https://api.apify.com/v2/acts/epicscrapers~zalando-price-tracker/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"productUrls": ["https://www.zalando.it/nike-sportswear-air-max-90-sneakers-basse-whitecrimson-ni112o0p5-a27.html"], "includeSizes": true}'

In JavaScript with apify-client, reporting only price drops:

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('epicscrapers/zalando-price-tracker').call({
    productUrls: [
        'https://www.zalando.it/nike-sportswear-air-max-90-sneakers-basse-whitecrimson-ni112o0p5-a27.html',
    ],
    changeOnly: true,
    includeSizes: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();

for (const p of items) {
    if (p.status !== 'OK' || !(p.priceDifference < 0)) continue;
    const inStock = (p.sizes || []).filter((s) => s.availability === 'AVAILABLE').map((s) => s.size);
    console.log(`${p.brand} ${p.name}: ${p.previousPrice} -> ${p.currentPrice} ${p.currency} (sizes: ${inStock.join(', ')})`);
}

The price baseline is stored by the actor between runs, so calling it the same way from a cron job or serverless function keeps the comparisons working.

Use cases

Shoppers and deal hunters. Track a wishlist and get a message when an item drops, with your size’s availability in the same alert.

Brands and retailers. Monitor how Zalando prices your products or your competitors’ products across countries, and how deep and how often the discounts go.

Resellers. Watch retail prices on items you resell. A Zalando price cut on a popular sneaker is worth knowing about before you set your own resale price.

Analysts. Build price history datasets across the 23 stores to compare pricing between countries for the same sku.

FAQ

Does Zalando have a price alert?

Zalando can notify you about some wishlist items, but it doesn’t give you exported data, a price history or integrations. The tracker gives you all three and works for any product URL.

Is there an official Zalando API for prices?

Zalando’s APIs are for partners and merchants, not for reading public product prices. The tracker needs no account or API key.

Can I track a whole Zalando category?

No. The tracker works with product detail URLs only. Add every product you care about to productUrls.

The tracker reads public product information and no personal data. Follow Zalando’s terms and applicable law. This isn’t legal advice.

How much does it cost?

It’s charged per run and per result, with platform usage included. Check the Pricing tab on the actor page for current rates.

Start tracking

Pick the three or four Zalando products you’re waiting on, paste them into the Zalando Price Tracker, and run it once to set the baseline. Then turn on changeOnly, schedule it daily, and connect an email or Slack integration. The next price drop will find you. See the actor page for a summary.