Net-a-Porter APInet-a-porter.com ↗
Access Net-a-Porter product details, category listings, search results, designer rankings, and filter facets via a structured JSON API.
What is the Net-a-Porter API?
The Net-a-Porter API provides 6 endpoints covering product data, category listings, keyword search, designer rankings, and filter facets from net-a-porter.com. The get_product_details endpoint returns 10 fields per product including brand, current price, HTML and plain-text descriptions, image URLs, and stock availability. Companion endpoints handle paginated category browsing, facet retrieval, and a ranked list of designers by product count.
curl -X GET 'https://api.parse.bot/scraper/a84ac9c7-1f65-415e-8254-aaf8c8ff65fe/get_product_details?url=https%3A%2F%2Fwww.net-a-porter.com%2Fen-us%2Fshop%2Fproduct%2Fversace%2Fclothing%2Fmini-dresses%2Fstrapless-printed-twill-trimmed-silk-crepe-mini-dress%2F46376663163095572' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace net-a-porter-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Net-a-Porter SDK — browse, search, check URLs, and drill into product details."""
from parse_apis.net_a_porter_api import NetAPorter, Product, ProductSummary, Designer, UrlCheck, NotFoundError
client = NetAPorter()
# Search for products by keyword, capped at 3 results
for item in client.catalogs.search(query="silk dress", limit=3):
print(item.title, item.designer, item.current_price, item.in_stock)
# Drill into full product details from a search result
item = client.catalogs.search(query="leather jacket", limit=1).first()
if item:
product = item.details()
print(product.name, product.brand, product.current_price, product.description_plain[:100])
# Browse a category listing with pagination
for item in client.catalogs.list(url="https://www.net-a-porter.com/en-us/shop/clothing", limit=5):
print(item.product_id, item.title, item.designer, item.current_price)
# Check if a URL is a product page
check = client.catalogs.is_product_page(url="https://www.net-a-porter.com/en-us/shop/product/versace/clothing/mini-dresses/example/12345")
print(check.is_product_page)
# Get ranked designers
for designer in client.catalogs.designers(limit=5):
print(designer.name, designer.slug, designer.count)
# Typed error handling
try:
bad = client.catalogs.list(url="https://www.net-a-porter.com/en-us/shop/product/nonexistent/0000", limit=1).first()
except NotFoundError as exc:
print(f"not found: {exc}")
print("exercised: catalogs.search / details / catalogs.list / is_product_page / catalogs.designers")
Extract detailed product information from a Net-a-Porter product detail page URL. Returns product name, brand, price, description, images, and availability. Requires a full product page URL containing '/shop/product/' and a numeric product ID.
| Param | Type | Description |
|---|---|---|
| urlrequired | string | Full Net-a-Porter product detail page URL (e.g. https://www.net-a-porter.com/en-us/shop/product/versace/clothing/mini-dresses/strapless-printed-twill-trimmed-silk-crepe-mini-dress/46376663163095572) |
{
"type": "object",
"fields": {
"url": "string, product page URL",
"name": "string, product name",
"brand": "string, designer/brand name",
"images": "array of strings, product image URLs",
"category": "string, product category",
"in_stock": "boolean, whether product is available for purchase",
"product_id": "string, product part number",
"current_price": "string, formatted current selling price",
"description_html": "string, HTML description",
"description_plain": "string, plain text description"
},
"sample": {
"data": {
"url": "https://www.net-a-porter.com/en-us/shop/product/versace/clothing/mini-dresses/strapless-printed-twill-trimmed-silk-crepe-mini-dress/46376663163095572",
"name": "Strapless printed twill-trimmed silk-crepe mini dress",
"brand": "VERSACE",
"images": [
"https://www.net-a-porter.com/variants/images/46376663163095571P/in/w2000_q60.jpg",
"https://www.net-a-porter.com/variants/images/46376663163095571P/fr/w2000_q60.jpg"
],
"category": "",
"in_stock": true,
"product_id": "46376663163095571P",
"current_price": "$4220.00",
"description_html": "Versace's mini dress is designed with a strapless neckline elevated by a silk-twill scarf detail printed with the house's 'Hangin' Out' motif.",
"description_plain": "Versace's mini dress is designed with a strapless neckline elevated by a silk-twill scarf detail printed with the house's 'Hangin' Out' motif."
},
"status": "success"
}
}About the Net-a-Porter API
Product Detail and Listing Data
The get_product_details endpoint accepts a full Net-a-Porter product page URL and returns structured data: product_id, name, brand, category, current_price, in_stock, images (array of URLs), description_html, and description_plain. This covers a single product at a time. For browsing by category, get_product_listing accepts a category page URL and an optional page integer for pagination, returning an array of objects with product_id, title, designer, current_price, url, image_url, and in_stock, plus a total_count of all products in the category.
Search and Discovery
The search_products endpoint takes a query string (e.g. 'silk dress' or 'leather jacket') and returns a total result count plus an array of matching products with product_id, title, designer, price, url, and in_stock. The get_designers_ranked endpoint requires no inputs and returns every designer brand available on Net-a-Porter sorted by product count descending, with each entry exposing name, slug, and count.
Filters and URL Utilities
get_category_filters accepts a category page URL and returns all available filter groups for that page — each with a name, type, and an options array where every option carries a label, value, and product count. This is useful for building faceted browsing UIs or understanding what refinements Net-a-Porter exposes for a given category. The lightweight is_product_page endpoint checks whether a URL matches the Net-a-Porter product detail page pattern without making a network request, returning a single is_product_page boolean.
The Net-a-Porter API is a managed, monitored endpoint for net-a-porter.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when net-a-porter.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official net-a-porter.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific Net-a-Porter products using
current_pricefromget_product_details. - Build a cross-site luxury fashion comparison tool by pulling
brand,category, andcurrent_pricefrom product listings. - Populate a designer directory with ranked brand data from
get_designers_rankedincluding product counts. - Implement faceted category browsing in a fashion aggregator using filter options from
get_category_filters. - Monitor stock availability across a watchlist of product URLs via the
in_stockfield inget_product_details. - Feed a product search feature with keyword results from
search_products, filtering bydesignerandin_stock. - Validate a batch of URLs before fetching full product data using the no-cost
is_product_pagecheck.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Net-a-Porter have an official public developer API?+
What does `get_product_listing` return and how does pagination work?+
get_product_listing accepts a category URL and an optional page integer. Each response includes the page number, a products array with per-item fields (product_id, title, designer, current_price, url, image_url, in_stock), and a total_count reflecting the full size of the category. Increment the page parameter to retrieve subsequent pages.Does the API return customer reviews or ratings for products?+
Does `get_product_details` return size availability or variant-level stock?+
in_stock boolean for the product as a whole; it does not break down availability by individual size or variant. The API covers product-level stock status, pricing, and description. You can fork this API on Parse and revise it to add size-level variant data.Are results from `search_products` filterable by category or price range within the endpoint?+
search_products endpoint accepts only a query string and returns a flat list of matching products with product_id, title, designer, price, url, and in_stock. Client-side filtering on the returned array is currently the only option. You can fork this API on Parse and revise the endpoint to add filter parameters such as category or price range.