NET-A-PORTER Scraper — Luxury Products, Sizes & Style Codes avatar

NET-A-PORTER Scraper — Luxury Products, Sizes & Style Codes

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
NET-A-PORTER Scraper — Luxury Products, Sizes & Style Codes

NET-A-PORTER Scraper — Luxury Products, Sizes & Style Codes

Scrape NET-A-PORTER for designer clothing, bags, shoes and accessories: prices, per-size stock, category tree, images and the manufacturer style code (mfPartNumber) you can join on across retailers. 20+ markets, no login, no proxy needed.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

NET-A-PORTER Scraper

Search NET-A-PORTER and get back structured product data: designer, price, the full size ladder with per-size stock, category tree, images, and the manufacturer's own style code.

Why use this actor

Most luxury scrapers hand you a name and a price. The useful part of this one is mfPartNumber, the brand's own style code, which lets you recognise the same physical garment when it appears on a different retailer's site.

If you are price-monitoring, building a resale pricing tool, or maintaining a product database across several luxury retailers, that code is the difference between "two listings that look similar" and "the same item, two prices".

What makes the style code matter

Luxury has no EAN. Groceries and electronics have a barcode that every retailer shares, so joining catalogues is trivial. Fashion does not. Each retailer invents its own SKU, and the same jacket is P01165736 at one shop and 1647597289517280 at another. There is nothing to join on.

NET-A-PORTER publishes the manufacturer's code. Example: 834141QMAC44164 on an Alexander McQueen denim blazer. That is the code McQueen itself uses (alexandermcqueen.com/.../stretch-denim-jacket-834141QMAC44164.html), and it has the structure printed on the physical hangtag: six-digit style, five-character collection and fabric, four-digit colour.

Two of the big luxury retailers expose a real manufacturer code. Farfetch does it as brandStyleId, NET-A-PORTER as mfPartNumber. NET-A-PORTER is the cheaper harvest of the two: one ordinary brand query returns 20 to 50 codes in a single response.

One honest limitation. NET-A-PORTER's search index does not tokenise these codes, so you cannot search by a style code. Searching 834141QMAC44164 returns nothing. The workflow is: search by brand and category, then match on mfPartNumber yourself. A brand query costs the same as any other and hands back a batch of codes to filter against.

How to scrape NET-A-PORTER data

  1. Put one or more search terms in Search Queries. Brand plus category works best: gucci bag, mcqueen denim, loewe espadrilles.
  2. Pick a Market. nap_be is Belgium in EUR; there are 19 markets and each has its own prices and stock.
  3. Set Max Items and run it.

Keep queries short. NET-A-PORTER's index ANDs every token and does not stem, so each extra word can collapse the result set: mcqueen denim returns 5 hits where alexander mcqueen denim jacket returns 1, and prada shoes returns 0 where prada returns 15. The actor handles this for you (it trims stopwords, shortens long designer names, and re-asks with a shorter query when a result set comes back near-empty), but you will get better results by asking bluntly in the first place.

No login, no cookies to supply, and no proxy. The actor does the anti-bot work itself.

Input

FieldTypeRequiredDescription
searchQueriesArrayNoOne or more search terms. Default ["gucci bag"]
searchQueryStringNoSingle-term alternative to searchQueries
storeCodeStringNoMarket to read, default nap_be. See the market list below
maxItemsIntegerNoStop after this many products across all queries. Default 50
pageSizeIntegerNoProducts per search request, default 40. 50 is the ceiling
fetchProductDetailsBooleanNoFetch per-size availability. Default true
normalizeQueriesBooleanNoTrim long queries to the tokens the index matches. Default true
proxyConfigurationObjectNoIgnored on purpose, see Limitations

Markets

nap_be (Belgium), nap_nl, nap_fr, nap_de, nap_it, nap_es, nap_at, nap_ie, nap_dk, nap_se, nap_ch, nap_gb (GBP), nap_us (USD), nap_ca, nap_au, nap_hk, nap_jp, nap_kr, nap_ae.

Output

FieldTypeExample
nameString"Denim blazer"
brandString"MCQUEEN"
mfPartNumberString"834141QMAC44164"
priceNumber1990
currencyString"EUR"
originalPriceNumberOnly when the item is actually reduced
discountString"-30%", only when reduced
sizesArrayFull ladder, one entry per SKU, with availability
inStockBooleantrue when any size is buyable
stockBadgesArray["LOW STOCK"], ["EXCLUSIVE"], ["Sold out"]
lowStockBooleantrue
categoryArray["Clothing", "Jackets", "Blazers"]
categoryPathString"Clothing > Jackets > Blazers"
colourString"Blue"
imageUrlStringMain image at 920px
imageUrlsArrayAll available views
urlStringProduct page on the chosen market
descriptionStringNET-A-PORTER's editorial copy
compositionString"71% Cotton 29% Polyester"
sizeAndFitStringFit notes and model measurements
sizeSchemaString"RTW - Italy"
productIdStringNET-A-PORTER's internal ID
partNumberStringVariant code from the product URL
storeCodeString"nap_be"
searchQueryStringThe query that returned this product
scrapedAtStringISO 8601 timestamp

