{
  "openapi": "3.0.1",
  "info": {
    "title": "Rent the Runway Scraper - Designer Rentals, Prices & Reviews",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "Nkx5SYz6IgxIbHiQh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~renttherunway-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-renttherunway-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/abotapi~renttherunway-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-renttherunway-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/abotapi~renttherunway-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-renttherunway-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": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "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.",
            "default": "search"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "string"
            }
          },
          "searchText": {
            "title": "Search term",
            "type": "string",
            "description": "Keyword search (search mode), run in addition to the categories above. Example: black gown."
          },
          "sizes": {
            "title": "Sizes",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "recommended",
              "newest",
              "highest_msrp",
              "lowest_msrp"
            ],
            "type": "string",
            "description": "Order of the walked grids.",
            "default": "recommended"
          },
          "availabilityScope": {
            "title": "Availability scope",
            "enum": [
              "all",
              "reserve"
            ],
            "type": "string",
            "description": "Reserve narrows the walk to styles with one-time rental availability, the way the site's own rental filter does.",
            "default": "all"
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "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.",
            "default": [
              "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"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch product details",
            "type": "boolean",
            "description": "Read each style's product page for the description, size range, materials, full image gallery and availability. Charged once per enriched record (detail enrichment).",
            "default": true
          },
          "fetchReviews": {
            "title": "Fetch member reviews",
            "type": "boolean",
            "description": "Collect member reviews per style, up to Max reviews per style. Charged once per delivered review (review-enrichment), only for records actually returned.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per style",
            "minimum": 0,
            "type": "integer",
            "description": "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.",
            "default": 20
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many styles across the whole run (0 = no limit).",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per source",
            "minimum": 0,
            "type": "integer",
            "description": "Safety bound on grid pages per source (0 = no page limit). Max items remains the cap that stops a run early.",
            "default": 0
          },
          "proxy": {
            "title": "Proxy and connection",
            "type": "object",
            "description": "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": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "Continue ONE interrupted run: paste its run or dataset ID and this run skips everything already collected there. Mutually exclusive with Incremental mode."
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "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": {
            "title": "Include unchanged records",
            "type": "boolean",
            "description": "Incremental mode: also return styles classified UNCHANGED (they are suppressed and not billed by default). Turning this on returns and bills extra rows.",
            "default": false
          },
          "emitExpired": {
            "title": "Include expired records",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "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.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "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": {
            "title": "Notion parent page URL",
            "type": "string",
            "description": "For the Notion connector: the page under which records are created."
          },
          "maxNotifyListings": {
            "title": "Max records to export",
            "type": "integer",
            "description": "Upper bound on records delivered through the connector (the dataset always carries everything).",
            "default": 50
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}