# Rent the Runway Scraper - Designer Rentals, Prices & Reviews (`abotapi/renttherunway-scraper`) Actor

Scrape Rent the Runway (renttherunway.com) designer clothing and accessories by category, keyword or URL. Extract brands, product titles, rental and retail prices, sizes, availability, images, ratings and member reviews.

- **URL**: https://apify.com/abotapi/renttherunway-scraper.md
- **Developed by:** [Abot API](https://apify.com/abotapi) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.70 / 1,000 style records

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?

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 Scraper: Styles, Prices and Reviews

Rent the Runway Scraper turns Rent the Runway's rental catalogue into a clean data API. Walk any category or keyword grid, or paste product links, and get designer, title, rental and retail price, sizes, availability, materials, the full image gallery, ratings and member reviews with fit feedback. Then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

### Why This Scraper?

- **Two ways in.** Search by category or keyword, or paste Rent the Runway links: category grids, browse pages, keyword-search links and product pages are all recognized, including every link shape the site itself emits.
- **Rental economics on every row.** Rental price next to original retail (and MSRP), so rent-versus-buy math, discount depth and price tracking work out of the box.
- **Fit data nobody else ships.** Sizes in stock, the site's size range, model measurements, materials, and member reviews with reviewer height, weight, body type, bust size, fit verdict and size worn.
- **Reviews at your pace.** Member reviews are off by default; turn them on and cap them per style. Billing scales with review volume, so you only pay for reviews actually delivered.
- **Built for schedules.** Incremental mode returns only new and changed styles on recurring runs, and a refused run fails loudly instead of returning an empty dataset.

### Use Cases

- **Price and assortment monitors:** track rental prices, retail prices and availability per designer or category on a schedule.
- **Merchandising and trend research:** compare designers, retail value tiers and new arrivals across categories.
- **Sizing and fit analytics:** mine member reviews for fit verdicts, size-worn distribution and reviewer body data across a category.
- **Catalog enrichment:** fill descriptions, materials, size ranges and full image galleries into your own database.
- **Personal styling apps:** serve rental options by size, occasion and budget from a live catalogue feed.

### Data You Get

> Sample shape: values are illustrative placeholders, not from a live record.

| Field | Example |
| --- | --- |
| `recordId` | `"rtr:AMR175"` |
| `url` | Product link on the site |
| `styleId` | `"AMR175"` |
| `designer` | `"Sample Designer"` |
| `title` | `"Sample Cascade Gown"` |
| `category` / `breadcrumbs` | `"Clothing > Dress"` / `["Browse", "Clothing", "Dress"]` |
| `rentalPrice` / `retailPrice` / `msrp` | `85` / `698` / `698` |
| `priceCurrency` | `"USD"` |
| `availability` / `inStock` | `"InStock"` / `true` |
| `shortDescription` / `description` | stylist notes / the site's product description |
| `sizesAvailable` / `sizeRange` | `["0", "2", "4"]` / `"0P-14R"` |
| `modelInfo` | `["The model is wearing a size 4 and is 5'10"."]` |
| `materialsAndMeasurements` | `"Navy (100% Polyester). Gowns. V-neck."` |
| `imageUrl` / `imageUrls` | cover image / full gallery |
| `ratingValue` / `reviewCount` | `4.5` / `12` |
| `reviewAverageRating` / `reviewFitCounts` | summary from the reviews feed |
| `reviews` | one entry per collected review (see the reviews tab) |
| `datePublished` / `dateModified` | `"2026-10-09"` |
| `scopePath` | `"/c/dresses"` |
| `changeType` / `changedFields` / `firstSeenAt` / `lastSeenAt` | incremental mode only |

Card fields (style id, designer, title, rental and retail price, link, image, grid rating) are on every row either way. Detail fields (description, sizes, materials, gallery, availability) need Fetch product details. Reviews need Fetch member reviews.

### How to Use

1. Pick a **mode**: `search` (categories and keywords) or `url` (paste links).
2. Leave **Fetch product details** on for the full row, and add **Fetch member reviews** when you need fit feedback.
3. Set **Max items** to control run size and cost, then click **Start**.
4. Download the dataset as JSON, CSV or Excel, or read it through the API.

**Search a category with details:**

```json
{
  "mode": "search",
  "categories": ["dresses"],
  "fetchDetails": true,
  "maxItems": 5
}
```

**One product in full, with reviews:**

```json
{
  "mode": "url",
  "urls": ["https://www.renttherunway.com/shop/designers/amur/reese_cascade_gown"],
  "fetchDetails": true,
  "fetchReviews": true,
  "maxReviews": 20
}
```

**Newest gowns by retail value, card rows only:**

```json
{
  "mode": "search",
  "categories": ["gowns"],
  "sortBy": "highest_msrp",
  "fetchDetails": false,
  "maxItems": 50
}
```

#### Run it from your code

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/renttherunway-scraper").call(run_input={"mode": "search", "categories": ["dresses"], "maxItems": 5})
for style in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(style["designer"], style["title"], style["rentalPrice"], style["retailPrice"])
```

JavaScript:

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/renttherunway-scraper').call({ mode: 'search', categories: ['dresses'], maxItems: 5 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the **Integrations** tab.

#### Resume and recurring updates

- **Resume** (`resumeFromRunId`) continues one interrupted run: paste its run or dataset ID and the actor skips everything already collected there, so you don't pay twice.
- **Incremental mode** (`incrementalMode`) is for scheduled runs over the same scope. Each style is classified `NEW`, `UPDATED` (with `changedFields`), `UNCHANGED` (suppressed and not billed unless `emitUnchanged` is on), `REAPPEARED` or `EXPIRED` (only after a run that scanned the whole scope, and only with `emitExpired`). `stateKey` names or shares the stored state. Price moves, size changes and availability flips ARE reported as `UPDATED`: on a rental catalogue they are the signal, not noise. Member review counts and review lists, and the site's own `dateModified` re-render stamp, are excluded from change detection because they move without the style changing; add or override via `ignoreFieldsForChanges`. With incremental mode off, output is exactly as before. Note the site's grids reorder between runs, so a scheduled incremental run can legitimately classify some rows as `NEW` even when nothing you care about changed.

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape: the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of each record, not the full JSON. Each item becomes one entry with a **title** and its key fields flattened to plain text. The **complete record always stays in the Apify dataset**.

1. Authorize a connector once under **Apify → Settings → Integrations** (Notion, Linear, Airtable, or Apify).
2. Select it in the **"Pipe results into your apps"** input field. (If the picker is empty, you haven't authorized a connector yet.)
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

### Input Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | string | `search` | `search` (categories and keywords) or `url` (paste links). |
| `categories` | array | `["dresses"]` | Category slugs or paths to walk (search mode), e.g. `dresses`, `gowns`, `c/dresses/gowns`. Leave both Categories and Search term empty to browse everything. |
| `searchText` | string | (none) | Keyword search (search mode), run in addition to the categories. |
| `sizes` | array | (none) | Only styles available in these sizes; applied by the site before pages are read. |
| `sortBy` | string | `recommended` | `recommended`, `newest`, `highest_msrp` (retail high to low) or `lowest_msrp`. |
| `availabilityScope` | string | `all` | `reserve` narrows the walk to one-time rental availability. |
| `urls` | array | sample | Rent the Runway links (url mode): category grids (`/c/dresses`, `/c/dresses/gowns`), browse routes (`/products`, `/buy/products`, `/clearance/products`, `/shop/new_arrivals/products`), keyword-search links (`/products?filters[searchText]=black+gown`) and product pages (`/shop/designers/amur/reese_cascade_gown`). Multi-URL supported; pagination starts at the page in the link and walks forward; a link that is none of these is skipped with a warning. On pasted grid links the sizes, sort and availability fields apply only where the link carries none of its own; a link's own parameters always win. |
| `fetchDetails` | boolean | `true` | Product page read per record (description, sizes, materials, gallery); charged once per record. |
| `fetchReviews` | boolean | `false` | Member reviews per style, up to Max reviews per style; charged once per delivered review (`review-enrichment`). |
| `maxReviews` | integer | `20` | Cap on reviews per style when Fetch member reviews is on (`0` skips reviews). |
| `maxItems` | integer | `20` | Stop after this many styles across the whole run (`0` = no limit). |
| `maxPages` | integer | `0` | Safety bound on grid pages per source (`0` = no page limit). |
| `proxy` | object | Apify Proxy | Connection settings. The default connection serves every route; Residential is recommended for the most reliable results on large or frequent runs. |
| `resumeFromRunId` | string | (none) | Continue one interrupted run (run or dataset ID). Mutually exclusive with Incremental mode. |
| `incrementalMode` | boolean | `false` | Scheduled-run change tracking against the previous run of the same scope. |
| `stateKey` | string | (none) | Names the stored incremental baseline; derived from the scope when empty. |
| `emitUnchanged` | boolean | `false` | Also return (and bill) styles classified UNCHANGED. |
| `emitExpired` | boolean | `false` | Also return (and bill) styles classified EXPIRED after a full scan. |
| `ignoreFieldsForChanges` | array | `[]` | Extra field names excluded from change detection, on top of the defaults (reviews, reviewCount, reviewAverageRating, reviewFitCounts, reviewPhotoCount, ratingValue). |
| `mcpConnectors` | array | (none) | Optional MCP connector delivery after the scrape. |
| `notionParentPageUrl` | string | (none) | Notion parent page for the connector. |
| `maxNotifyListings` | integer | `50` | Upper bound on records delivered through the connector. |

### Output Example

> Sample shape: values are illustrative placeholders, not from a live record.

```json
{
  "recordId": "rtr:ABC123",
  "url": "https://www.renttherunway.com/shop/designers/sample_designer/sample_gown",
  "styleId": "ABC123",
  "designer": "Sample Designer",
  "title": "Sample Sequin Gown",
  "category": "Clothing > Dress",
  "breadcrumbs": ["Browse", "Clothing", "Dress"],
  "rentalPrice": 110,
  "retailPrice": 850,
  "msrp": 850,
  "priceCurrency": "USD",
  "availability": "InStock",
  "inStock": true,
  "shortDescription": "A sample gown description.",
  "description": "The Sample Sequin Gown brings sample glamour to black-tie events.",
  "sizesAvailable": ["0", "2", "4", "6", "8", "10", "12", "14"],
  "sizeRange": "0P-14R",
  "modelInfo": ["The model is wearing a size 4 and is 5'10\"."],
  "materialsAndMeasurements": "Emerald (100% Polyester). Gowns. Sweetheart. Sleeveless.",
  "imageUrl": "https://pc-ap.rtrcdn.com/productimages/front/1080x/30/ABC123.jpg",
  "imageUrls": ["https://pc-ap.rtrcdn.com/productimages/front/1080x/30/ABC123.jpg"],
  "ratingValue": 4.5,
  "reviewCount": 12,
  "reviewAverageRating": 4.2,
  "reviewFitCounts": {"Small": 2, "Large": 1, "True to Size": 9},
  "reviews": [
    {
      "reviewId": 10744070,
      "reviewRating": 8,
      "reviewFit": "True to Size",
      "reviewSizeWorn": "8",
      "reviewCaption": "Beautiful but size up",
      "reviewText": "Sample review text.",
      "reviewFirstName": "Sample",
      "reviewerHeightInches": 63,
      "reviewerWeightPounds": 140,
      "reviewerBodyType": "Full Bust"
    }
  ],
  "datePublished": "2026-10-09",
  "scopePath": "/c/dresses",
  "scrapedAt": "2026-10-12T00:00:00Z"
}
```

The dataset carries one style record per row. The Output tabs: **Styles** (the overview table), **Style details** (enriched fields), **Member reviews** (one row per review), and **Changes since the last run** (incremental mode).

### Plan Requirement

This actor is priced per event: each returned style record bills the result event, product page reads bill the detail surcharge when Fetch product details is on, and member reviews bill one `review-enrichment` event per delivered review when Fetch member reviews is on. Your Apify plan's proxy usage applies as usual; the site is served by the default connection.

### 🔗 More scrapers you might like

Pair this actor with these related scrapers from the same team:

<table>
<tr><td>🧩 <a href="https://apify.com/abotapi/ssense-product-scraper"><b>SSENSE Scraper</b></a><br>Scrape SSENSE by keyword, category, designer or URL. Every row carries the selling price...</td><td>🛒 <a href="https://apify.com/abotapi/uniqlo-com-scraper"><b>UNIQLO Scraper</b></a><br>Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre...</td></tr>
<tr><td>🛒 <a href="https://apify.com/abotapi/therealreal-scraper"><b>The RealReal Scraper</b></a><br>Scrape luxury consignment listings from therealreal.com. Browse by designer, category or...</td><td>🧩 <a href="https://apify.com/abotapi/grailed-marketplace-scraper"><b>Grailed Scraper</b></a><br>Scrape Grailed by keyword, category, designer, condition, size or URL. Extract prices and...</td></tr>
<tr><td>🏷️ <a href="https://apify.com/abotapi/thredup-scraper"><b>ThredUp Scraper</b></a><br>Scrape ThredUp resale listings by keyword, department, brand, size, condition, price or...</td><td>👗 <a href="https://apify.com/abotapi/next-uk-product-scraper"><b>Next.co.uk Scraper</b></a><br>Scrape Next.co.uk: keyword search, category and product-listing walks, full product...</td></tr>
</table>

👉 [Browse all abotapi scrapers](https://apify.com/abotapi)

### 💬 Support

- 🐞 **Found a bug or a missing field?** Open a ticket on the [Issues tab](https://apify.com/abotapi/renttherunway-scraper/issues/open). We usually reply within hours.
- 🛠️ **Need another site, extra fields or a private build?** Email <contact@abotapi.com>.
- ⭐ **Enjoying it?** A quick review on the actor page helps other users find it.

# Actor input Schema

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

Search walks the site's own category and keyword grids. URL mode reads exactly the links you paste: category grids, browse pages, keyword-search links and product pages are all accepted, and every link shape the site emits is recognized.

## `categories` (type: `array`):

Category slugs or paths to walk, one per line (search mode). Use a slug like dresses, gowns, maternity-clothes, jeans or handbags, or a deeper path like c/dresses/gowns. Leave both Categories and Search term empty to browse the whole catalogue.

## `searchText` (type: `string`):

Keyword search (search mode), run in addition to the categories above. Example: black gown.

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

Only styles available in these sizes, e.g. 8. Multiple sizes are combined. The site applies this server-side, so pages narrow before they are read.

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

Order of the walked grids.

## `availabilityScope` (type: `string`):

Reserve narrows the walk to styles with one-time rental availability, the way the site's own rental filter does.

## `urls` (type: `array`):

Multi-URL supported. Category grids (/c/dresses, /c/dresses/gowns), browse routes (/products, /buy/products, /clearance/products, /shop/new_arrivals/products), keyword-search links (/products?filters\[searchText]=black+gown) and product pages (/shop/designers/amur/reese_cascade_gown) are all accepted. Pagination starts at the page in the link and walks forward. On pasted grid links, the sizes, sort and availability fields below apply only where the link carries none of its own; a link's own parameters always win.

## `fetchDetails` (type: `boolean`):

Read each style's product page for the description, size range, materials, full image gallery and availability. Charged once per enriched record (detail enrichment).

## `fetchReviews` (type: `boolean`):

Collect member reviews per style, up to Max reviews per style. Charged once per delivered review (review-enrichment), only for records actually returned.

## `maxReviews` (type: `integer`):

Cap on reviews collected per style when Fetch member reviews is on (0 skips reviews). The default keeps the default run's review cost capped; raising it opts into more per-review charges.

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

Stop after this many styles across the whole run (0 = no limit).

## `maxPages` (type: `integer`):

Safety bound on grid pages per source (0 = no page limit). Max items remains the cap that stops a run early.

## `proxy` (type: `object`):

Connection settings. The site is served over the default connection on every route; Residential is recommended for the most reliable results on large or frequent runs.

## `resumeFromRunId` (type: `string`):

Continue ONE interrupted run: paste its run or dataset ID and this run skips everything already collected there. Mutually exclusive with Incremental mode.

## `incrementalMode` (type: `boolean`):

For scheduled runs over the same scope: remember the previous run's results and return only NEW and UPDATED styles. Compared fields: designer, title, prices, sizes, availability, description, materials, gallery and dates. Member review counts/lists and the site's own dateModified re-render stamp are excluded (they move without the style changing); extend via the field below.

## `stateKey` (type: `string`):

Names the stored incremental baseline. Leave empty to derive it from the scope (mode, search term, categories, links, sizes, sort and toggles), or set one to share a baseline across differently-named scopes.

## `emitUnchanged` (type: `boolean`):

Incremental mode: also return styles classified UNCHANGED (they are suppressed and not billed by default). Turning this on returns and bills extra rows.

## `emitExpired` (type: `boolean`):

Incremental mode: also return styles that disappeared from the scope since the last full scan, classified EXPIRED. Turning this on returns and bills extra rows.

## `ignoreFieldsForChanges` (type: `array`):

Top-level field names excluded from change detection, in addition to the defaults (reviews, reviewCount, reviewAverageRating, reviewFitCounts, reviewPhotoCount, ratingValue). Use for any field that moves without the style changing in your scope.

## `mcpConnectors` (type: `array`):

Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API and Integrations, then select it here. Notion gets a page per record; other connectors get a best-effort write or digest. Each connector receives a condensed summary per record, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).

## `notionParentPageUrl` (type: `string`):

For the Notion connector: the page under which records are created.

## `maxNotifyListings` (type: `integer`):

Upper bound on records delivered through the connector (the dataset always carries everything).

## Actor input object example

```json
{
  "mode": "search",
  "categories": [
    "dresses"
  ],
  "sortBy": "recommended",
  "availabilityScope": "all",
  "urls": [
    "https://www.renttherunway.com/c/dresses",
    "https://www.renttherunway.com/c/dresses/gowns",
    "https://www.renttherunway.com/products?filters%5BsearchText%5D=black+gown",
    "https://www.renttherunway.com/shop/designers/amur/reese_cascade_gown"
  ],
  "fetchDetails": true,
  "fetchReviews": false,
  "maxReviews": 20,
  "maxItems": 20,
  "maxPages": 0,
  "proxy": {
    "useApifyProxy": true
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": [],
  "maxNotifyListings": 50
}
```

# Actor output Schema

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

No description

## `detail` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `changes` (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 = {
    "mode": "search",
    "categories": [
        "dresses"
    ],
    "sortBy": "recommended",
    "availabilityScope": "all",
    "urls": [
        "https://www.renttherunway.com/c/dresses",
        "https://www.renttherunway.com/c/dresses/gowns",
        "https://www.renttherunway.com/products?filters%5BsearchText%5D=black+gown",
        "https://www.renttherunway.com/shop/designers/amur/reese_cascade_gown"
    ],
    "fetchDetails": true,
    "fetchReviews": false,
    "maxReviews": 20,
    "maxItems": 20,
    "maxPages": 0,
    "proxy": {
        "useApifyProxy": true
    },
    "incrementalMode": false,
    "emitUnchanged": false,
    "emitExpired": false,
    "ignoreFieldsForChanges": [],
    "maxNotifyListings": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/renttherunway-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 = {
    "mode": "search",
    "categories": ["dresses"],
    "sortBy": "recommended",
    "availabilityScope": "all",
    "urls": [
        "https://www.renttherunway.com/c/dresses",
        "https://www.renttherunway.com/c/dresses/gowns",
        "https://www.renttherunway.com/products?filters%5BsearchText%5D=black+gown",
        "https://www.renttherunway.com/shop/designers/amur/reese_cascade_gown",
    ],
    "fetchDetails": True,
    "fetchReviews": False,
    "maxReviews": 20,
    "maxItems": 20,
    "maxPages": 0,
    "proxy": { "useApifyProxy": True },
    "incrementalMode": False,
    "emitUnchanged": False,
    "emitExpired": False,
    "ignoreFieldsForChanges": [],
    "maxNotifyListings": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/renttherunway-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 '{
  "mode": "search",
  "categories": [
    "dresses"
  ],
  "sortBy": "recommended",
  "availabilityScope": "all",
  "urls": [
    "https://www.renttherunway.com/c/dresses",
    "https://www.renttherunway.com/c/dresses/gowns",
    "https://www.renttherunway.com/products?filters%5BsearchText%5D=black+gown",
    "https://www.renttherunway.com/shop/designers/amur/reese_cascade_gown"
  ],
  "fetchDetails": true,
  "fetchReviews": false,
  "maxReviews": 20,
  "maxItems": 20,
  "maxPages": 0,
  "proxy": {
    "useApifyProxy": true
  },
  "incrementalMode": false,
  "emitUnchanged": false,
  "emitExpired": false,
  "ignoreFieldsForChanges": [],
  "maxNotifyListings": 50
}' |
apify call abotapi/renttherunway-scraper --silent --output-dataset

```

## MCP server setup

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