Prices are converted for you

NET-A-PORTER's own API quotes money in minor units with a divisor ({"amount": 199000, "divisor": 100}). The price and originalPrice fields are already converted to major units, so 1990 means EUR 1990.00. The divisor is read from the response rather than assumed, so markets that do not use cents come out right too.

Size ladder

Each entry in sizes is one SKU:

FieldMeaning
sizeBrand size label. ONE SIZE for bags and most jewellery
schemasThe same size in other scales: IT, UK, US, FR, EU, JP, AU, DE, DK, RU, KR, SML
availableBuyable right now
soldOutCarried in this size, currently out of stock
notStockedOnlineNever carried online in this size
skuIdNET-A-PORTER's SKU id
partNumberPer-size part number
eanWhere NET-A-PORTER publishes one, which is not always

The distinction between soldOut and notStockedOnline matters if you are tracking demand. A size that sold out was stocked and sold; a size marked notStockedOnline was never offered.

Example output

{
"name": "Denim blazer",
"brand": "MCQUEEN",
"mfPartNumber": "834141QMAC44164",
"price": 1990,
"currency": "EUR",
"sizes": [
{
"size": "40",
"schemas": { "IT": "IT 40", "UK": "UK 8", "US": "US 4", "FR": "FR 36", "SML": "S" },
"available": true,
"soldOut": false,
"notStockedOnline": false,
"skuId": "3074457345629607675",
"partNumber": "0400664169370",
"ean": "813894730"
},
{
"size": "42",
"schemas": { "IT": "IT 42", "UK": "UK 10", "US": "US 6", "SML": "M" },
"available": false,
"soldOut": true,
"notStockedOnline": false,
"skuId": "3074457345629607677",
"partNumber": "0400664169387"
}
],
"inStock": true,
"stockBadges": ["LOW STOCK"],
"lowStock": true,
"category": ["Clothing", "Jackets", "Blazers"],
"categoryPath": "Clothing > Jackets > Blazers",
"colour": "Blue",
"imageUrl": "https://www.net-a-porter.com/variants/images/46376663162865360/in/w920.jpg",
"url": "https://www.net-a-porter.com/en-be/shop/product/mcqueen/clothing/blazers/denim-blazer/46376663162865360",
"composition": "98% Cotton 2% Elastane",
"sizeSchema": "RTW - Italy",
"productId": "3074457345629607670",
"partNumber": "46376663162865360",
"storeCode": "nap_be",
"searchQuery": "mcqueen denim",
"scrapedAt": "2026-07-29T09:15:22.104Z"
}

Speed and cost

The run starts with a one-off browser warm-up of about 7 seconds. After that, every search page and every product detail costs roughly 0.2 seconds.

With per-size availability on, one product is one detail request. A measured run: 15 products across 3 queries in 12.6 seconds including warm-up. A 500-item run lands around 2 minutes.

Turning Fetch Per-Size Availability off removes one request per product and roughly halves the time, at the cost of the sizes ladder, description, composition and sizeAndFit.

No proxy is used, so there is no proxy cost.

Limitations

  • You cannot search by style code. NET-A-PORTER's index does not tokenise mfPartNumber. Search by brand and category, then filter on the code.
  • Leave the proxy off. Residential exits score worse on this site than a direct connection: measured 403 through a residential exit where direct returned 200. The setting is honoured if you turn it on, but it is an escape hatch for a burned IP range, not a default.
  • The occasional run needs a second attempt. NET-A-PORTER's protection scores the exit IP, and consecutive runs from the same range do not always get the same answer. The actor retries the browser warm-up up to four times with a fresh fingerprint each time, so this normally costs you 10 to 20 seconds rather than a failed run.
  • Search relevance is weak. The index ANDs tokens and does not stem, so dress finds 2,450 items but prada shoes finds none. Ask bluntly.
  • Per-size availability needs the detail fetch. With fetchProductDetails: false, sizes comes back empty and inStock falls back to the sold-out badge.
  • One colourway is one record. A shoe in three colours returns three records with three different style codes, which is correct: each colourway has its own manufacturer code.
  • NET-A-PORTER is a full-price retailer. originalPrice and discount are usually absent because most items are not reduced.
  • Data is scraped from the public website and may change without notice. Respect the website's terms of service and use responsibly.
  • Mytheresa Scraper — the other big European full-price luxury retailer. No manufacturer style code, so it cannot be joined the same way.
  • Vinted Scraper — Europe's largest secondhand fashion marketplace. Pair it with this actor to compare retail against resale.
  • Primark Scraper — the other end of the fashion price ladder.
  • Rituals Scraper — luxury cosmetics and home fragrance.
  • ICI PARIS XL Scraper — Belgian beauty and perfume.

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple luxury sources into one feed joined on the manufacturer style code.