# The RealReal Listings Scraper (`piotrv1001/the-realreal-listings-scraper`) Actor

The RealReal Listings Scraper extracts luxury product listings from The RealReal, capturing product names, designers, current and original prices, discounts, condition, color, materials, images and popularity — ideal for resale price intelligence, competitor monitoring, and luxury market research.

- **URL**: https://apify.com/piotrv1001/the-realreal-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 5 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 product listings

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

### 🛍️ The RealReal Listings Scraper

Extract **luxury product listings from [The RealReal](https://www.therealreal.com)** — the leading marketplace for authenticated, pre-owned designer goods. The **The RealReal Listings Scraper** turns any category, designer, or search page into clean, structured JSON: product names, designers, prices, discounts, condition, images, and more.

Use it for **resale price intelligence, competitor monitoring, inventory tracking, and luxury market research** — with no code required. Because it runs on the Apify platform, you get scheduling, an API, ready-made integrations, automatic proxy rotation, and run monitoring out of the box.

### ✨ What you can extract

- 🏷️ **Rich product data** — name, designer/brand, SKU, slug, product URL, and availability.
- 💰 **Full pricing** — current price, original retail (MSRP), and the discount percentage, with both formatted values and exact amounts in cents.
- 🎨 **Attributes** — condition, color, material, and gender, plus the full raw attribute set.
- 🖼️ **Images** — up to 8 high-resolution product images per item.
- ❤️ **Popularity signals** — "obsession" (wishlist) counts and badges.
- 📄 **Optional full details** — turn on **Scrape full product details** to also collect the complete description, condition notes, measurements, taxonomy, valuation report links, store contact info, and more from each product page.

### 🛠️ How to use The RealReal Listings Scraper

1. **Add category or search URLs** — paste one or more URLs from therealreal.com (for example a handbags category, a specific designer page, or a search results page).
2. **Set a limit** — choose how many products you want with **Max items** (default 50).
3. **(Optional) Enable full details** — toggle **Scrape full product details** if you need the complete product record.
4. **Run it** — click **Start** and watch structured results stream into the dataset.
5. **Export** — download the data as JSON, CSV, Excel, or HTML, or pull it via the Apify API.

### 📥 Input

| Field | Description |
|---|---|
| **Category / search URLs** (`startUrls`) | One or more The RealReal category, designer, or search result URLs to scrape. |
| **Max items** (`maxItems`) | Maximum number of products to scrape across all URLs. Default `50`. |
| **Scrape full product details** (`scrapeDetails`) | When enabled, visits each product page for the complete record. Slower and costs more. Default `false`. |
| **Proxy configuration** (`proxyConfiguration`) | Preconfigured to US residential proxies for reliable access. Leave as is in most cases. |

Example input:

```json
{
    "startUrls": [{ "url": "https://www.therealreal.com/shop/women/handbags" }],
    "maxItems": 50,
    "scrapeDetails": false
}
````

### 📊 Sample output

Each product is saved as a structured JSON record:

```json
{
    "id": "gid://trr/Product/12345678",
    "sku": "GUC123456",
    "name": "Gucci GG Marmont Matelassé Shoulder Bag",
    "slug": "gucci-gg-marmont-matelasse-shoulder-bag",
    "url": "https://www.therealreal.com/products/women/handbags/gucci-gg-marmont-matelasse-shoulder-bag",
    "designer": "Gucci",
    "availability": "in_stock",
    "condition": "Excellent",
    "color": "Black",
    "material": "Leather",
    "gender": "Women",
    "price": {
        "final": { "formatted": "$1,195", "usdCents": 119500 },
        "msrp": { "formatted": "$2,500", "usdCents": 250000 },
        "original": { "formatted": "$1,495", "usdCents": 149500 },
        "discount": 52
    },
    "images": [
        "https://product-images.therealreal.com/GUC123456-1_enlarged.jpg",
        "https://product-images.therealreal.com/GUC123456-2_enlarged.jpg"
    ],
    "obsessionCount": 27
}
```

You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

#### Data fields

| Field | Description |
|---|---|
| `name` | Product title |
| `designer` | Brand / designer name |
| `sku` | Stock-keeping unit |
| `url` | Link to the product page |
| `price.final` | Current selling price (formatted + cents) |
| `price.msrp` | Original retail price |
| `price.discount` | Discount percentage off retail |
| `condition` | Item condition (e.g. Excellent, Very Good) |
| `color` / `material` / `gender` | Key product attributes |
| `images` | High-resolution product image URLs |
| `obsessionCount` | Wishlist popularity signal |
| `availability` | Stock status |

When **Scrape full product details** is enabled, records also include `description`, `category`, `taxons`, `measurementGuide`, `valuationReportUrl`, `storeContactInfo`, and more.

### 💸 How much does it cost to scrape The RealReal?

This Actor uses a transparent **pay-per-result** model — no monthly subscription, you only pay for the data you collect:

| Event | Price |
|---|---|
| **Product listing** | **$0.005** per product (≈ $5 per 1,000 products) |
| **Product detail** | **$0.02** per product (≈ $20 per 1,000 products) — only when "Scrape full product details" is enabled |

By default the Actor returns the rich listing data (the cheaper event), so a 50-product test run costs just a few cents. Enabling full product details collects much more data per item and is priced accordingly. Apify's free tier credits are enough to try it out at no cost.

### ⚡ Tips

- **Reach more than ~2,000 items per query**: The RealReal returns at most ~2,000 products for any single category or search. To go deeper, use narrower categories or apply filters (e.g. a specific designer, color, or price band) and add each as a separate start URL.
- **Keep costs low**: leave **Scrape full product details** off unless you specifically need the long description, measurements, or authentication details.
- **Schedule it**: use Apify Schedules to track prices and new arrivals automatically.

### ❓ FAQ

**Is scraping The RealReal legal?**
This Actor collects only publicly available data. As with any scraping, you are responsible for how you use the data and for complying with The RealReal's Terms of Service and applicable laws. Avoid collecting personal data and consult legal advice for your use case.

**Why do I need a proxy?**
The RealReal serves region-specific content and protects against automated access. The Actor uses US residential proxies by default so pages load reliably.

**Can I get the full product description and measurements?**
Yes — enable **Scrape full product details**.

**Something isn't working or a field is missing.**
Please open an issue from the Actor's **Issues** tab. Custom requirements and tailored solutions are also welcome.

# Actor input Schema

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

The RealReal category or search result pages to scrape (for example a handbags, shoes or jewelry category, a designer page, or a search results page). Paste one or more URLs from therealreal.com.

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

Maximum number of products to scrape across all start URLs. Use this to keep runs fast and predictable. Note: each individual category/search query returns at most ~2,000 products — use narrower categories or filters to reach more.

## `scrapeDetails` (type: `boolean`):

When enabled, the scraper visits each product page to collect the complete record (full description, condition notes, measurements, taxonomy, store contact, and more). This is slower and costs more. When disabled, only the rich data already available on the listing pages is returned.

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

Proxy settings. The RealReal requires US residential proxies to load reliably, so this is preconfigured and should usually be left as is.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.therealreal.com/shop/women/handbags"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountryCode": "US"
  }
}
```

# Actor output Schema

## `results` (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.therealreal.com/shop/women/handbags"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/the-realreal-listings-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.therealreal.com/shop/women/handbags" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/the-realreal-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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.therealreal.com/shop/women/handbags"
    }
  ]
}' |
apify call piotrv1001/the-realreal-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=piotrv1001/the-realreal-listings-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "The RealReal Listings Scraper",
        "description": "The RealReal Listings Scraper extracts luxury product listings from The RealReal, capturing product names, designers, current and original prices, discounts, condition, color, materials, images and popularity — ideal for resale price intelligence, competitor monitoring, and luxury market research.",
        "version": "0.0",
        "x-build-id": "cHK43s4hvtn4RtciF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/piotrv1001~the-realreal-listings-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-piotrv1001-the-realreal-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/piotrv1001~the-realreal-listings-scraper/runs": {
            "post": {
                "operationId": "runs-sync-piotrv1001-the-realreal-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/piotrv1001~the-realreal-listings-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-piotrv1001-the-realreal-listings-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Category / search URLs",
                        "type": "array",
                        "description": "The RealReal category or search result pages to scrape (for example a handbags, shoes or jewelry category, a designer page, or a search results page). Paste one or more URLs from therealreal.com.",
                        "default": [
                            {
                                "url": "https://www.therealreal.com/shop/women/handbags"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of products to scrape across all start URLs. Use this to keep runs fast and predictable. Note: each individual category/search query returns at most ~2,000 products — use narrower categories or filters to reach more.",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape full product details",
                        "type": "boolean",
                        "description": "When enabled, the scraper visits each product page to collect the complete record (full description, condition notes, measurements, taxonomy, store contact, and more). This is slower and costs more. When disabled, only the rich data already available on the listing pages is returned.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. The RealReal requires US residential proxies to load reliably, so this is preconfigured and should usually be left as is.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountryCode": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
