{
  "openapi": "3.0.1",
  "info": {
    "title": "Wayfair Scraper",
    "description": "Scrape Wayfair product listings, product details, category browses, and brand pages from Wayfair.com (US), Wayfair.ca (Canada), Wayfair.co.uk (UK), and Wayfair.ie (Ireland). Extract title, SKU, brand, price, currency, rating, review count, image, breadcrumbs, and product URL.",
    "version": "1.0",
    "x-build-id": "pzt9CrgW7mj8fiBLz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~wayfair-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-wayfair-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/crawlerbros~wayfair-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-wayfair-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/crawlerbros~wayfair-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-wayfair-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",
          "proxyConfiguration"
        ],
        "properties": {
          "mode": {
            "title": "Scrape mode",
            "enum": [
              "search",
              "byUrl",
              "byCategory",
              "byBrand",
              "byProduct"
            ],
            "type": "string",
            "description": "How to find products on Wayfair. search: keyword search. byUrl: paste any Wayfair search, category, brand, or product URL(s). byCategory: browse a top-level category. byBrand: search by brand name or paste a brand's listing URL(s). byProduct: look up specific products by SKU.",
            "default": "search"
          },
          "country": {
            "title": "Country / domain",
            "enum": [
              "com",
              "ca",
              "co.uk",
              "ie"
            ],
            "type": "string",
            "description": "Wayfair regional domain. com=US, ca=Canada, co.uk=UK, ie=Ireland. (Wayfair.de shut down in 2020 and is not supported.) Any other value falls back to wayfair.com and the run log records a warning saying so, so you can tell a fallback apart from a real US run.",
            "default": "com"
          },
          "text": {
            "title": "Search keyword (search mode)",
            "type": "string",
            "description": "Free-text keyword (used in search mode). Examples: \"sofa\", \"office chair\", \"throw pillow\", \"area rug\".",
            "default": "sofa"
          },
          "category": {
            "title": "Category (byCategory mode)",
            "enum": [
              "furniture",
              "outdoor",
              "decor-pillows",
              "rugs",
              "kitchen-tabletop",
              "bed-bath",
              "lighting",
              "storage-organization",
              "appliances",
              "home-improvement",
              "baby-kids",
              "holiday-decor",
              "office",
              "pet"
            ],
            "type": "string",
            "description": "Top-level Wayfair category (resolves to a category browse URL). Used for byCategory mode.",
            "default": "furniture"
          },
          "urls": {
            "title": "URLs (byUrl mode)",
            "type": "array",
            "description": "Direct Wayfair URLs (search results, category page, or product detail page). Domain auto-detected from URL.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "brand": {
            "title": "Brand name (byBrand mode)",
            "type": "string",
            "description": "Brand or manufacturer name, exactly as it appears on Wayfair (e.g. \"Latitude Run\", \"Wade Logan\", \"Hokku Designs\"). Results are filtered to that brand. Free text rather than a dropdown, since Wayfair carries thousands of brands.",
            "default": ""
          },
          "skus": {
            "title": "Product SKUs (byProduct mode)",
            "type": "array",
            "description": "Wayfair product SKUs (e.g. \"W118077895\", \"CXVA1530\"). The scraper resolves each SKU to its detail page.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by (search / byCategory / byBrand)",
            "enum": [
              "relevance",
              "price_low_to_high",
              "price_high_to_low",
              "top_rated",
              "newest",
              "best_seller"
            ],
            "type": "string",
            "description": "Sort order for search, category, and brand results, as offered by Wayfair itself.",
            "default": "relevance"
          },
          "priceMin": {
            "title": "Minimum price",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop products priced below this value (in the destination country's currency). Leave empty to apply no lower bound."
          },
          "priceMax": {
            "title": "Maximum price",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop products priced above this value (in the destination country's currency). Leave empty to apply no upper bound."
          },
          "ratingMin": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Drop products with rating below this value (0.0-5.0). Products with no rating are kept (the user opted into the filter, not into requiring the field)."
          },
          "onSaleOnly": {
            "title": "On sale only",
            "type": "boolean",
            "description": "Only emit products that are actually discounted, i.e. Wayfair shows a struck-through \"was\" price above the payable one (the record's previousPrice field). Products with no previous price are dropped.",
            "default": false
          },
          "minDiscountPercent": {
            "title": "Minimum discount %",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Only emit products discounted by at least this percentage off their previous price (1-99). Leave empty to apply no discount threshold. Implies \"On sale only\": a product with no previous price has no measurable discount and is dropped."
          },
          "inStockOnly": {
            "title": "In-stock only",
            "type": "boolean",
            "description": "Only emit listings Wayfair explicitly marks as IN_STOCK. Listings with no stock-status evidence are dropped (unlike price/rating filters, this is a confirmed-availability guarantee, not a best-effort filter).",
            "default": false
          },
          "fetchProductDetails": {
            "title": "Fetch product detail pages",
            "type": "boolean",
            "description": "Visit each product's own page to enrich results with price, rating, brand, full description, breadcrumbs, a high-resolution image, colour/size variants, and up to 25 individual customer reviews. Recommended for complete, reliable data; takes longer to run than a listing-only scrape.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on emitted product records. Note how this interacts with \"Max listing pages\": a single search/category/brand seed yields about 48 products per page, so one seed can realistically return at most ~1,200 products (48 x the 25-page ceiling). Values above that are only reachable when you supply several seeds at once - multiple URLs in byUrl/byBrand mode, or multiple SKUs in byProduct mode - because the cap applies to the whole run, not per seed.",
            "default": 25
          },
          "maxPagesPerListing": {
            "title": "Max listing pages",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Maximum paginated listing pages (?page=N) to crawl per search/category/brand seed (~48 products per page). This bounds how many products one seed can possibly yield: 25 pages x ~48 = ~1,200. Raise it alongside \"Max items\" when you want a deep single-seed crawl.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Apify proxy configuration",
            "type": "object",
            "description": "Proxy configuration. Wayfair blocks most non-residential traffic, so a Residential proxy is required for reliable results and is used by default. Leaving this blank will cause most or all requests to fail.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}