Revolve APIrevolve.com ↗
Access Revolve.com product listings, search results, sale items, and new arrivals via a structured API. Returns prices, sizes, images, and brand data.
What is the Revolve API?
The Revolve.com API covers 5 endpoints for retrieving fashion product data from revolve.com, including full product details, category browsing, keyword search, new arrivals, and sale items. The get_product_detail endpoint returns per-SKU data: name, brand, retail and sale prices, per-size stock status, image URLs, description bullet points, and curated 'complete the look' recommendations — all keyed by a product code like ASTR-WD190.
curl -X GET 'https://api.parse.bot/scraper/50985969-8f74-4fe0-97ea-6a2c3b8ab94c/get_product_detail?product_code=1STR-WD250' \ -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 revolve-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.
"""Revolve fashion catalog: search, browse by category, new arrivals, sales, and product details."""
from parse_apis.revolve_product_api import Revolve, Category_, ProductNotFound
client = Revolve()
# Search for products by keyword — limit caps total items fetched.
for product in client.products.search(query="maxi dress", limit=3):
print(product.name, product.brand, product.price)
# Browse a category using the constructible Category resource.
dresses = client.category(name=Category_.DRESSES)
for product in dresses.list_products(limit=3):
print(product.name, product.brand, product.price)
# Browse new arrivals and sale items.
new_item = client.products.new_arrivals(limit=1).first()
if new_item:
print("New:", new_item.name, new_item.brand, new_item.price)
sale_item = client.products.sale(limit=1).first()
if sale_item:
print("Sale:", sale_item.name, sale_item.price, sale_item.sale_price)
# Drill into product details from a search result.
first = client.products.search(query="black dress", limit=1).first()
if first:
try:
detail = first.details()
print(detail.name, detail.price)
for size in detail.sizes[:3]:
print(size.size, size.in_stock)
for rec in detail.complete_the_look[:2]:
print(rec.name, rec.brand, rec.price)
except ProductNotFound as exc:
print(f"Product gone: {exc.product_code}")
print("exercised: products.search / category.list_products / products.new_arrivals / products.sale / product.details")
Fetch full product details by product code. Returns brand, name, price, available sizes with stock status, image URLs, description bullet points, and 'complete the look' recommendations. Each product code is a short alphanumeric identifier visible in Revolve URLs (e.g. /dp/437R-WD2/).
| Param | Type | Description |
|---|---|---|
| product_coderequired | string | Revolve product code (alphanumeric with hyphens, e.g. '437R-WD2') |
{
"type": "object",
"fields": {
"url": "string - product page URL",
"name": "string - product name",
"brand": "string - brand name",
"price": "string - retail price with dollar sign",
"sizes": "array of size objects each with 'size' (string) and 'in_stock' (boolean)",
"images": "array of image URLs",
"sale_price": "string - sale price if on sale, absent otherwise",
"description": "array of description bullet points",
"product_code": "string - the product code",
"complete_the_look": "array of recommended product objects with name, brand, price, url, product_code, image"
},
"sample": {
"data": {
"url": "https://www.revolve.com/dp/437R-WD2/",
"name": "x REVOLVE The Halter Play Dress 437",
"brand": "437",
"price": "$135",
"sizes": [
{
"size": "Size: XS",
"in_stock": true
},
{
"size": "Size: S",
"in_stock": true
}
],
"images": [
"https://is4.revolveassets.com/images/p4/n/ct/437R-WD2_V1.jpg"
],
"description": [
"82% recycled polyester, 18% spandex",
"Made in China"
],
"product_code": "437R-WD2",
"complete_the_look": [
{
"url": "https://www.revolve.com/by-far-prudence-ballet-flat-in-baby-pink/dp/BFAR-WZ129/",
"name": "Prudence Ballet Flat",
"brand": "BY FAR",
"image": "https://is4.revolveassets.com/images/p4/n/ps/BFAR-WZ129_V1.jpg",
"price": "$360",
"product_code": "BFAR-WZ129"
}
]
},
"status": "success"
}
}About the Revolve API
Product Detail and Inventory
The get_product_detail endpoint accepts a product_code string (e.g., 437R-WD2) and returns a structured object covering the product's name, brand, price, sale_price (when applicable), an array of images, and a description array of bullet points. The sizes field is an array of objects, each with a size string and an in_stock boolean, letting you surface availability at the size level. The complete_the_look array includes recommended companion products with their own product_code, name, brand, price, image, and url fields.
Search and Category Browsing
search_products accepts a query string — single keywords like dress or multi-word phrases like black maxi dress — and returns paginated results via the page parameter. Each product in the products array includes product_code, name, brand, price, image, and url. get_products_by_category works similarly but routes by a category string (e.g., dresses, shoes, tops), resolving the correct category from site navigation before returning the same product list shape.
New Arrivals and Sale Items
get_new_arrivals and get_sale_items both accept an optional page integer and return the same paginated product list structure. get_sale_items always includes both price and sale_price fields in each product object, making it straightforward to compute discount amounts. Both endpoints return a total_count indicating how many products are present on the current page.
The Revolve API is a managed, monitored endpoint for revolve.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when revolve.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 revolve.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 drops on specific SKUs by comparing
priceandsale_pricefromget_product_detail - Build a size-availability checker using the
sizes[].in_stockfield across multiple product codes - Aggregate new arrivals by brand using the
brandfield fromget_new_arrivals - Power a fashion search interface with multi-word queries via
search_products - Monitor sale inventory and discount depth by polling
get_sale_itemsforpricevssale_price - Surface cross-sell recommendations using the
complete_the_lookarray from product detail responses - Catalog Revolve's category assortment by paginating through
get_products_by_categorywith differentcategoryvalues
| 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 Revolve have an official public developer API?+
What does `get_product_detail` return beyond price and images?+
price, sale_price, and images, the endpoint returns a sizes array where each entry has a size string and an in_stock boolean, a description array of bullet points, and a complete_the_look array of recommended products — each with its own product_code, brand, price, and image.Does the API expose customer reviews or ratings for products?+
How does pagination work across the listing endpoints?+
page parameter is optional on get_products_by_category, search_products, get_new_arrivals, and get_sale_items. Omitting it defaults to the first page. Each response includes a total_count field reflecting how many products were returned on that specific page, not the overall catalog count.Does the API support filtering by size, color, or brand within a category?+
get_products_by_category and search_products accept a category name or query string but do not expose filter parameters for size, color, or brand. You can fork this API on Parse and revise it to add filter parameters to the category or search endpoints.