# Net-A-Porter Product Scraper (`eggcenter/net-a-porter-product-scraper`) Actor

Collect product listings from Net-A-Porter: names, designers, prices, discounts, sizes, colours and stock, by category, designer, sale page or search term.

- **URL**: https://apify.com/eggcenter/net-a-porter-product-scraper.md
- **Developed by:** [Egg Center](https://apify.com/eggcenter) (community)
- **Stats:** 2 total users, 1 monthly users, 33.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 output addeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Net-A-Porter Product Scraper

Collect product data from net-a-porter.com: designer, product name, current
price, sale prices with the discount percentage, colours, sizes, badges, stock
flags and product links. Paste a link from the site — the home page for the
whole catalog (tens of thousands of products), or a category, designer, edit or
sale page for one section — or type search terms. Results arrive as a table,
one row per product.

### How it works

1. Paste one or more links from net-a-porter.com. The home page collects the
   whole catalog; a category, designer, edit or sale page collects that section
   only; a product page collects that one product. If your section link has
   filters or a sort order in it — colour, size, price, sort — the actor
   applies them.
2. Or type one or more search terms, and the actor collects everything the
   Net-A-Porter website's own search returns for each of them. Search always
   comes back complete and unfiltered — see the note on filters below.
3. Choose your store: the US site (prices in USD) or the UK site (prices in
   GBP). Non-US stores are reached through proxies in the store's country,
   which the actor arranges on its own.
4. Optional: turn on product details to also get each product's editorial
   description, materials and care, size and fit notes, first-seen date,
   low-stock flag, image views, and every colourway with per-size availability
   and international size conversions. This visits one extra page per product.
5. Start the actor — results appear as they are collected, so you can watch
   the progress live.

### What you pay

You only pay for what the actor actually does:

| What | Price | In plain words |
| --- | --- | --- |
| Starting the actor | $0.00005 | A tiny fixed amount each time you run it. |
| Pages visited | $0.0002 | A small amount for every page the actor opens. A page holds up to 100 products. |
| Products saved | $0.004 | The main cost — only for products that actually land in your results. |

**Example:** a run that saves 1,000 products costs about **$4.00** with the
details off, and about **$4.20** with details on (1,010 pages visited).

You can set a maximum spend per run, and the actor stops safely when it is
reached.

### What you get

Each result is one product (each colourway is its own row) and contains:

| Field group | What it is |
| --- | --- |
| Product | Name, designer, the designer's style code, the site's product key, product URL, thumbnail image, category path (e.g. Clothing::Dresses::Midi Dresses), season (e.g. FW26), badges like RUNWAY or FINAL SALE. |
| Pricing | Current price, the "was" price on sale items, discount percentage, currency. Full-price items leave the sale fields empty. |
| Choice | Colour names, the designer's brand sizes, whether the product is currently buyable, whether other colourways exist. |
| Details (optional) | Editorial description, materials and care, size and fit notes, first-seen date, low-stock flag, an image URL pattern with the available views, and every colourway with per-size availability plus size conversions for AU, DE, DK, FR, IT, JP, KR, RU, UK, US and more. |
| Run context | How many results the listing or search had, the listing's breadcrumb, and which search term produced the row. |

If one of your links is broken or points somewhere the actor cannot read, you
get a clearly marked error entry for it and the run continues with the rest of
your links.

### Common questions

**How much does it cost to collect 1,000 products?**
About $4.00 with product details off, about $4.20 with details on — the
per-product price is the main cost, page visits are cents.

**Does it get current prices and sale discounts?**
Yes. Every row carries the current selling price; sale items also carry the
was-price and the discount percentage, matching what the site shows.

**Can I filter or sort?**
For section links, yes. Paste a category, designer, edit or sale link that
already has a colour, size or price filter and a sort order in it, and the
actor applies the same filter and order for you. Search is the exception:
a search link's filters and sort orders are not applied, and typed search
terms always return the full results for the term. If you need a filtered or
sorted slice, apply the filter on the site's category, designer, edit or sale
page, copy the link and paste it here.

**Can I export the results?**
Yes. Everything lands in a dataset you can download as JSON, CSV or Excel, or
read through the Apify API while the run is still going.

**How many products can one run collect?**
As many as the site lists — the full catalog is tens of thousands of products,
the sale section alone held about 18,000 when last checked. Set "Maximum
items" for a bounded first try.

**Which country's prices do I get?**
The store you pick in the input: en-us for USD prices or en-gb for GBP prices.
Product keys, names and availability can differ between stores.

### Need help?

Open the actor's Issues tab in Apify Console and describe the run — input you
used and what you expected.

# Actor input Schema

## `startUrls` (type: `array`):

Links from net-a-porter.com. Paste the home page to collect the whole catalog, a category, designer, edit or sale page for just that section, or a product page for a single item. Section links keep their filters and sort order; filters and sorts in search links are not applied.

## `searchQueries` (type: `array`):

Optional. Search terms to run on the Net-A-Porter website's own search. Each term collects all matching items.

## `includeDetails` (type: `boolean`):

Also collect each product's detail page: editorial description, materials and care, size and fit notes, first-seen date, image views, low-stock flag, and every colourway with per-size availability and international size conversions. Costs one extra page visit per product.

## `locale` (type: `string`):

Which country's store to collect from: net-a-porter.com/en-us with USD prices, or net-a-porter.com/en-gb with GBP prices.

## `maxItems` (type: `integer`):

Stop after this many products (0 = no limit). The full catalog holds tens of thousands of products — set a limit for a first try.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings. The US store runs on datacenter proxies; non-US stores get residential proxies from the store's country automatically unless you pick proxy groups here.

## `failOnEmptyResults` (type: `boolean`):

If true, the run fails when no items are collected.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.net-a-porter.com/en-us/"
  ],
  "includeDetails": false,
  "locale": "en-us",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "failOnEmptyResults": false
}
```

# Actor output Schema

## `results` (type: `string`):

All collected Net-A-Porter products, one product per row. Links that cannot be read appear as clearly marked error rows and never stop the run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.net-a-porter.com/en-us/"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("eggcenter/net-a-porter-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": ["https://www.net-a-porter.com/en-us/"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("eggcenter/net-a-porter-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.net-a-porter.com/en-us/"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call eggcenter/net-a-porter-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,eggcenter/net-a-porter-product-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/el7sdy5PR6ezAvddH/builds/Wswe2Ud2OWlJmEIo9/openapi.json
