# Rent the Runway Designer Rental Catalog Extractor (`dataspryva/rent-the-runway-designer-rental-catalog-extractor`) Actor

Browses or searches Rent the Runway's designer rental catalog by category, designer, occasion, color, and price, returning rental price, retail price, sizes in stock, and ratings.

- **URL**: https://apify.com/dataspryva/rent-the-runway-designer-rental-catalog-extractor.md
- **Developed by:** [Dataspryva](https://apify.com/dataspryva) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

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

## Rent the Runway Designer Rental Catalog Extractor

Rent the Runway is a designer clothing rental service: each style has a rental price, a retail value, size availability that changes with the delivery date, and sometimes a discounted purchase option. This actor collects that catalog in structured form, including the availability context behind each price.

It can browse a category, run a keyword search across the catalog, pull every style from one or more designers, or enrich a list of product URLs/IDs. Catalog browsing is HTTP-only and needs no account or proxy.

### Modes

- **Browse a category** — 19 editor-curated categories (dresses, gowns, tops, handbags, jewelry, and more) plus the full catalog.
- **Search by keyword and filters** — keyword plus any combination of occasion, color, embellishment, neckline, style, print, sleeve, season, length, maternity and wedding filters.
- **Browse designers** — one or more designer names, IDs or designer URLs.
- **Specific product URLs or IDs** — paste product links or style IDs (for example `CULTR24`).

### What each item includes

- **Identity** — `productId`, `itemName`, `designer`, `designerId`, `category`, `categoryTree`, `detailUrl`.
- **Prices** — `rentalPrice` for the selected rental type/duration, `retailPrice`, `buyPrice` when the item can be bought below retail, optional `rentalPrice4Day` and `rentalPrice8Day`, plus `memberRentalPrice`/`memberPriceDiscount` when a member price is published, in USD.
- **Availability** — `sizesOffered` (all sizes the style was made in), `sizesAvailable` (actually available for the chosen date/scope), `availableSkuCount`, `availableUnits` (units in rotation), `availableUnitCount` (subscription availability) and `inStock`.
- **Product detail** — `description`, `stylistNotes`, `fitNotes`, `fabricComposition`, `sleeve`, `lengthInches`, `occasionTags`, `color`, `embellishments`, `neckline`, `stylePersonas`, `maternity`, `seasonality`, `programEligibility`, `publishedDate`.
- **Media** — `imageUrl` (lead image) and `images` (all available angles, at high resolution).
- **Reviews** — `rating` (0-10), `ratingSource` (`catalog-list` when approximate, `reviews` when exact), `reviewCount`, `reviewSummary`, and up to `maxReviewsPerProduct` recent `reviews` when enabled (default 200).
- **Run context** — `rentalType`, `rentalStartDate`, `rentalDuration`, `zipCode`, `recordType`, `scrapedAt`.

Every field is omitted when the source does not have it; records never contain nulls, empty strings, empty arrays or placeholder text.

### Input

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | Select | `category` | `category`, `search`, `designer` or `productUrls`. |
| `category` | Select | `all` | Category for `category` mode, or an optional category limit for `search`. |
| `searchQuery` | String | – | Free-text keyword for `search`. Optional; filters alone can browse. |
| `designers` | String list | – | Designer names, IDs or URLs for `designer` mode. |
| `designer` | Select | `any` | Curated designer filter for category/search runs. |
| `customDesigner` | String | – | Any designer outside the curated list; overrides `designer`. |
| `productUrls` | String list | – | Product URLs or style IDs for `productUrls` mode. |
| `occasion` | Select | – | Where you want to wear it. |
| `color` | Select | – | Primary color. |
| `embellishment` | Select | – | Embellishment detail. |
| `neckline` | Select | – | Neckline style. |
| `stylePersona` | Select | – | Overall style. |
| `print` | Select | – | Print or pattern. |
| `sleeve` | Select | – | Sleeve length. |
| `seasonality` | Select | – | Intended season. |
| `length` | Select | – | Garment length. |
| `maternity` | Select | – | Maternity or bump-friendly fit. |
| `weddingOccasion` | Select | – | Wedding setting or event. |
| `weddingFormality` | Select | – | Wedding dress code. |
| `sizes` | String list | – | Universal sizes 0-22; legacy S/M/L inputs are mapped. |
| `rentalType` | Select | `oneTime` | One-off rental, subscription, or subscription including sold-out styles. |
| `rentalStartDate` | String | blank | `YYYY-MM-DD`; blank uses the site's default window (about six months ahead). |
| `rentalDuration` | Select | `4` | 4 or 8 days. |
| `zipCode` | String | `10001` | US ZIP used for availability and delivery pricing. |
| `minRentalPrice` | Number | – | Drop items below this rental price (USD). |
| `maxRentalPrice` | Number | – | Drop items above this rental price (USD). |
| `minRating` | Number | – | Drop items below this rating (0-10). |
| `sortBy` | Select | `recommended` | Recommended, newest, retail value, rental price or rating. |
| `includeDetails` | Boolean | `true` | Add descriptions, attributes, sizes and images from product pages. |
| `includeAvailability` | Boolean | `true` | Check the sizes actually available for the selected date/scope. |
| `includeReviews` | Boolean | `false` | Add review text/fit data per item. |
| `maxReviewsPerProduct` | Integer | `200` | Review cap when Include reviews is on (1-1000); pages are fetched until this bound or exhaustion. |
| `includePriceTiers` | Boolean | `false` | Add both 4-day and 8-day rental prices. |
| `onlyNew` | Boolean | `false` | Emit only product IDs not seen in a previous `onlyNew` run; useful for scheduled monitors. |
| `maxItems` | Integer | `50` | Record cap (1-10,000). Detail enrichment is practical up to 500 items; list-only runs can go to 10,000. |

### Examples

#### Wedding-guest dresses under $100

```json
{
  "mode": "category",
  "category": "wedding-guest-dresses",
  "maxRentalPrice": 100,
  "minRating": 8,
  "maxItems": 40
}
```

#### Search for a floral dress in size 4, 4-day rental

```json
{
  "mode": "search",
  "searchQuery": "floral dress",
  "sizes": ["4"],
  "rentalDuration": 4,
  "maxItems": 30
}
```

#### Every Reformation style, with both price tiers

```json
{
  "mode": "designer",
  "designers": ["Reformation"],
  "includePriceTiers": true,
  "maxItems": 100
}
```

#### Enrich specific product links

```json
{
  "mode": "productUrls",
  "productUrls": [
    "https://www.renttherunway.com/shop/designers/cult_gaia/cassidy_gown",
    "MAR123"
  ],
  "includeReviews": true
}
```

### Use cases

- Compare rent-versus-buy value across designers and categories.
- Monitor rental and retail prices before wedding or event season.
- Find what is genuinely in stock for a size and delivery date.
- Build style round-ups with high-resolution images and product links.
- Study fit feedback and reviewer measurements from the review data.

### FAQ

**Do I need an account, cookie or proxy?**
No. The catalog, product pages and review endpoints used here are public. The actor connects directly and manages any fallback internally.

**What is the difference between the rental types?**
`oneTime` returns styles available for a specific rental date, duration and ZIP, with rental prices. `subscription` returns styles available in the membership closet; `subscriptionAll` also includes sold-out styles. Stock is scope-specific: a style can be sold out for subscription but available for a one-off rental.

**Why is `sizesAvailable` missing on some records?**
It is only emitted when availability was checked. `sizesOffered` still lists every size the style was made in. Availability changes by date, duration and ZIP.

**Why do some styles disappear when I change the date?**
The one-off catalog only includes styles with at least one available size for that date window. Sundays are not valid rental start dates; the actor falls back to the default date and says so in the run message.

**Can I get all reviews for an item?**
Yes. The public review endpoint is paginated in pages of 40; `includeReviews` follows pages until exhaustion or `maxReviewsPerProduct` (default 200, max 1000). The total `reviewCount` is always reported.

**What does the rating scale mean?**
Ratings are on Rent the Runway's 0-10 scale. `ratingScale` is included so the value is unambiguous.

**How do I get both 4-day and 8-day prices?**
Set `includePriceTiers` to `true`. Each selected product is read separately.

**Can I get more than 10,000 items?**
A single unfiltered search is capped at 10,000. Browse individual categories instead, or split the request by designer, occasion or other filters.

**How do I run a scheduled monitor for only new items?**
Set `onlyNew` to `true`. The actor stores seen product IDs in a persistent key-value store and skips them on later runs, so each run returns only new styles.

**Is this affiliated with Rent the Runway?**
No. This is an independent data extraction tool with no affiliation to Rent the Runway, Inc.

### Limitations

- Availability is a snapshot for the selected date, duration and ZIP; it changes as inventory moves.
- One-off rental results exclude sold-out styles by design.
- `maxReviewsPerProduct` bounds review text (default 200, max 1000); the total review count is always reported.
- Care instructions, designer biographies and per-item membership rental prices are not exposed by the public payloads used here.
- Reserve availability reports which sizes are available, not how many units back each size.
- The default shipping ZIP is 10001 (New York); availability and delivery windows change with the ZIP.
- Very large runs with `includeDetails` enabled are slower because each item needs a compact product-detail request, a reviews page for the exact rating and a member-price request. 500 detailed rows are practical; list-only runs reach 10,000.
- `onlyNew` tracks the last 50,000 emitted IDs; older IDs are forgotten and may appear again.

# Actor input Schema

## `mode` (type: `string`):

What to fetch. Browse a category, search by keyword and filters, pull one or more designers, or enrich specific product URLs/IDs.

## `category` (type: `string`):

Category to browse in mode=category. In mode=search, set it to limit a keyword search to that category. "All categories" browses the full catalog.

## `searchQuery` (type: `string`):

Free-text search in mode=search, e.g. "floral dress". Optional: leave blank and use filters to browse. Site-wide search is used when no category is selected.

## `designers` (type: `array`):

Designer names, IDs or designer URLs. Each one is resolved to the site's designer ID.

## `designer` (type: `string`):

Filter a category/search run to one designer. Use Custom designer for anyone outside this curated list.

## `customDesigner` (type: `string`):

Any designer name, ID or URL outside the curated list. Overrides the Designer dropdown.

## `productUrls` (type: `array`):

Product page URLs or style IDs, e.g. https://www.renttherunway.com/shop/designers/cult_gaia/cassidy_gown or CULTR24.

## `occasion` (type: `string`):

Where you want to wear it.

## `color` (type: `string`):

Primary color.

## `embellishment` (type: `string`):

Embellishment detail.

## `neckline` (type: `string`):

Neckline style.

## `stylePersona` (type: `string`):

Overall style persona.

## `print` (type: `string`):

Print or pattern.

## `sleeve` (type: `string`):

Sleeve length.

## `seasonality` (type: `string`):

Season the item is intended for.

## `length` (type: `string`):

Garment length.

## `maternity` (type: `string`):

Maternity or bump-friendly fit.

## `weddingOccasion` (type: `string`):

Wedding setting or event.

## `weddingFormality` (type: `string`):

Wedding dress code.

## `sizes` (type: `array`):

Only items available in these sizes. Uses the site's universal 0-22 size scale; letter sizes S/M/L are accepted from older saved inputs.

## `rentalType` (type: `string`):

One-off rental uses a date, duration and shipping zip. Subscription modes use the membership closet; Subscription (include sold out) includes unavailable styles.

## `rentalStartDate` (type: `string`):

Start date in YYYY-MM-DD, e.g. 2027-04-17. Leave blank to use the site default (about six months ahead). Sundays are not valid rental start dates.

## `rentalDuration` (type: `string`):

Rental length in days. The site supports 4 and 8 days.

## `zipCode` (type: `string`):

US ZIP code used for availability and delivery-window pricing.

## `minRentalPrice` (type: `number`):

Drop items whose rental price is below this amount.

## `maxRentalPrice` (type: `number`):

Drop items whose rental price is above this amount.

## `minRating` (type: `number`):

Drop items rated below this on Rent the Runway's 0-10 scale.

## `sortBy` (type: `string`):

Order of results. Price sorts by retail (MSRP) value are server-side; rental-price and rating sorts use the fetched candidate window.

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

Fetch descriptions, fabric, fit notes, attributes, sizes and images from each product page.

## `includeAvailability` (type: `boolean`):

Check which sizes are actually available for the selected date/scope instead of listing every size the item was made in.

## `includeReviews` (type: `boolean`):

Add up to 40 recent reviews per item, including fit feedback and reviewer measurements when available.

## `includePriceTiers` (type: `boolean`):

Add both rental price tiers for one-off rentals. Uses one extra request per item.

## `maxReviewsPerProduct` (type: `integer`):

Upper bound when Include reviews is on. The actor fetches review pages until this bound or exhaustion. Default 200; max 1000.

## `onlyNew` (type: `boolean`):

Emit only product IDs not seen in a previous run with onlyNew enabled. Uses a persistent key-value store; useful for scheduled price/stock monitors.

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

Hard cap on emitted item records. Detail enrichment is practical up to 300 items; larger runs are faster with Include product details off.

## Actor input object example

```json
{
  "mode": "category",
  "category": "cocktail-dresses",
  "searchQuery": "floral dress",
  "designer": "any",
  "rentalType": "oneTime",
  "rentalDuration": "4",
  "zipCode": "10001",
  "sortBy": "recommended",
  "includeDetails": true,
  "includeAvailability": true,
  "includeReviews": false,
  "includePriceTiers": false,
  "maxReviewsPerProduct": 200,
  "onlyNew": false,
  "maxItems": 3
}
```

# Actor output Schema

## `items` (type: `string`):

Dataset containing all scraped Rent the Runway items.

# 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 = {
    "mode": "category",
    "category": "cocktail-dresses",
    "searchQuery": "floral dress",
    "designer": "any",
    "rentalType": "oneTime",
    "rentalDuration": "4",
    "zipCode": "10001",
    "sortBy": "recommended",
    "includeDetails": true,
    "includeAvailability": true,
    "includeReviews": false,
    "includePriceTiers": false,
    "maxReviewsPerProduct": 200,
    "onlyNew": false,
    "maxItems": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("dataspryva/rent-the-runway-designer-rental-catalog-extractor").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 = {
    "mode": "category",
    "category": "cocktail-dresses",
    "searchQuery": "floral dress",
    "designer": "any",
    "rentalType": "oneTime",
    "rentalDuration": "4",
    "zipCode": "10001",
    "sortBy": "recommended",
    "includeDetails": True,
    "includeAvailability": True,
    "includeReviews": False,
    "includePriceTiers": False,
    "maxReviewsPerProduct": 200,
    "onlyNew": False,
    "maxItems": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("dataspryva/rent-the-runway-designer-rental-catalog-extractor").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 '{
  "mode": "category",
  "category": "cocktail-dresses",
  "searchQuery": "floral dress",
  "designer": "any",
  "rentalType": "oneTime",
  "rentalDuration": "4",
  "zipCode": "10001",
  "sortBy": "recommended",
  "includeDetails": true,
  "includeAvailability": true,
  "includeReviews": false,
  "includePriceTiers": false,
  "maxReviewsPerProduct": 200,
  "onlyNew": false,
  "maxItems": 3
}' |
apify call dataspryva/rent-the-runway-designer-rental-catalog-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dataspryva/rent-the-runway-designer-rental-catalog-extractor"
        }
    }
}
```

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/mqAo1eFbT4I0XniBx/builds/QDzhClJRP5uK5f5Qp/openapi.json
