{
  "openapi": "3.0.1",
  "info": {
    "title": "Wayfair Scraper | Product Specs, Prices & Stock",
    "description": "Scrape Wayfair products by keyword, category URL or SKU across the US, Canada and UK. Collect prices, discounts, ratings, stock and images, with optional descriptions, dimensions, materials and specifications. Filter by brand, price, rating or stock. Export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "pvLMbqxxML7MUQSfG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datascraperes~wayfair-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datascraperes-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/datascraperes~wayfair-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datascraperes-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/datascraperes~wayfair-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datascraperes-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",
          "maxItems"
        ],
        "properties": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "products",
              "category",
              "search",
              "inventory",
              "searchProducts"
            ],
            "type": "string",
            "description": "Choose Product details for product URLs or SKUs; Category products for category URLs or IDs; Products by keyword for keyword results; Stock by postal code for stock checks. Search destinations returns the matching destination URL rather than its product listing.",
            "default": "products"
          },
          "market": {
            "title": "Market",
            "enum": [
              "us",
              "ca",
              "uk"
            ],
            "type": "string",
            "description": "Wayfair storefront used when the identifier does not include a domain. Products and category IDs are market-specific: a US SKU does not resolve on the Canadian or UK site.",
            "default": "us"
          },
          "maxItems": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Upper bound for unique records across the whole run. Reaching this cap is a valid completion when no collection or delivery problems remain. Missing or incomplete data is reported separately in the run summary.",
            "default": 50
          },
          "productUrls": {
            "title": "Product URLs or SKUs",
            "maxItems": 200,
            "type": "array",
            "description": "Add one Wayfair product URL or SKU per item, for example W005299789. URLs may come from wayfair.com, wayfair.ca or wayfair.co.uk; the market is detected from the domain and overrides the market setting. Used by the Products and Inventory modes. Up to 200 identifiers.",
            "items": {
              "type": "string",
              "minLength": 3,
              "maxLength": 500
            }
          },
          "categoryUrls": {
            "title": "Category URLs or IDs",
            "maxItems": 20,
            "type": "array",
            "description": "Add one Wayfair category URL or numeric category ID per item, for example https://www.wayfair.com/furniture/sb0/sofas-c413892.html or 413892. Used by the Category mode. Up to 20 categories.",
            "items": {
              "type": "string",
              "minLength": 3,
              "maxLength": 500
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "maxItems": 20,
            "type": "array",
            "description": "Add one keyword or phrase per item, such as coffee table. Used by Products by keyword and Search destinations. Up to 20 terms.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            }
          },
          "postalCode": {
            "title": "Postal code",
            "maxLength": 12,
            "type": "string",
            "description": "Postal code used for stock and delivery information and the shipping context of listings. Required by Inventory. It must be valid for every market selected by the active input URLs. Omitted category postal codes default to 10001 (US), M5V 2T6 (Canada), or SW1A 1AA (UK)."
          },
          "includeDetails": {
            "title": "Include product details",
            "type": "boolean",
            "description": "Enrich category/searchProducts rows with description, dimensions and specifications before delivery. A failed enrichment preserves the listing and marks the run partial. Used only by category and searchProducts.",
            "default": false
          },
          "brand": {
            "title": "Brand",
            "maxLength": 150,
            "type": "string",
            "description": "Exact brand name offered by the category/search refinement. Empty disables. Unavailable brands produce an input warning and skip that listing, never a broader unfiltered catalog. Used only by category and searchProducts.",
            "default": ""
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "maximum": 100000000,
            "type": "number",
            "description": "Keep known prices at or above this value in the market currency. Zero disables. Missing prices are excluded when enabled. Used only by category and searchProducts.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "maximum": 100000000,
            "type": "number",
            "description": "Keep known prices at or below this value. Zero disables. Missing prices are excluded when enabled. Used only by category and searchProducts.",
            "default": 0
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep known ratings at or above this value. Zero disables. Missing ratings are excluded when enabled. Used only by category and searchProducts.",
            "default": 0
          },
          "inStockOnly": {
            "title": "In stock only",
            "type": "boolean",
            "description": "Keep listings explicitly marked IN_STOCK. Unknown stock is excluded. Used only by category and searchProducts.",
            "default": false
          },
          "sortBy": {
            "title": "Listing order",
            "enum": [
              "RECOMMENDED",
              "REVIEW_RATING",
              "PRICE_PER_ITEM_ASC",
              "PRICE_PER_ITEM_DESC"
            ],
            "type": "string",
            "description": "Source order for category/searchProducts. Filtering preserves that order. Used only by category and searchProducts.",
            "default": "RECOMMENDED"
          },
          "filters": {
            "title": "Additional category filters (optional)",
            "maxItems": 10,
            "type": "array",
            "description": "Optional advanced filters. Click Add item and fill Filter ID and Option ID in the form; no JSON is needed. Use identifiers from a previous listing run in REFINEMENTS. For most runs, use the Brand, Price, Rating and In stock controls instead. Leave empty to apply no additional source filters.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "filterId": {
                  "title": "Filter ID",
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 40,
                  "description": "Category-specific filter identifier returned in the REFINEMENTS record, such as 2480 for a Brand filter.",
                  "editor": "textfield"
                },
                "optionId": {
                  "title": "Option ID",
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 40,
                  "description": "Option identifier belonging to filterId, taken from the same REFINEMENTS record. Identifiers vary by category and market.",
                  "editor": "textfield"
                }
              },
              "required": [
                "filterId",
                "optionId"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}