Wayfair Scraper — Furniture Prices, Specs & Reviews
Pricing
from $4.00 / 1,000 wayfair product scrapeds
Wayfair Scraper — Furniture Prices, Specs & Reviews
Scrape Wayfair by keyword, category/listing URL, or product URL: title, price, original price, savings, rating, review count, brand, SKU, availability, breadcrumbs, images, and (with detail enrichment) specs, dimensions, materials, description + optional customer reviews. PPE. MCP-ready.
Pricing
from $4.00 / 1,000 wayfair product scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
7
Monthly active users
2 days ago
Last modified
Categories
Share
Wayfair Scraper — Prices, Specs, Ratings & SKUs
Wayfair Scraper is an Apify Actor for people who need structured Wayfair product data from a keyword search, category/listing URL, or product URL. It accepts one search term or a set of Wayfair URLs, returns one dataset record per product, and includes fields such as title, current price, original price, savings, rating, review count, brand, SKU, availability, breadcrumbs, images, and provenance. When product detail enrichment is enabled, the Actor also adds specs, dimensions, materials, description, feature bullets, and the full image gallery.
Best fit and connected workflows
This Actor fits workflows that start with Wayfair search or browse pages and end with structured product records for analysis or downstream automation. It is a natural route for:
- Keyword-based catalog collection from Wayfair search results.
- Category or listing-page collection with automatic pagination.
- Single-product extraction from
/pdp/URLs when you want a full detail record. - Marketplace-aware runs across Wayfair US, CA, UK, and IE storefronts.
- Apify MCP workflows where an agent needs to turn a Wayfair query into dataset rows.
For browsing by storefront, use country. For listing pages, use sortBy, minPrice, maxPrice, or minRating to shape the returned set before it is written to the dataset. For richer product cards, enable enrichProductDetails.
Practical scenario
A procurement analyst starts with a Wayfair category URL for office chairs and wants a clean shortlist. They provide the listing page in startUrls, set sortBy to top_rated, and cap maxResults at 20. The dataset returns fields like title, price, rating, reviewCount, brand, sku, availability, and productUrl. The analyst uses those records to compare chair candidates and then opens the linked product pages for a final review of dimensions and material before sharing the shortlist with the buyer.
Input fields
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | office chair | Free-text Wayfair keyword. The Actor opens search results and collects product cards across pages up to maxResults. |
startUrls | string[] | [] | Wayfair search, category/listing, or /pdp/ product URLs. URL type is detected automatically. |
maxResults | integer | 100 | Maximum number of product records across all sources. |
country | enum | com | Wayfair storefront: com, ca, co.uk, or ie. |
sortBy | enum | relevance | Result order: relevance, price_low_to_high, price_high_to_low, top_rated, or newest. |
minPrice | integer | - | Minimum current price in the marketplace currency. |
maxPrice | integer | - | Maximum current price in the marketplace currency. |
minRating | integer | - | Minimum average star rating from 0 to 5. |
enrichProductDetails | boolean | false | Opens each product detail page for breadcrumbs, specs, dimensions, materials, description, feature bullets, and the image gallery. |
proxyConfiguration | object | Apify Proxy | Proxy settings for requests. |
Focused JSON input example
{"searchQuery": "sectional sofa","country": "com","sortBy": "top_rated","maxResults": 25,"minPrice": 500,"enrichProductDetails": true}
Output fields
Each dataset record represents one product and uses recordType: "product".
| Field | Type | Description |
|---|---|---|
recordType | string | Record type, always product. |
title | string | Product title. |
productUrl | string | Canonical Wayfair product URL. |
sku | string | Wayfair SKU. |
manufacturerSku | string | Manufacturer SKU when available. |
brand | string | Brand name. |
price | number | Current price. |
originalPrice | number | Original or strike-through price. |
savings | number | Absolute savings. |
savingsPercent | integer | Savings percentage. |
currency | string | Marketplace currency. |
rating | number | Average star rating. |
reviewCount | integer | Review count. |
availability | string | Stock status. |
imageUrl | string | Primary image URL. |
images | array | Image gallery URLs. |
breadcrumbs | array | Category path. |
category | string | Category name. |
subCategory | string | Subcategory name. |
dimensions | string | Product dimensions. |
weight | string | Product weight. |
material | string | Material information. |
color | string | Color information. |
description | string | Product description. |
features | array | Feature bullets. |
specs | object | Parsed specs map. |
shippingInfo | string | Shipping information. |
freeShipping | boolean | Free-shipping flag when available. |
promoFlag | string | Promotion marker. |
variantCount | integer | Number of variants. |
position | integer | Result position. |
searchQuery | string | Query or route provenance. |
site | string | Wayfair marketplace site. |
sourceUrl | string | Source page URL. |
scrapedAt | string | ISO timestamp of the scrape. |
_warnings | array | Record-level warnings when present. |
Illustrative JSON output record
{"recordType": "product","title": "Example Upholstered Sofa","productUrl": "https://www.wayfair.com/furniture/pdp/example-sofa","sku": "W12345678","brand": "Example Brand","price": 799.99,"originalPrice": 999.99,"savings": 200,"savingsPercent": 20,"currency": "USD","rating": 4.7,"reviewCount": 184,"availability": "In Stock","imageUrl": "https://assets.wfcdn.com/example.jpg","breadcrumbs": ["Furniture", "Living Room Furniture", "Sofas"],"dimensions": "84 in W x 35 in D x 32 in H","material": "Upholstered","position": 1,"searchQuery": "sectional sofa","site": "wayfair.com","scrapedAt": "2026-06-21T00:00:00.000Z"}
How it works
The Actor accepts either a keyword search or one or more Wayfair URLs. It auto-detects whether each URL is a search page, category/listing page, or product detail page. Listing pages are paginated until maxResults is reached. Product URLs return one full detail record.
The implementation uses a Playwright-based Chromium crawler with stealth handling and residential/mobile proxy support. For detail enrichment, it opens product detail pages to collect breadcrumbs, specifications, dimensions, materials, description, feature bullets, and the image gallery. The dataset schema also records provenance fields such as searchQuery, site, sourceUrl, and scrapedAt.
Pricing
Wayfair Scraper — Prices, Specs, Ratings & SKUs uses Pay per event plus Apify platform usage. The primary billable event is Wayfair product scraped, and there is also an Actor start event for execution initialization and compute baseline. Filtered-out products are not billed.
Use the live Pricing tab on the Actor page for current pricing details before you run it. As a simple example, 10 returned product records correspond to 10 product events, plus the run start event.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It is designed for agents that need to translate a Wayfair task into structured product records and then read the dataset back for follow-up reasoning.
Actor identity: khadinakbar/wayfair-scraper
Tool description: send a keyword, a set of Wayfair URLs, or a product URL, and receive one dataset row per product with prices, ratings, SKUs, and optional detail-page fields.
"Find top-rated office chairs on Wayfair US, return the first 15 products, and include product URLs, prices, ratings, review counts, and dimensions if available."
Output interpretation: each dataset record is one product. Use recordType, title, price, rating, reviewCount, brand, and productUrl for ranking or routing. sourceUrl, searchQuery, and scrapedAt help track provenance. When enrichProductDetails is on, the record may also include breadcrumbs, dimensions, material, description, features, and images.
Scope guidance: use searchQuery for broad discovery and startUrls for known listing or product pages. Pagination is handled by the Actor, and maxResults caps the number of product records returned.
Cost guidance: set maxResults to the number of product records you want, since that acts as a practical ceiling for product events.
Apify API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {searchQuery: "sectional sofa",country: "com",sortBy: "top_rated",maxResults: 5,enrichProductDetails: true,};const run = await client.actor("khadinakbar/wayfair-scraper").call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Use searchQuery for discovery, and use startUrls when you already have a specific Wayfair category, listing, or product page. If you want richer product cards, enable enrichProductDetails. If you want the run to focus on a narrower set, combine sortBy with minPrice, maxPrice, and minRating. For storefront-specific runs, match country to the marketplace you want to scrape.
Continue the workflow
- Then use WooCommerce Product Scraper to extend Wayfair Scraper — Prices, Specs, Ratings & SKUs with a neighboring commerce research source when the brief calls for Woocommerce data.
- Then use Walmart Reviews Scraper - Ratings, Photos & Verified to extend Wayfair Scraper — Prices, Specs, Ratings & SKUs with a neighboring commerce research source when the brief calls for Walmart data.
Design note
I found that the output contract exposes a single required record type, product, with scrapedAt as the other required field. That made it clear the dataset is centered on one normalized product record shape rather than multiple entity types.
FAQ
Can I start from a Wayfair search term?
Yes. Use searchQuery for keyword-driven collection from Wayfair search results.
Can I start from a category or listing page?
Yes. Put the Wayfair listing URL into startUrls, and the Actor will paginate product cards from that page.
Can I scrape one product page directly?
Yes. Use a /pdp/ product URL in startUrls to return one full detail record.
Which Wayfair marketplaces are supported?
The Actor supports com, ca, co.uk, and ie.
How do I get specs and dimensions on listing runs?
Set enrichProductDetails to true, or use product URLs in startUrls.
Responsible use
Use this Actor in line with applicable laws, platform terms, and your own data governance practices. Keep requests scoped to publicly accessible Wayfair pages, respect rate and access controls, and review the live Pricing tab before running jobs at scale.
