Sneaker Price Tracker: Sales, Price Drops & Restocks EU/UK/US
Pricing
from $1.80 / 1,000 sneakers
Sneaker Price Tracker: Sales, Price Drops & Restocks EU/UK/US
Track sneaker prices, sales and restocks in 13 shops (Kith, SNS, END., Footpatrol, Patta, Slam Jam...). Per-size stock, style-code match across shops, alerts for drops, sales and restocks.
Pricing
from $1.80 / 1,000 sneakers
Rating
0.0
(0)
Developer
APIzilla
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Sneaker Price Tracker: Sales, Price Drops & Restocks (EU, UK, US)
Track sneaker prices, sales and restocks in 13 sneaker shops at once: Kith, Sneakersnstuff (SNS), END., Footpatrol, Asphaltgold, Overkill, Patta, Slam Jam, Footdistrict, Concepts and more. Search by model ("Dunk", "Samba", "New Balance 990") or by exact style code ("DD1391-100"), get per-size stock, the old price and discount, the same shoe matched across shops with the cheapest shop, and, when you run it on a schedule, alerts for new releases, price drops, sales, restocks and sold-out sizes.
What it does
- One run, many shops. Reads each shop's public product feed (no browser, fast and cheap).
- Per-size stock. Every size with in stock true/false, as the shop writes it (US 9, EU 42 2/3, UK 8...).
- Sales. Current price, old price (
compareAtPrice),discountPercentandonSale. - Style codes. The manufacturer code (Nike
DD1391-100, adidasIE3437, New BalanceU9060BLK, ASICS1201A789-020...) is found in the SKU, tags or description and normalized, so the same shoe has the same code in every shop. - Cross-shop comparison. Offers grouped by style code: cheapest shop (in stock first), price range in EUR, sizes in stock per shop.
- Change tracking (the part other scrapers do not have). The Actor remembers every sneaker between runs and reports:
| Change | When |
|---|---|
new_release | A new product appeared in the shop |
price_drop / price_increase | The price changed (with old price, change and %) |
sale_started / sale_ended | The shop started or stopped showing an old price |
restock | One or more sizes came back in stock (the sizes are listed) |
sold_out | The last size (of your sizes) sold out |
removed | The product page is gone |
Turn on Only changes and schedule the Actor (for example every 30 minutes) to get a clean alert feed. Connect it to Slack, email, Telegram or a webhook with Apify integrations.
Shops
| Shop ID | Shop | Country | Currency |
|---|---|---|---|
kith-eu | Kith Europe (eu.kith.com) | France / EU | EUR |
kith-us | Kith (kith.com) | United States | USD |
sneakersnstuff | Sneakersnstuff / SNS | Sweden / EU | EUR |
footpatrol | Footpatrol | United Kingdom | GBP |
endclothing | END. Clothing | United Kingdom | GBP |
urbanindustry | Urban Industry | United Kingdom | GBP |
overkill | Overkill | Germany | EUR |
asphaltgold | Asphaltgold | Germany | EUR |
footdistrict | Footdistrict | Spain | EUR |
patta | Patta | Netherlands | EUR |
slamjam | Slam Jam | Italy | EUR |
oneblockdown | One Block Down | Italy | EUR |
concepts | Concepts (CNCPTS) | United States | USD |
You can also type a shop by its website, for example "www.patta.nl".
Examples
Find Dunks and Sambas in four EU shops
{"shops": ["kith-eu", "sneakersnstuff", "asphaltgold", "footdistrict"],"keywords": ["Dunk", "adidas Samba"],"maxItems": 100}
Restock and price-drop alerts for my size, every 30 minutes
{"shops": ["kith-eu", "sneakersnstuff", "footpatrol", "endclothing", "patta", "slamjam"],"keywords": ["New Balance 990", "Jordan 4"],"sizes": ["US 9", "EU 42.5", "UK 8"],"trackerName": "my-grails","onlyChanges": true}
Deals: 30% off or more, in stock
{"shops": ["asphaltgold", "overkill", "footdistrict", "sneakersnstuff", "urbanindustry"],"brands": ["Nike", "adidas", "New Balance", "ASICS"],"minDiscountPercent": 30,"onlyInStock": true,"maxItems": 500}
Watch exact shoes by style code across all shops
{"shops": ["kith-eu", "kith-us", "sneakersnstuff", "footpatrol", "endclothing", "overkill", "asphaltgold", "urbanindustry", "footdistrict", "patta", "concepts", "slamjam", "oneblockdown"],"styleCodes": ["1203A537-026", "U9060BLK", "IE3437"],"trackerName": "style-watch"}
Output
One item per sneaker offer (shop + product). Example (shortened):
{"id": "footdistrict:9123456789","changeType": "price_drop","changes": [{ "type": "price_drop", "price": 91, "previousPrice": 130, "priceChange": -39, "priceChangePercent": -30 }],"shop": "footdistrict","shopName": "Footdistrict","shopCountry": "ES","title": "Nike x Kobe Bryant Dunk Low Protro","brand": "Nike","styleCode": "IQ3919-001","currency": "EUR","price": 91,"compareAtPrice": 130,"discountPercent": 30,"onSale": true,"priceEur": 91,"available": true,"sizesAvailable": ["40", "41", "42", "42.5", "44"],"sizes": [{ "size": "40", "available": true, "price": 91, "variantId": "...", "sku": "IQ3919-001-40" }],"restockedSizes": [],"crossShop": { "shopCount": 2, "cheapestShop": "footdistrict", "cheapestPriceEur": 91, "isCheapest": true, "otherShops": [{ "shop": "kith-eu", "priceEur": 125 }] },"priceHistory": [{ "date": "2026-10-20", "price": 130 }, { "date": "2026-10-23", "price": 91 }],"lowestPriceSeen": 91,"url": "https://www.footdistrict.com/products/...","image": "https://cdn.shopify.com/...","publishedAt": "2026-10-14T10:00:00+02:00"}
The dataset has three views: Overview, Changes (alerts) and Cross-shop prices. The key-value store has:
COMPARISON: every style code with its offers per shop, cheapest shop, EUR price range and sizes per shop.OUTPUT: run summary: status per shop (ok, partial, blocked, failed), counts, changes and charged events.
How change tracking works
- Runs with the same Tracker name compare with each other. The baseline is saved per shop in a named key-value store
sneaker-tracker-<trackerName>in your account. - The first run saves the baseline (
changeType: "baseline"); changes show from the second run. - Every matching sneaker on the pages read is remembered, even if it is not saved because of Max sneakers. Changed sneakers are always saved first.
- Tracked sneakers that were not on the pages read this run are re-checked one by one (up to Re-check tracked sneakers, default 40 per shop), so their price drops and restocks are still caught, and a product whose page is gone becomes
removed. new_releaseis only reported for shops that were already tracked, and only for products that are really new (published after the last run, or the shop was read to the end last time).- If you change the keywords, brands or style codes, the tracker starts a new baseline for new releases (use a new tracker name for a different search).
- A change that could not be saved (max cost reached) is reported in the next run.
Sizes
Shops write sizes differently. A bare number from 30 up is EU; a smaller bare number uses the shop's own system (US for Kith, SNS, Patta, Slam Jam, One Block Down, Concepts; UK for Footpatrol, END., Urban Industry). Write the system in the Sizes input: "US 9", "EU 42", "EU 42 2/3", "UK 8". Sizes are not converted between systems (the conversion depends on the brand), so add each system you care about, for example ["US 9", "EU 42.5", "UK 8"].
Prices and currencies
Prices are in each shop's own currency (currency). priceEur converts with the European Central Bank reference rates of the day (frankfurter.app), or a fixed table if that service is down. This is approximate: shipping, duties and VAT differences between countries are not included.
Pricing
Pay per event. You only pay for results:
| Event | Price |
|---|---|
| Sneaker (one saved sneaker offer with prices and per-size stock) | $1.80 per 1,000 |
| Change alert (new release, price drop or rise, sale started or ended, restock, sold out, removed) | $0.50 per 1,000 |
| Actor start | $0.003 per run (at the default 512 MB; one start event per GB of memory, minimum one) |
Examples:
- 1,000 sneakers from 13 shops: about $1.80.
- A tracker of 500 sneakers run every hour with Only changes on: you pay only for the changed sneakers (each $0.0018 + $0.0005 per change) plus $0.003 per run. A quiet hour costs $0.003 (about $2.20 for a month of hourly runs).
- Sneakers that are read but not saved (filtered out, not changed in Only changes mode) cost nothing. Blocked shops cost nothing.
Set a maximum cost per run in the Apify Console; the Actor stops cleanly when it is reached and never saves a result it cannot charge.
StockX and Zalando (coming soon)
- StockX resale prices (lowest ask, last sale) by style code: coming soon. StockX blocks plain requests even through residential proxies in our tests. The switch is in the input but does nothing and costs nothing yet.
- Zalando prices by style code: coming soon. Zalando pages load fine, but its search results do not show style codes, and matching by name picked the wrong model too often. The switch does nothing and costs nothing yet.
Marketplace prices are coming soon. They are not in the price list yet and are never charged.
FAQ
Is a style code always found? Almost always for Nike, Jordan, adidas, New Balance, ASICS, Puma, Vans, Converse, Hoka and Salomon: 94% of those products in our test of all 13 shops (82-100% per shop). Smaller brands often have no standard code, and some shops do not show it for every product. Those sneakers have styleCode: null and are not in the cross-shop comparison.
Why fewer results than Max sneakers? Rare keywords may not be in the first pages. Each page has 250 products of the shop's footwear collection, newest first in most shops. Raise Max pages per shop.
How often can I run it? As often as you like. Every 15 to 60 minutes is common for restock alerts.
Does it buy or reserve shoes? No. It only reads public product data.
Which proxy? Apify Proxy with no group (the default). Shops use datacenter proxies and switch to RESIDENTIAL automatically only if they block (Footpatrol sometimes shows a Cloudflare check).
Can you add a shop? Most sneaker shops on Shopify can be added quickly. Open an issue with the website.
Limits
- Only public product data. No login, no raffles, no checkout.
- Shops change their catalogue layout from time to time; the run summary (
OUTPUT) shows the status of every shop. - Stock is what the shop shows at the time of the run.