Yoox Scraper — Outlet Prices With Supplier RRP
Pricing
from $1.20 / 1,000 result scrapeds
Yoox Scraper — Outlet Prices With Supplier RRP
Scrape yoox.com, YNAP's luxury outlet. Every product comes back with the supplier-stated RRP, its source and its date, next to the current outlet price and the markdown between them. Plus brand, sizes, stock, category, colour and images.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Yoox Scraper
Get Yoox's outlet catalogue with the supplier-stated RRP on every single product, so you can tell a real discount from a marketing one.
Yoox is YNAP's off-season luxury outlet. This actor reads its product catalogue and returns the current outlet price, the recommended retail price the supplier stated, the date that RRP was stated, and the markdown between the two. Plus brand, size ladder, availability, category, colour, materials and images.
The field nobody else publishes
This is the whole reason to point a scraper at Yoox rather than at another luxury site.
| Retailer | What the "was" price actually means |
|---|---|
| Farfetch | Farfetch's own previous price |
| Mytheresa | Mytheresa's own previous price |
| Net-a-Porter | Net-a-Porter's own previous price |
| Yoox | The RRP the supplier stated, with a source and a date |
Every other luxury retailer shows you what they used to charge. That number moves with their own promo calendar and tells you very little about what the piece is worth. Yoox publishes retailPrice with retailPriceSource: "Supplier" and retailPriceDate, plus a retailPriceTrusted flag. That is the brand's number, not the shop's.
For price comparison, resale valuation, arbitrage screening or brand-level pricing research, that makes Yoox the reference point rather than the footnote.
Because of that, this actor never gives you a markdown price on its own. currentPrice and retailPrice always travel together in the output, so nothing downstream can mistake an outlet discount for a market price.
Why use this actor?
- Resale and arbitrage — screen for pieces trading far below their stated RRP, with the RRP itself as the anchor.
- Competitive pricing — see what a brand's own RRP is versus what the outlet channel actually clears at.
- Market research — measure real markdown depth per brand, category and season across a 150,000-product catalogue.
- Product feeds — brand, category, colour, composition, size ladder, availability and gallery images in one record.
How to scrape Yoox data
- Open the actor on Apify and pick a market (Belgium, Luxembourg or the Netherlands).
- Type a search query, or leave it empty to browse the entire catalogue for that market.
- Optionally narrow with brand, gender, department, price range or minimum markdown against RRP.
- Set Max items and run it.
- Export the dataset as JSON, CSV, Excel or read it straight from the Apify API.
No login, no cookies, no proxy, no browser. Yoox's catalogue is served by a public search index, so a run is close to instant: 3,000 products come back in about 3 seconds.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Single keyword search, e.g. gucci bag. Empty browses the whole catalogue. |
searchQueries | Array | No | Several searches in one run. Takes precedence over searchQuery. Results are de-duplicated. |
market | String | No | BE, LU or NL. Default BE. |
maxItems | Integer | No | Max products across all queries. Default 100. |
brand | String | No | Plain-language brand name, e.g. prada. Resolved against Yoox's own brand list. |
gender | String | No | any, Women or Men. Default any. |
department | String | No | Yoox department code for a finer category cut, e.g. ShoesWomen. |
minPrice | Integer | No | Minimum current outlet price in EUR. |
maxPrice | Integer | No | Maximum current outlet price in EUR. |
minDiscountPercent | Integer | No | Only items marked down at least this much against RRP. |
onlyPurchasable | Boolean | No | Skip items that cannot be bought. Default true. |
algoliaAppId | String | No | Override, only needed if Yoox changes its public search application. |
algoliaApiKey | String | No | Override, only needed if Yoox rotates its public search key. |
proxyConfiguration | Object | No | Ignored on purpose. See "Why there is no proxy" below. |
Output
| Field | Type | Example |
|---|---|---|
name | String | "GUCCI Mules & Clogs" |
brand | String | "GUCCI" |
currentPrice | Number | 873 |
retailPrice | Number | 1490 |
retailPriceSource | String | "Supplier" |
retailPriceDate | String | "2025-09-03" |
retailPriceTrusted | Boolean | true |
markdownPercentage | Number | 41.41 |
fullPrice | Number | 1028 |
currency | String | "EUR" |
sizes | Array | ["36.5","37","37.5","38"] |
sizeSystem | String | "Footwear" |
inStock | Boolean | true |
category | String | "Mules & Clogs" |
categoryGroup | String | "FOOTWEAR" |
gender | String | "Woman" |
colour | String | "Black" |
colourHex | String | "#000000" |
material | String | "Leather" |
composition | String | "Leather" |
description | String | "mules, glossed-leather, plain colour, ..." |
imageUrl | String | Primary gallery shot |
imageUrls | Array | All gallery shots |
url | String | Yoox product page for the selected market |
yooxCode | String | "32047896TE" |
modelId | String | "32047896" |
preowned | Boolean | false |
seasonality | String | "Mid-season" |
departments | Array | ["Women","ShoesWomen", ...] |
market | String | "BE" |
scrapedAt | String | ISO 8601 timestamp |
price and originalPrice are also present as aliases of currentPrice and retailPrice, so the dataset drops straight into tooling built for a standard product feed.
Example output
{"name": "GUCCI Mules & Clogs","brand": "GUCCI","price": 873,"currency": "EUR","url": "https://www.yoox.com/be/32047896TE/item","scrapedAt": "2026-07-29T08:21:14.708Z","currentPrice": 873,"retailPrice": 1490,"originalPrice": 1490,"retailPriceSource": "Supplier","retailPriceDate": "2025-09-03","retailPriceTrusted": true,"markdownPercentage": 41.41,"discount": "-41%","fullPrice": 1028,"markdownPercentageFromFullPrice": 15.08,"sizes": ["36.5", "37", "37.5", "38", "38.5", "39", "40", "41"],"sizeSystem": "Footwear","inStock": true,"category": "Mules & Clogs","categoryGroup": "FOOTWEAR","categories": ["FOOTWEAR", "Mules & Clogs"],"gender": "Woman","colour": "Black","colourHex": "#000000","material": "Leather","composition": "Leather","description": "mules, glossed-leather, plain colour, brand logo, buckle fastening, pointed toe, wedge, leather sole, leather lining","imageUrl": "https://cdn.yoox.biz/32/32047896te_11_f.jpg","imageUrls": ["https://cdn.yoox.biz/32/32047896te_11_f.jpg","https://cdn.yoox.biz/32/32047896te_11_d.jpg","https://cdn.yoox.biz/32/32047896te_11_e.jpg","https://cdn.yoox.biz/32/32047896te_11_r.jpg"],"yooxCode": "32047896TE","modelId": "32047896","preowned": false,"seasonality": "Mid-season","market": "BE","searchQuery": "gucci"}
Read this before matching Yoox against another retailer
yooxCode (and modelId) look exactly like a manufacturer style code and are not one. They are YNAP-assigned identifiers. The per-size GTINs Yoox shows on its product pages have the same problem: they all start 04996, which is a YNAP prefix rather than the brand's.
So neither is usable as a cross-retailer join key. They are stable and useful inside Yoox, and nowhere else. To match a Yoox item against Farfetch, Net-a-Porter or a brand's own site, join on brand plus normalised model plus colour, or use Farfetch's brandStyleId or Net-a-Porter's mfPartNumber as the spine and attach Yoox to it.
This gets misunderstood often enough that it is worth stating plainly: do not build a product-matching scheme on yooxCode.
Why there is no proxy
The proxyConfiguration input exists for Apify Store compatibility and is deliberately ignored.
Yoox's website sits behind Akamai, but its product catalogue is served by a public search index on a different host that has no bot protection in front of it. Direct requests work, and they work better than proxied ones: Belgian residential exits get HTTP 403 from Yoox where a direct connection succeeds, because those IP ranges are already badly scored.
Turning on a residential proxy here would make the actor slower, more expensive and less reliable. So it does not use one.
Markets
Belgium, Luxembourg, the Netherlands, France and Germany. Assortment and ranking differ per market, so these are five genuinely different catalogues rather than five views of one. The French catalogue is roughly three times the size of the Belgian one.
All five price in EUR.
Great Britain, Austria, Switzerland and Poland are reachable and may be added later. They are left out for now because their product-URL path segment has not been confirmed, and a guessed segment would produce dead links.
Depth: this actor is index-only
Every product comes from Yoox's own catalogue search index. There is one request per page of up to 1,000 products and no per-product page fetch, which is why a run costs almost nothing and finishes in seconds.
That also sets the ceiling on what it can return. Fields the catalogue index carries — price, retail price, sizes in stock, colour, composition, images, category — are complete. Fields that only exist on the product page, such as per-size GTINs, are not available at any depth here. There is no crawl mode that would fetch them.
Limitations
- Outlet prices, by definition. Everything on Yoox is off-season stock.
currentPriceis an outlet price. Always read it next toretailPrice. - No free-text product title. Yoox does not publish one.
nameis composed from brand plus micro-category, which is what its own product cards show. - Sizes are availability, not a full ladder. The catalogue lists only sizes that can currently be bought, so every entry in
sizesis in stock and an empty array means sold out. Sizes that were never stocked do not appear. - No per-size GTINs. Those live on the product page rather than in the catalogue, and as explained above they are YNAP-assigned anyway.
- 20,000 results per query. The catalogue caps how deep any single query can page. Narrow with brand, department or a price range to get past it.
- The search key can rotate. Yoox's public search key is stable but not permanent. If a run fails with HTTP 401 or 403, the log tells you exactly where to read the new one, and you pass it as
algoliaApiKey.
Cost
A run costs almost nothing to execute: 3,000 products come back in about 3 seconds, using three requests and no proxy traffic. You pay the per-result price, not a compute or proxy bill.
Related scrapers
- Net-a-Porter Scraper -- Same YNAP group, full-price luxury
- Mytheresa Scraper -- German luxury retailer, designer fashion
- Vinted Scraper -- European second-hand fashion marketplace
- Otto Scraper -- Large German general retailer
- Bol Scraper -- Benelux marketplace
Legal
This actor reads publicly available catalogue data. It does not log in, does not bypass any access control, and does not collect personal data. You are responsible for how you use the output, including compliance with Yoox's terms and with applicable copyright and database rights.