THE OUTNET Scraper — Discounted Designer Fashion Prices & Stock avatar

THE OUTNET Scraper — Discounted Designer Fashion Prices & Stock

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
THE OUTNET Scraper — Discounted Designer Fashion Prices & Stock

THE OUTNET Scraper — Discounted Designer Fashion Prices & Stock

Scrape theoutnet.com (YNAP's designer outlet) by search, category or brand: current price, original price, discount percentage, brand, sizes, stock, images and descriptions. 17 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

19 hours ago

Last modified

Categories

Share

THE OUTNET Scraper

Search or browse THE OUTNET (YNAP's designer fashion outlet) and get back structured product data: current price, original price, discount percentage, brand, size/colour, stock, images and descriptions.

Why use this actor

THE OUTNET is an outlet — nearly everything is marked down from a full-price list. The number that actually matters for price-monitoring, deal-alert or resale-pricing use cases is the discount, not just the price, so this actor always tries to give you both the current and the original price in the same currency, and computes the percentage for you.

If you already run our NET-A-PORTER Scraper or Mytheresa Scraper, this is the outlet-side complement: same corporate family angle (YNAP), same "designer fashion, structured output" shape, but built for a completely different backend.

How to scrape THE OUTNET data

  1. Put one or more terms in Search Queries — a category (dress, bag, sneakers) or a designer name (zimmermann, valentino garavani) both work.
  2. Pick a Market. outnet_be is Belgium in EUR; there are 17 markets and each has its own currency.
  3. Set Max Items and run it.

No login, no cookies, and no proxy needed — THE OUTNET's search and product data live behind two fully public, unauthenticated JSON APIs, and a plain request from a normal browser user agent gets a 200 on the first try, every time (recon: docs/site-recon/theoutnet-com.md).

Category and brand mode

Set Category Values to browse a category listing directly instead of searching, e.g. ["Dresses"], ["Bags"], ["Sneakers"]. These are case-sensitive and must match THE OUTNET's own category label exactly. Category Values takes priority over Search Queries when both are set.

Set Brands to filter either mode down to one or more designers, e.g. ["Zimmermann"]. This works layered on top of a search or a category browse, so categorySlugs: ["Dresses"], brands: ["Zimmermann"] returns only Zimmermann dresses.

Input

FieldTypeRequiredDescription
searchQueriesArrayNoOne or more search terms. Default ["dress"]
searchQueryStringNoSingle-term alternative to searchQueries
categorySlugsArrayNoBrowse a category facet directly, e.g. ["Dresses"]. Case-sensitive. Takes priority over Search Queries
brandsArrayNoFilter by designer name, e.g. ["Zimmermann"]. Layers on top of either mode
marketStringNoMarket to read, default outnet_be. See the market list below
maxItemsIntegerNoStop after this many products across all queries or categories. Default 50
pageSizeIntegerNoProducts per request, default 60. 200 is the site's verified ceiling
fetchProductDetailsBooleanNoFetch brand, exact size/colour, stock and the full image set per product. Default true
proxyConfigurationObjectNoDefault Apify proxy, on by default. Recon found no anti-bot, so this exists as a plain escape hatch, not a requirement

Markets

outnet_be (Belgium, EUR), outnet_nl, outnet_ie, outnet_at (EUR), outnet_ch (CHF), outnet_es, outnet_fr, outnet_de (EUR), outnet_gb (GBP), outnet_us (USD), outnet_ca (CAD), outnet_au (AUD), outnet_hk (HKD), outnet_kr (KRW), outnet_ae (AED), outnet_se (SEK), outnet_dk (DKK).

Output

FieldTypeExample
nameString"VALENTINO GARAVANI Corded Lace-Appliquéd Cotton-Blend Cady Mini Dress"
brandString"Valentino Garavani"
priceNumber432.26
currencyString"EUR"
originalPriceNumber2878.82, present whenever the item is reduced
discountString"-85%"
eanStringBarcode, when THE OUTNET's index publishes one
skuStringRetailer SKU for this exact listing
productIdStringTHE OUTNET's internal (Shopify) product ID
inStockBoolean or nulltrue/false with Fetch Product Detail on, null when off
sizesArrayAlmost always one entry — see "One listing, one size" below
colourString"Black"
categoryString"Dresses"
productTypeStringThe retailer's own product-type label
tagsArray["Just-In"]
imageUrlStringMain image
imageUrlsArrayAll available images
descriptionStringTHE OUTNET's editorial copy
urlStringProduct page on the selected market
marketString"outnet_be"
searchQueryString or nullThe term that returned this product, null in category mode
categorySlugString or nullThe category that returned this product, null in search mode
brandFilterString or nullThe brand filter applied, when set
scrapedAtStringISO 8601 timestamp

One listing, one size

Unlike NET-A-PORTER or Mytheresa, THE OUTNET does not group every size of a garment under one product with a size ladder. A dress in size 36 and the same dress in size 38 are two separate listings with their own URL and their own Shopify product ID — outlet/liquidation inventory tracked unit by unit. So sizes normally holds exactly one entry: the size, colour, availability and SKU of that specific listing. This is a real fact about their catalogue, not a gap in the scrape.

Prices are read in the market's own currency

THE OUTNET runs on Shopify Markets, and currency is selected by the market you pick, not converted client-side afterwards. price always comes from a per-market request when Fetch Product Detail is on. originalPrice can be trickier: this shop's Shopify Markets setup does not always publish a converted "compare at" price for every market (confirmed missing for en-be on a product where en-us had one, for the exact same item) — when that happens, the actor computes the discount percentage from the search index (where the current and original price are always in the same base currency as each other) and applies that percentage to the market-accurate current price, so price and originalPrice are never a mix of two different currencies.

Example output

{
"name": "VALENTINO GARAVANI Corded Lace-Appliquéd Cotton-Blend Cady Mini Dress",
"brand": "Valentino Garavani",
"price": 432.26,
"currency": "EUR",
"originalPrice": 2878.82,
"discount": "-85%",
"sku": "PB0VAHV53600NA-36",
"productId": "9240092442850",
"inStock": true,
"sizes": [
{
"size": "36",
"color": "Black",
"available": true,
"sku": "PB0VAHV53600NA-36"
}
],
"colour": "Black",
"category": "Dresses",
"productType": "Dresses",
"tags": ["Just-In"],
"imageUrl": "https://cdn.shopify.com/s/files/1/0791/3544/1122/files/60afeafa-4ceb-49fa-8ec0-af5fa5409359.jpg",
"description": "Embrace the refined elegance of Valentino Garavani with this expertly crafted mini dress...",
"url": "https://theoutnet.com/en-be/products/valentino-garavani-corded-lace-appliqued-cotton-blend-cady-mini-dress",
"market": "outnet_be",
"searchQuery": "dress",
"categorySlug": null,
"brandFilter": null,
"scrapedAt": "2026-09-11T09:16:04.878Z"
}

Speed and cost

There is no browser warm-up and no anti-bot dance: every request is a plain JSON fetch. A measured local run: 50 products from one search query, including the per-product detail fetch, in under 10 seconds direct, and about 2 minutes through the default Apify proxy pool (worth it for the IP diversity, since a plain HTTP request is cheap either way).

Turning Fetch Product Detail off removes one request per product and roughly halves the time and request count, at the cost of brand, sizes, inStock, colour, productType, tags and the full imageUrls set (you still get name, price, category, imageUrl, description and a best-effort originalPrice/discount from the search index alone).

There is no Bright Data or other paid unblocker cost per result — every request is a plain fetch, so cost per item is just the platform's own compute and dataset pricing. As with any Apify actor, the usage cost of a run only settles once the run finishes with SUCCEEDED; a run you stop early or that fails still bills for the compute it used up to that point.

Limitations

  • One listing is one size/colour, not a ladder — see above. If you need every size of one style, search or browse by that style's name and collect the resulting listings.
  • brand is empty with Fetch Product Detail off. THE OUTNET's search index does not carry a brand field on its own; it only comes from the per-product detail fetch.
  • Category and brand values are case-sensitive and must match THE OUTNET's own labels exactly ("Dresses", not "dresses"). An unmatched value returns 0 hits rather than an error.
  • originalPrice is sometimes estimated from a percentage, not read directly, on markets where this shop's Shopify Markets setup does not publish a converted "compare at" price. See "Prices are read in the market's own currency" above.
  • Data is scraped from the public website and may change without notice. Respect the website's terms of service and use responsibly.
  • NET-A-PORTER Scraper — YNAP's full-price sibling. A different backend entirely (IBM WebSphere Commerce behind Akamai, versus this actor's Shopify + Constructor.io), but the same corporate group.
  • Mytheresa Scraper — the other big European full-price luxury retailer.
  • Vinted Scraper — Europe's largest secondhand fashion marketplace, for comparing outlet against resale.
  • Vestiaire Collective Scraper — authenticated luxury resale.
  • Zalando Scraper — general European fashion at a lower price point.

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.