# Revolve.com Scraper (`logical_scrapers/revolve-scraper`) Actor

❇️ Extract structured product data from Revolve.com — including pricing, variants, images, and badges. Supports Search, Category and detail page extractions. The best revolve.com scraper on Apify.

- **URL**: https://apify.com/logical\_scrapers/revolve-scraper.md
- **Developed by:** [Goldmine](https://apify.com/logical_scrapers) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 4 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Revolve Scraper — export Revolve.com product data as JSON, CSV or Excel

![Revolve Scraper](https://i.ibb.co/fYQVZ9tB/Screenshot-2026-03-17-at-11-44-27-PM.png)

This Revolve scraper turns any category, brand or search page on [Revolve.com](https://www.revolve.com/)
into a structured product feed. Point it at a listing and it returns every product on it with brand,
name, current and original price, colour, available sizes, the full image gallery, the description
and the measurements. Retail teams use this Revolve.com scraper for price and assortment tracking,
merchandisers use it to watch how a category is ranked, and data teams use it to build a product
catalogue they can join to their own.

Give it a category URL and a limit, and get back one row per product as JSON, CSV, Excel or XML.
No account, cookies or API key are involved.

***

### 🚀 Key Features

- 🔎 **Category, brand, search or product URLs** — paste any Revolve listing page, or individual product pages when you already know what you want
- 🧾 **Full product record** — brand, product name, category, current and original price in USD, discount flag, colour, size availability, material, description and measurements
- 🖼️ **Complete image gallery** — every shot of the product at zoom resolution, not just the thumbnail
- 📑 **Ranked results with pagination** — products keep their position in the listing, and paging continues automatically until `maxItems` is reached **per start URL**
- 🛡️ **No login required** — public pages only; proxy settings are yours to choose
- ⚡ **Description toggle** — turn descriptions off for a quicker, cheaper run when you only need price, sizes, colour and images
- 📤 **Multiple export formats** — JSON, CSV, Excel, XML via the Apify dataset
- 🔁 **Schedulable runs** — run a category nightly to build a price history

***

### 👥 Who Is This Actor For?

- **Retail and pricing analysts** — track price moves and markdowns across a category over time
- **Merchandisers and buyers** — see what a brand or category actually stocks, in which colours and sizes
- **E-commerce and marketplace teams** — build or enrich a product catalogue with clean, consistent fields
- **Market researchers** — study assortment and pricing in contemporary fashion retail
- 🤖 **AI builders** — feed a product catalogue into a RAG index or a shopping agent that needs current prices and stock

### 💡 Common Use Cases

- Monitor Revolve prices daily and alert when a product goes on sale
- Export an entire brand's Revolve assortment to a spreadsheet
- Track which products rank at the top of a category and how that changes
- Collect product images and descriptions for a comparison or affiliate site
- Compare Revolve's pricing against other retailers you already track

***

### 🔗 Supported URL Types

| URL Type | Example |
| -------- | ------- |
| **Category page** | `https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity` |
| **Brand or search page** | `https://www.revolve.com/dresses/br/a8e981/?navsrc=main` |
| **Product page** | `https://www.revolve.com/lovers-and-friends-gillian-gown-in-black/dp/LOVF-WD1899/` |

***

### 📥 Input

| Field | Type | Description | Default |
| ----- | ---- | ----------- | ------- |
| `startUrls` | Array | URLs to start scraping from. Can be search/listing pages or product detail pages. | Required |
| `maxItems` | Integer | Maximum number of products to scrape **per start URL**. Free users are limited to 20 items per run. | `5` |
| `includeDescription` | Boolean | Fetch each product's description, details and measurements. Turn off for a quicker, cheaper run when only price, sizes, colour and images are needed. | `true` |
| `proxyConfiguration` | Object | Proxy settings for the scraper. | US residential |

#### Example Input

```json
{
  "startUrls": [
    { "url": "https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity" }
  ],
  "maxItems": 5,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

***

### 📤 Output

Each dataset item includes:

| Field | Type | Description |
| ----- | ---- | ----------- |
| `site` | String | Always `revolve`, so rows from several scrapers can be pooled |
| `brand` | String | Brand name |
| `product_name` | String | Product name without the colour suffix |
| `product_id` | String | Revolve's product code, unique per colourway |
| `url` | String | Canonical product page URL |
| `list_url` | String | The listing page the product was found on |
| `category_path` | String | Category the product sits in |
| `price` | Object | `current`, `original`, `currency` and `is_discounted` |
| `variants` | Object | `color.current`, `color.options`, `size.current`, `size.options` |
| `material` | String | Material line pulled from the product details |
| `rank` | Integer | Position of the product in the listing |
| `badges` | Array | Listing badges such as best seller or trending |
| `product_details` | String | Full bulleted product description |
| `spec` | String | Measurement lines only |
| `images` | Array | Image URLs at zoom resolution, grouped by colour |
| `crawl_status` | String | `success` or `failed` |
| `error_reason` | String | Why a row failed, when it did |
| `crawled_at` | String | ISO timestamp of the run |

#### Example Output

```json
{
  "site": "revolve",
  "brand": "Olga Berg",
  "list_url": "https://www.revolve.com/mobile/bags/br/2df9df/?&navsrc=subAccessories&sortBy=popularity&&s=c&c=Bags",
  "category_path": "Handbags",
  "url": "https://www.revolve.com/olga-berg-tally-metallic-clutch-in-gold/dp/OLGR-WY207/",
  "product_id": "OLGR-WY207",
  "product_name": "Tally Metallic Clutch",
  "price": {
    "current": 95,
    "original": 95,
    "currency": "USD",
    "is_discounted": false
  },
  "variants": {
    "color": { "current": "Gold", "options": ["Gold"] },
    "size": { "current": null, "options": [] }
  },
  "material": "Metallic faux leather exterior with textile lining",
  "rank": 3,
  "badges": [],
  "product_details": "• Metallic faux leather exterior with textile lining\n• Imported\n• Structured frame with branded disc lock closure\n• One main compartment\n• Detachable gold-tone chain straps in 2 different lengths\n• Fits a large smart phone\n• Measures approx 26 cm W x 11 cm H x 11 cm D\n• Revolve Style No. OLGR-WY207",
  "spec": "Measures approx 26 cm W x 11 cm H x 11 cm D",
  "images": [
    {
      "color": "Gold",
      "urls": [
        "https://is4.revolveassets.com/images/p4/n/z/OLGR-WY207_V1.jpg",
        "https://is4.revolveassets.com/images/p4/n/z/OLGR-WY207_V2.jpg",
        "https://is4.revolveassets.com/images/p4/n/z/OLGR-WY207_V3.jpg"
      ]
    }
  ],
  "crawl_status": "success",
  "error_reason": null,
  "crawled_at": "2026-09-06T19:13:49.461Z"
}
```

You can export the dataset as **JSON, CSV, Excel, XML, RSS, or HTML** from the Apify Console or
via the [Apify API](https://docs.apify.com/api/v2).

***

### 💰 Pricing

This Actor is **pay per event**: you pay per product returned, plus Apify platform usage. The
current per-result price is shown on this Actor's Apify Store page. A free Apify account is
enough to try it.

***

### ❓ FAQ

#### What is the Revolve Scraper?

It is a Revolve.com scraper that turns category, brand, search and product pages into structured
product rows. Each row carries brand, price, colour, sizes, images and the product description.

#### Do I need an account, cookies or an API key?

No. The Actor reads only publicly available pages.

#### Do I need a proxy?

The input defaults to US residential proxy, which is the setting this site is tested with. You can
change or disable it in the input.

#### How many results can I get per run?

`maxItems` limits results **per start URL**, so two start URLs with `maxItems: 100` return up to
200 products. Free users are capped at 20 results per run; subscribing removes the cap.

#### Does it handle pagination automatically?

Yes. It keeps paging through a listing until `maxItems` is reached or the listing runs out.

#### Why does `color.options` sometimes show only one colour?

Colourways are grouped from what the run has seen. Crawling a full category picks up every
colourway on the page; a single product URL is looked up against the catalogue to find its siblings.

#### Can I make runs cheaper?

Yes — set `includeDescription` to `false`. You still get price, colour, sizes, rank and the full
image gallery, without the per-product description request.

#### Can I schedule it or integrate it with my app?

Yes — every Apify Actor exposes a REST API, webhooks, and integrations with Zapier, Make, Google
Sheets and Slack, and can be called from an AI agent via the Apify MCP server.

#### Is it legal to scrape Revolve?

This Actor accesses only publicly available pages. You are responsible for making sure your use
complies with Revolve's terms of service and the laws in your jurisdiction.

#### What if the site changes and the Actor breaks?

Open an issue on the Actor's **Issues** tab and we will look at it.

***

### 🧩 Related Actors — E-commerce Scrapers

Product, price and assortment data from online retailers, in one consistent output shape. Also try:

- [Amazon Product Scraper](https://apify.com/logical_scrapers/amazon-product-scraper) — product details, pricing and ratings from Amazon listings
- [SSENSE Scraper](https://apify.com/logical_scrapers/ssense-scraper) — designer fashion products, prices and variants from SSENSE

See every Goldmine Actor at [apify.com/logical\_scrapers](https://apify.com/logical_scrapers).

***

### 📷 Image Credit

Image credit: [revolve.com](https://www.revolve.com/)

***

### 📬 Contact & Support

- **Issues & feature requests**: use the Issues tab on this Actor's page — it reaches us directly.
- **Email**: `coredev.dan@gmail.com`
- **If this Actor saved you time, please leave a ⭐ rating on the Apify Store.** Ratings are the
  main signal Apify uses to recommend Actors, and every one helps us keep this maintained.

# Actor input Schema

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

URLs to start scraping from. Can be search/listing pages or product detail pages.

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

Maximum number of products to scrape. Free users are limited to 20 items per run. Subscribe to the Actor to unlock unlimited results.

## `includeDescription` (type: `boolean`):

Fetch each product’s description, details and measurements. Turn off for a faster, cheaper run when only price, sizes, colour and images are needed.

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

Proxy settings for the scraper.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity"
    }
  ],
  "maxItems": 5,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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": [
        {
            "url": "https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("logical_scrapers/revolve-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": [{ "url": "https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity" }] }

# Run the Actor and wait for it to finish
run = client.actor("logical_scrapers/revolve-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": [
    {
      "url": "https://www.revolve.com/bags/br/2df9df/?navsrc=subAccessories&sortBy=popularity"
    }
  ]
}' |
apify call logical_scrapers/revolve-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logical_scrapers/revolve-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/MHvcxSfb7ntSd0XbM/builds/vfk1zIvZGFuvfxBSN/openapi.json
