# Wayfair Scraper — Products, Prices & AI Reviews API (`sian.agency/wayfair-data-scraper`) Actor

Scrape Wayfair into clean JSON: keyword and brand product search, full product details with prices and specs, and paginated customer reviews with an AI-generated summary and aspect sentiments. 3 operations, one dataset. For price monitoring, catalog mapping and review intelligence.

- **URL**: https://apify.com/sian.agency/wayfair-data-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Business, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 search result rows

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Wayfair Scraper — Products, Prices & AI Reviews API — No API Key 🛋️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Store-Taobao & Tmall](https://img.shields.io/badge/Store-Taobao%20%26%20Tmall-FF4F00)](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) [![Store-TikTok Shop](https://img.shields.io/badge/Store-TikTok%20Shop-25F4EE)](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian) [![Store-Sephora Products & Reviews](https://img.shields.io/badge/Store-Sephora%20Products%20%26%20Reviews-E5006E)](https://apify.com/sian.agency/best-sephora-product-information-extractor?fpr=sian)

#### 🎉 Scrape Wayfair products, prices, and reviews — with an AI review summary no other Wayfair scraper gives you — no API key, no approval, no developer account

##### Built for price-tracking SaaS founders, e-commerce ops teams, furniture & home-goods researchers, and merchandising analysts who need clean Wayfair.com data on a schedule

### 📋 Overview

**Wayfair data extraction made ridiculously simple.** Point this actor at a search term, a brand, or a single product SKU — click Run — and get clean, query-ready rows back. No login, no proxy setup, and no waiting on a Wayfair API key or developer approval. It's the Wayfair data API you can actually use today.

Most Wayfair scrapers on the Store do one thing — search *or* product details — and brittle browser scrapers get blocked the moment Wayfair's anti-bot kicks in. This actor bundles **three operations** behind a single dropdown: keyword (or whole-brand) product search, deep product details, and paginated customer reviews — **uniquely surfacing Wayfair's AI-generated review summary and aspect sentiments** on every review row. Pick one operation per run, get one tidy dataset out. Perfect for building a Wayfair price tracker, mapping competitor catalogs, and mining voice-of-customer review insights without running your own NLP.

**Why professionals choose us:**

- ✅ **Wayfair API alternative, zero setup**: no API key, no developer registration — paste an input and run
- 🤖 **AI review intelligence — a SIÁN exclusive**: every review row carries Wayfair's AI-generated review **summary** and **aspect sentiments**. No other Wayfair (or cross-platform) review scraper exposes this
- 🛡️ **Reliable where rivals get blocked**: Wayfair actively blocks direct scraping. Our upstream absorbs the anti-bot layer and we retry transparently — you get data, not "Blocked" errors
- 💰 **Built for price tracking**: capture `price`, `listPrice`, `isOnSale`, and stock status on a schedule, then diff the dataset to catch price moves
- ⚡ **3 operations in one actor**: product search · product details · reviews + AI summary
- 💎 **Pay only for successful rows**: failed lookups land as `status:"error"` rows at zero cost — you're never billed for a hiccup

### ✨ Features

- 🔍 **Product Search**: keyword search OR whole-brand browse (by manufacturer ID) across Wayfair.com, paginated (up to 96 products/page) with sort, color, and price filters
- 📦 **Product Details**: deep single-product scrape by SKU — price, specs, images, rating, brand, and full description
- ⭐ **Product Reviews + AI Summary**: paginated customer reviews (text, rating, author, verified-purchase) **plus** Wayfair's AI review summary and aspect sentiments attached to every row
- 💲 **Price & Stock Capture**: `price`, `listPrice`, `isOnSale`, `promoText`, and `inStock` on every product row — ready for a price-tracking pipeline
- 🏷️ **Brand & Category Browse**: list an entire brand by manufacturer ID, optionally narrowed to a category ID — for share-of-shelf and assortment analysis
- 🌍 **5 marketplaces**: query `wayfair.com` (US), `.ca`, `.co.uk`, `.ie`, or `.de` with one setting per run
- ↕️ **Native Sort & Filter**: recommended, customer rating, price low/high — plus color, min/max price, and in-stock-only filters
- 🖼️ **HTTPS-Normalized URLs**: every product image and link arrives ready to embed
- 📊 **Single Clean Dataset Shape**: one flat row per item, filterable by `_operation` and `status` — same export pipeline across all three operations

### 🎬 Quick Start

So simple, no training needed! Pick an operation, fill the matching input, click Run.

```bash
## Or use the API — one line
curl -X POST https://api.apify.com/v2/acts/sian.agency~wayfair-data-scraper/runs?token=YOUR_TOKEN \
-d '{"operation":"search","query":"sofa","sortBy":"recommended","maxPages":3}'
```

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Pick an Operation

Choose one of three operations from the dropdown: Product Search, Product Details, or Product Reviews. One run = one operation.

#### Step 2: Fill the Matching Input

- **Search** → a `query` (e.g. `sofa`) **or** a `manufacturerId` to browse a whole brand
- **Product Details / Reviews** → a `sku` (e.g. `W110469263`)

Optionally set `domain` (`com` / `ca` / `co.uk` / `ie` / `de`), `sortBy`, `itemsPerPage`, color/price filters, and `maxPages`.

#### Step 3: Click Run

One click and we scrape, flatten, normalize, and push clean rows to your dataset. An HTML run report lands in the key-value store. Export to JSON, CSV, or Excel from the Apify console — or pull via API.

**That's it! In seconds, you'll have:**

- Clean flat rows from any of three Wayfair endpoints — same shape, ready to export
- Curated camelCase fields per row plus raw upstream data spread alongside
- Price, list price, sale flag, rating, and stock status on every product row
- Review rows enriched with the AI summary and aspect sentiments
- HTTPS image and product URLs ready to embed
- Error rows for failed inputs — never billed

### 📥 Input Configuration

One operation per run. Each operation has its own required field (validated before charging). The optional `domain` and pagination/filter fields apply where relevant.

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| operation | enum | Yes | One of: `search`, `productDetails`, `productReviews` |
| query | string | search\* | Keyword to search Wayfair (e.g. `sofa`) |
| manufacturerId | string | search\* | Brand/manufacturer ID to browse a whole brand (alternative to `query`) |
| sku | string | productDetails, productReviews | Wayfair product SKU (e.g. `W110469263`) |
| domain | enum | No | `com` (default), `ca`, `co.uk`, `ie`, `de` |
| sortBy | enum | No (search) | `recommended`, `customer_rating`, `price_low_to_high`, `price_high_to_low` |
| itemsPerPage | enum | No (search) | `24`, `48` (default), `96` results/page |
| categoryId | string | No (search) | Narrow search to a Wayfair category ID |
| color | string | No (search) | Color filter (e.g. `Black`, `Blue`) |
| minPrice / maxPrice | integer | No (search) | Price filters (USD) |
| inStock | boolean | No (search) | Return only in-stock products |
| reviewSort | enum | No (reviews) | `relevance`, `helpful`, `date_descending`, `date_ascending`, `rating_descending`, `rating_ascending` |
| reviewStar | enum | No (reviews) | Return only reviews with this star rating (1–5); blank = all |
| maxPages | integer | No | 1–50, controls paginated runs (default 5) |

\* **Search** requires **either** `query` **or** `manufacturerId`.

**Example — Product Search:**

```json
{
  "operation": "search",
  "query": "sofa",
  "sortBy": "customer_rating",
  "itemsPerPage": "48",
  "maxPages": 3
}
```

**Example — Brand Browse (whole manufacturer):**

```json
{
  "operation": "search",
  "manufacturerId": "YOUR_BRAND_ID",
  "maxPages": 5
}
```

**Example — Product Details (single product):**

```json
{
  "operation": "productDetails",
  "sku": "W110469263"
}
```

**Example — Product Reviews + AI Summary (newest first):**

```json
{
  "operation": "productReviews",
  "sku": "W110469263",
  "reviewSort": "date_descending",
  "maxPages": 5
}
```

💡 **Workflow tip:** Run Search to discover SKUs, then loop Details / Reviews per product.

### 📤 Output

One flat row per item, saved to the Apify dataset. Search rows carry product fields; details rows carry the full product; review rows carry review fields **plus the AI summary and aspect sentiments**. Curated camelCase aliases land on every row alongside the raw upstream data. Filter by `_operation` to split modes, or by `status` to separate success from error rows.

| Field | Type | Description |
|-------|------|-------------|
| sku | string | Wayfair product SKU |
| productName | string | Product display name |
| brand | string | Brand / manufacturer |
| price / listPrice | number | Current price and list price |
| priceDisplay / currency | string | Formatted price and currency |
| isOnSale / promoText | boolean / string | Sale flag and promo text |
| rating / reviewCount | number / integer | Average rating and review count |
| inStock / freeShipping | boolean | Stock and shipping flags |
| shippingText / deliveryEstimate | string | Shipping and delivery info |
| descriptionSnippet / productDescription | string | Product description |
| categories / specifications / variants | array | Breadcrumbs, specs, variant options |
| image / images / productUrl | string / array | HTTPS image gallery and product URL |
| reviewId / reviewBody / reviewRating / verifiedPurchase | string / number / boolean | Review fields (Product Reviews) |
| **aiReviewSummary** | string | 🤖 Wayfair's AI-generated review summary (Product Reviews) |
| **aspectSentiments** | array | 🤖 Aspect-level sentiment breakdown — `[{name, count, sentiment}]` (Product Reviews) |
| \_operation / \_fetchedAt / \_page / status | metadata | Always-present row metadata |

**Example — Product Search row:**

```json
{
  "_operation": "search",
  "sku": "W110469263",
  "productName": "Wide Reversible Sofa & Chaise with Ottoman",
  "brand": "Latitude Run",
  "price": 549.99,
  "listPrice": 899.99,
  "isOnSale": true,
  "rating": 4.5,
  "reviewCount": 1283,
  "inStock": true,
  "freeShipping": true,
  "productUrl": "https://www.wayfair.com/furniture/pdp/...html",
  "status": "success"
}
```

**Example — Product Review row (with AI summary):**

```json
{
  "_operation": "productReviews",
  "sku": "W110469263",
  "reviewId": 123456789,
  "reviewBody": "Assembly took 20 minutes and the cushions are firm but cozy...",
  "reviewRating": 5,
  "reviewDate": "2026-01-12",
  "reviewAuthor": "Jamie",
  "reviewerLocation": "Austin, TX",
  "verifiedPurchase": true,
  "aiReviewSummary": "Customers praise comfort and value; some note firm cushions and a longer assembly.",
  "aspectSentiments": [
    { "name": "Comfort", "count": 312, "sentiment": "positive" },
    { "name": "Value", "count": 188, "sentiment": "positive" },
    { "name": "Assembly", "count": 47, "sentiment": "mixed" }
  ],
  "status": "success"
}
```

> Example rows mirror the upstream response schema (field names are stable). Wayfair actively blocks direct scraping; this actor retries transparently to return live data.

### 💼 Use Cases & Examples

#### 1. Price-Tracking SaaS — Build a Wayfair Price Tracker

**For SaaS founders building a Wayfair price tracker without waiting on official API access.**

**Input:** Schedule `productDetails` (or `search`) across your watched SKUs on a daily cron
**Output:** `price`, `listPrice`, `priceDisplay`, `isOnSale`, and `inStock` per product, per run
**Use:** Diff consecutive datasets to detect price drops and restocks — power "price dropped" alerts and historical price charts.

#### 2. E-commerce Ops — Competitor Catalog & Brand Mapping

**For e-commerce ops teams tracking competitor SKUs and pricing on Wayfair.com.**

**Input:** Run `search` with a `manufacturerId` (whole-brand browse) or `categoryId` weekly
**Output:** Full brand/category listings with prices, ratings, and sale flags (up to 96/page)
**Use:** Map competitor assortment, catch new SKU launches, and benchmark price points across your segment.

#### 3. AI Review Intelligence — Voice-of-Customer Without NLP

**For brand and product teams mining Wayfair review sentiment at scale.**

**Input:** `productReviews` paginated across competitor SKUs
**Output:** Reviews with full text, rating, and verified-purchase flag — **plus Wayfair's AI summary and aspect sentiments** on every row
**Use:** Surface complaints, feature requests, and competitor weaknesses instantly. No other Wayfair scraper hands you the AI summary — skip building your own sentiment pipeline.

#### 4. Catalog Enrichment — Specs, Images & Descriptions

**For teams building or enriching a furniture/home-goods product database.**

**Input:** `productDetails` on a list of SKUs
**Output:** Specs, variants, brand, full description, and HTTPS image gallery
**Use:** Enrich your own catalog with structured, query-ready rows, or build a competitive product database with images ready to embed.

#### 5. Merchandising Research — Ranking, Ratings & Sentiment

**For merchandising analysts benchmarking listings against Wayfair best-sellers.**

**Input:** `search` (sorted by `customer_rating`) + `productReviews` on top results
**Output:** Search ranking and ratings combined with review sentiment
**Use:** Quantify where rivals win or lose on price, delivery, and satisfaction for client-ready reports.

### 🔌 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

// Discover SKUs, then enrich them
const search = await client.actor('sian.agency/wayfair-data-scraper').call({
  operation: 'search',
  query: 'sofa',
  maxPages: 2
});

const { items } = await client.dataset(search.defaultDatasetId).listItems();
const skus = items.filter(i => i.status === 'success').map(i => i.sku);
console.log(`${skus.length} SKUs to enrich`);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

## Pull reviews with the AI summary for a watched product
run = client.actor('sian.agency/wayfair-data-scraper').call(
    run_input={'operation': 'productReviews', 'sku': 'W110469263', 'maxPages': 3}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    if item.get('status') == 'success' and item.get('aiReviewSummary'):
        print('AI summary:', item['aiReviewSummary'])
        break
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~wayfair-data-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"productDetails","sku":"W110469263"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule (daily price refresh) or webhook (new SKU added to your tracker)
2. **HTTP Request**: Call the actor API with `operation` and the per-op input fields
3. **Process**: Diff against yesterday's `price`, or score review sentiment from `aiReviewSummary`
4. **Action**: Push price-drop alerts to Slack, sync rows to Google Sheets, or update your price-tracking database

### 📈 Performance & Pricing

Transparent **pay-per-event** — you're charged only for **successful rows**, plus a small one-time start fee per run. Failed lookups land as `status:"error"` rows and cost **$0**. Higher Apify plans get automatic volume discounts on every event.

| Event | Price | Applies to |
|-------|-------|------------|
| `apify-actor-start` | **$0.001** | One-time per run |
| 🔍 `search-result` | **$0.0018** / row | Product Search |
| 📦 `product-detail-result` | **$0.012** / product | Product Details |
| ⭐ `product-review-result` | **$0.0035** / review | Product Reviews (incl. AI summary + aspect sentiments) |

**Cost examples:**

- **1,000 search results** → $1.80 + $0.001 start = **~$1.80**
- **A full product detail lookup** → $0.012 + $0.001 = **~$0.01**
- **1,000 customer reviews (with AI insights)** → $3.50 + $0.001 = **~$3.50**

💰 **Bulk search is priced at a fraction of a cent per row** — cheaper than maintaining your own proxies and parsers, with no Wayfair API approval to wait on.

🔗 [View current pricing](https://apify.com/sian.agency/wayfair-data-scraper?fpr=sian)

### ❓ Frequently Asked Questions

**Q: Does Wayfair have an API?**
A: Wayfair has no open public product API for search, full product details, or customer reviews. This actor is the practical Wayfair API alternative — it returns clean JSON for all of those, with no approval process.

**Q: How do I get a Wayfair API key?**
A: You don't need one. This actor requires **no Wayfair API key and no developer registration** — just an Apify token. Paste your input, click Run, get structured data back.

**Q: What makes the reviews operation different from other Wayfair scrapers?**
A: Every review row carries Wayfair's **AI-generated review summary** and **aspect sentiments** (e.g. comfort, value, assembly) alongside the raw reviews. No other Wayfair review scraper on the Store surfaces this — you get voice-of-customer insight without building your own NLP pipeline.

**Q: Wayfair blocks scrapers — will this actually return data?**
A: Wayfair actively blocks direct scraping, which is why brittle browser scrapers often fail. This actor's upstream absorbs the anti-bot layer and the actor retries transparently on transient blocks, so you get data instead of "Blocked" errors. Persistent block windows surface as `status:"error"` rows at $0 — just re-run.

**Q: Can I use this as a Wayfair price tracker?**
A: Yes — that's a core use case. Schedule `productDetails` or `search` on a cron and diff the dataset run-to-run to capture price drops, sales (`isOnSale`), and restocks. Every product row carries `price`, `listPrice`, and `inStock`.

**Q: How do I browse a whole brand instead of searching keywords?**
A: Use the Search operation with a `manufacturerId` instead of a `query`. Optionally add a `categoryId` to narrow a brand to one category.

**Q: Which marketplaces are supported?**
A: US (`wayfair.com`, `domain: "com"`), Canada (`ca`), UK (`co.uk`), Ireland (`ie`), and Germany (`de`). One setting per run.

**Q: Where do I find a product SKU?**
A: SKUs (e.g. `W110469263`, `MBYC1062`) appear in every Product Search result row (the `sku` field) and in Wayfair product URLs.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset console, or pull via API.

**Q: How am I billed, and what about failed lookups?**
A: Pay-per-event — only successful rows are charged, plus a one-time start fee. Failed lookups land as `status:"error"` rows at **$0**.

### 🐛 Troubleshooting

**A run returns `status:"error"` with "temporarily unavailable"**

- Wayfair hit a transient block or the data source had a hiccup. The actor retries automatically with backoff. Re-run after a moment — error rows are never charged.

**Paginated runs stop early before `maxPages`**

- The actor stops pagination when the data source reports the last page (`total_pages`). This is correct behavior, not a bug — you're not billed for empty pages.

**Product Details / Reviews returns "not found"**

- Confirm the `sku`. It must be the Wayfair SKU (e.g. `W110469263`), which appears in any Search row and in product URLs.

**Search returns fewer rows than expected**

- Thin coverage for a query returns fewer than `itemsPerPage` rows. Broaden the query, relax `minPrice`/`maxPrice`/`color`, or paginate deeper with `maxPages`. Try `itemsPerPage: "96"` for more per call.

**Brand browse returns nothing**

- Confirm the `manufacturerId`. Brand IDs appear in Wayfair brand-page URLs. Provide **either** a `query` **or** a `manufacturerId` for Search — not neither.

### 🧰 More by SIÁN Agency

- [Taobao & Tmall Product Scraper](https://apify.com/sian.agency/taobao-tmall-product-scraper?fpr=sian) — Chinese e-commerce products & search
- [TikTok Shop Scraper](https://apify.com/sian.agency/tiktok-shop-scraper?fpr=sian) — TikTok Shop products, search & sellers
- [Sephora Product Details & Reviews Scraper](https://apify.com/sian.agency/best-sephora-product-information-extractor?fpr=sian) — beauty products, ratings & reviews
- [Browse all SIÁN actors →](https://apify.com/sian.agency?fpr=sian)

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or feature requests, open an issue in the actor's repository or use the **Issues** tab on the actor page
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>
- ⭐ If this saves you time, a 5-star review helps us ship more features.

***

### ⚠️ Trademark Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Wayfair Inc.** "Wayfair" and related marks are trademarks of their respective owners and are used here only to describe the data this tool helps you collect. Use this actor responsibly and in compliance with applicable laws, Wayfair's terms of service, and data-protection regulations (including GDPR and CCPA where applicable). You are responsible for how you use the data you extract.

### Legal

Scrape only publicly available data and use it lawfully. For guidance on ethical and compliant web scraping, see Apify's [guide to web scraping legality](https://blog.apify.com/is-web-scraping-legal/). Do not collect personal data in violation of GDPR, CCPA, or other applicable privacy laws.

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

🎯 **PICK ONE OPERATION PER RUN.** Each run produces one clean dataset matching the chosen mode.

- **Product Search** — keyword search or whole-brand browse, paginated (up to 96 results/page)
- **Product Details** — one product by SKU: price, specs, images, rating, description
- **Product Reviews** — paginated reviews plus Wayfair's AI review summary and aspect sentiments

💡 **TIP:** Run Product Search to discover SKUs, then drill into Details and Reviews per product.

## `query` (type: `string`):

🔍 **Required for `Product Search`** (unless you use Manufacturer ID instead).

Any Wayfair product search query.

- `sofa`
- `office chair`
- `outdoor rug 8x10`

💡 **TIP:** Use the `sortBy` field to rank by price or customer rating. Leave blank only if you provide a Manufacturer ID for brand browsing.

⚠️ **Ignored** for Details and Reviews operations.

## `manufacturerId` (type: `string`):

🏷️ **Optional alternative to Search Query for `Product Search`.**

A Wayfair manufacturer/brand ID — browses every product from that brand (no keyword needed). Combine with `categoryId` to narrow a brand to one category.

💡 **TIP:** Provide EITHER a Search Query OR a Manufacturer ID for the Search operation. Manufacturer IDs appear in Wayfair brand-page URLs.

⚠️ **Ignored** for Details and Reviews operations.

## `sku` (type: `string`):

📦 **Required for `Product Details` and `Product Reviews` operations.**

The Wayfair product SKU. Examples: `MBYC1062`, `W110469263`. SKUs appear in every Product Search result row (the `sku` field) and in product URLs.

💡 **TIP:** Run `Product Search` first to discover SKUs, then loop through Details / Reviews per product.

⚠️ **Ignored** for the Search operation.

## `domain` (type: `string`):

🌍 Which Wayfair marketplace to query. `com` = wayfair.com (US, default).

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

Sort order for `Product Search`.

- `recommended` (default)
- `customer_rating` — highest rated first
- `price_low_to_high`
- `price_high_to_low`

Ignored for Details and Reviews.

## `itemsPerPage` (type: `string`):

Number of products returned per page for `Product Search`. More per page = fewer upstream calls for the same coverage.

- `24`
- `48` (default)
- `96`

## `categoryId` (type: `string`):

Optional. For `Product Search` — narrow results to a specific Wayfair category ID. Pairs well with a Manufacturer ID to browse one brand within one category.

## `color` (type: `string`):

Optional color filter for `Product Search`. Examples: `Black`, `White`, `Blue`, `Gray`, `Brown`, `Red`.

## `minPrice` (type: `integer`):

Optional price filter for `Product Search`. Minimum product price (USD). Leave at 0 for no minimum. Must be lower than Max Price if both are set.

## `maxPrice` (type: `integer`):

Optional price filter for `Product Search`. Maximum product price (USD). Leave at 0 for no maximum. Must be higher than Min Price if both are set.

## `inStock` (type: `boolean`):

Optional. For `Product Search` — return only products that are currently in stock.

## `reviewSort` (type: `string`):

Sort order for `Product Reviews`.

- `relevance` (default)
- `helpful` — most helpful first
- `date_descending` — newest first
- `date_ascending` — oldest first
- `rating_descending` — highest rating first
- `rating_ascending` — lowest rating first

Ignored for all other operations.

## `reviewStar` (type: `string`):

Optional. For `Product Reviews` only — return only reviews with this star rating (1–5). Leave blank for all ratings.

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

📄 **Applies to paginated operations** (Product Search, Product Reviews). Ignored for Product Details (single record).

- **Search:** up to `itemsPerPage` products per page (24/48/96)
- **Product Reviews:** 10 reviews per page

💡 **TIP:** Start small (1–3 pages) to preview results before scaling up. Pagination stops automatically when the data source reports the last page.

⚠️ Hard cap: 50 pages to prevent runaway runs.

## Actor input object example

```json
{
  "operation": "search",
  "query": "sofa",
  "manufacturerId": "",
  "sku": "W110469263",
  "domain": "com",
  "sortBy": "recommended",
  "itemsPerPage": "48",
  "categoryId": "",
  "color": "",
  "minPrice": 0,
  "maxPrice": 0,
  "inStock": false,
  "reviewSort": "relevance",
  "reviewStar": "",
  "maxPages": 5
}
```

# Actor output Schema

## `output` (type: `string`):

Per-row results — one flat row per upstream item with curated camelCase aliases (sku, productName, brand, price, rating, reviewCount, reviewBody, aiReviewSummary, aspectSentiments, …) plus the raw upstream fields spread alongside.

## `report` (type: `string`):

HTML report with run status, success/error row counts, success rate, pages fetched, duration, and the inputs used — written even on fatal crash.

# 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 = {
    "query": "sofa",
    "sku": "W110469263"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/wayfair-data-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 = {
    "query": "sofa",
    "sku": "W110469263",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/wayfair-data-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 '{
  "query": "sofa",
  "sku": "W110469263"
}' |
apify call sian.agency/wayfair-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/wayfair-data-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/Yz8Z3OfARz4zS3xzj/builds/05C2dS3vHYHbWmMRh/openapi.json
