{
  "openapi": "3.0.1",
  "info": {
    "title": "Nuuly Scraper - Clothing Rentals, Prices, Sizes & Reviews",
    "description": "Scrape Nuuly clothing rental products by category, brand or URL. Extract product names, brands, retail prices, rental availability, sizes, colors, fabric details, product images and member reviews.",
    "version": "0.1",
    "x-build-id": "Kg1WTLcileTEvpydn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~nuuly-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-nuuly-com-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~nuuly-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-nuuly-com-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~nuuly-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-nuuly-com-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 one catalog listing per entry (category slug, brand slug or brand name). URL mode reads exactly the links you paste and walks their pagination forward.",
            "default": "search"
          },
          "browseSlugs": {
            "title": "Categories or brands",
            "type": "array",
            "description": "One listing per entry. Category slugs like all, dresses, tops, jackets, sweaters-sweatshirts; brand slugs like free-people; or plain brand names like Free People (matched against the brand directory). The first entry's filters below apply to every listing.",
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Filter by brand",
            "type": "array",
            "description": "Optional. Narrow results to these brand names, exactly as the catalog writes them (for example Free People, Maeve, Anthropologie). Comma-separable multi-value is sent as one filter.",
            "items": {
              "type": "string"
            }
          },
          "occasions": {
            "title": "Occasion",
            "enum": [
              "Casual",
              "Cocktail",
              "Going Out",
              "Formal",
              "Wedding Guest",
              "Work",
              "Vacation"
            ],
            "type": "string",
            "description": "Optional. The catalog's own occasion filter."
          },
          "length": {
            "title": "Length",
            "enum": [
              "Mini",
              "Midi",
              "Maxi",
              "Knee",
              "Ankle",
              "Hip",
              "Waist",
              "Crop"
            ],
            "type": "string",
            "description": "Optional. The catalog's own length filter."
          },
          "material": {
            "title": "Material",
            "enum": [
              "Cashmere",
              "Chiffon",
              "Cotton",
              "Denim",
              "Lace",
              "Linen",
              "Satin",
              "Silk",
              "Velvet",
              "Knit",
              "Leather",
              "Suede",
              "Sequin",
              "Ribbed",
              "Jersey",
              "Corduroy",
              "Tulle",
              "Crepe",
              "Poplin",
              "Fleece",
              "Wool",
              "Mesh",
              "Crochet",
              "Chambray",
              "Tweed",
              "Down",
              "Faux Fur"
            ],
            "type": "string",
            "description": "Optional. The catalog's own material filter."
          },
          "silhouettes": {
            "title": "Silhouette",
            "enum": [
              "A-Line",
              "Fitted",
              "Slip",
              "Wrap",
              "Shift",
              "Bodycon",
              "Oversized",
              "Relaxed",
              "Straight",
              "Fit and Flare",
              "Ball Gown",
              "Blouson",
              "Boyfriend",
              "Cocoon",
              "Column",
              "Tent"
            ],
            "type": "string",
            "description": "Optional. The catalog's own silhouette filter."
          },
          "color": {
            "title": "Color",
            "enum": [
              "beige",
              "black",
              "blue",
              "bronze",
              "brown",
              "gold",
              "green",
              "grey",
              "multi",
              "orange",
              "pink",
              "purple",
              "red",
              "silver",
              "teal",
              "white",
              "yellow",
              "cream",
              "navy",
              "olive",
              "rust"
            ],
            "type": "string",
            "description": "Optional. The catalog's own color filter."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "popular",
              "new",
              "top_rated",
              "high_to_low_rent",
              "low_to_high_rent"
            ],
            "type": "string",
            "description": "Listing order.",
            "default": "popular"
          },
          "inStock": {
            "title": "Available to rent only",
            "type": "boolean",
            "description": "Only items the catalog currently shows as available to rent. Turn off to include the full catalog including everything currently rented out.",
            "default": true
          },
          "urls": {
            "title": "Catalog links",
            "type": "array",
            "description": "Multi-URL supported. Product links return one record each; listing links (rent/browse/... or rent/brands/...) are walked forward page by page. Links may carry a color or page parameter. Search-mode filters are ignored.",
            "default": [
              "https://www.nuuly.com/rent/products/pippa-packable-puffer-jacket?color=001",
              "https://www.nuuly.com/rent/browse/tops",
              "https://www.nuuly.com/rent/brands/free-people"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch product details",
            "type": "boolean",
            "description": "Read each product's own page for the description, fabric and care notes, model notes, size availability, colorways, full image gallery, attributes and member reviews.",
            "default": true
          },
          "maxReviews": {
            "title": "Max reviews per product",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Cap on member reviews attached to each enriched record. Reviews are served on the product page itself (the catalog serves up to 16 per page there), so this trims the attached list; 0 skips reviews. Each delivered review is billed once.",
            "default": 20
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "The one stop cap: 0 means unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max pages per listing",
            "minimum": 0,
            "type": "integer",
            "description": "Defaults wide open so Max items is the only cap that stops a run early. Each listing page carries up to 100 products.",
            "default": 0
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxy is preselected because Nuuly serves catalog pages through it. Access depends on your Apify plan; if your plan does not include residential access, use your own proxy URLs.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          },
          "resumeFromRunId": {
            "title": "Resume from run ID",
            "type": "string",
            "description": "Run ID of an interrupted run. Its already-collected records are skipped and the walk continues where it stopped."
          },
          "incrementalMode": {
            "title": "Incremental mode",
            "type": "boolean",
            "description": "Recurring monitoring: remember the previous run of the same search and return only NEW, UPDATED or REAPPEARED products (plus EXPIRED rows when Emit expired is on). Unchanged products are suppressed and never billed.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional name for the incremental baseline. Leave empty to derive it from the search scope, so two differently configured runs never share a baseline."
          },
          "emitUnchanged": {
            "title": "Emit unchanged",
            "type": "boolean",
            "description": "Also return (and bill) rows classified UNCHANGED in incremental mode.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired",
            "type": "boolean",
            "description": "Also return (and bill) EXPIRED rows for tracked products that left the catalog. Only a run that reached the natural end of every listing may mark rows expired.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Top-level field names excluded from change detection on top of the built-in defaults (scrapedAt, the nested reviews list; its count is tracked instead). Use for fields you do not want to bill as changes.",
            "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 & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip — 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 (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}