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.
Fashion
Track Zalando prices, discounts and size availability across 23 country stores. Set up Zalando price alerts and build a price history, with API examples.
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.
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.
productUrls). These must be product detail pages, the ones ending in something like -ni112o0p5-a27.html. Search, category and brand pages aren’t supported.includeSizes, on by default) and detailed attributes (includeAttributes, off by default).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.
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.
To turn the tracker into a price alert:
changeOnly to true. The dataset then contains only new products, products whose price changed, and errors. Unchanged products are left out.0 8 * * *) works for most wishlists; use hourly (0 * * * *) during big sale events.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.
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.
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.
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.
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.
Zalando’s APIs are for partners and merchants, not for reading public product prices. The tracker needs no account or API key.
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.
It’s charged per run and per result, with platform usage included. Check the Pricing tab on the actor page for current rates.
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.