Wayfair Product Scraper avatar

Wayfair Product Scraper

Pricing

from $2.45 / 1,000 results

Go to Apify Store
Wayfair Product Scraper

Wayfair Product Scraper

Scrape Wayfair products from keywords, SKUs or URLs for search, category and brand pages. Get product names, brands, SKUs, ratings, availability, images and selected options, with optional page-level dimensions, weight, descriptions and specifications. Supports three regional Wayfair stores.

Pricing

from $2.45 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

18 hours ago

Last modified

Categories

Share

Returns: one row per Wayfair product with sku, name, brand, price, listPrice, isOnSale, rating, reviewCount, availability and url. Input: {"searchQueries": ["accent chair"], "maxItems": 50, "minPrice": 100, "maxPrice": 400, "onlyOnSale": true} Best for: furniture price monitoring, sale and discount tracking, competitor assortment research.

{
"sku": "HGHM1255",
"name": "Hertford 26\" Wide Mid Century Upholstered Solid Wood Accent Chair with an Extra Pillow",
"brand": "Sand & Stable\u2122",
"price": 132.99,
"currency": "USD",
"listPrice": 199,
"isOnSale": true,
"rating": 4.38,
"reviewCount": 9972,
"url": "https://www.wayfair.com/furniture/pdp/sand-stable-hertford-26-wide-mid-century-upholstered-solid-wood-accent-chair-with-an-extra-pillow-hghm1255.html"
}

What does Wayfair Product Scraper do?

Wayfair Product Scraper collects product data from Wayfair search results, category pages, brand pages and individual product pages. It returns one clean record per product with the name, brand, SKU, current price, struck-through "was" price, sale price, discount percentage, currency, rating, review count, availability, stock message, delivery message, main image and the selected variant options. When product page details are switched on, each record also contains overall dimensions, product weight, all structured dimensions, the full specifications table, the marketing description and the category breadcrumb.

You can use it for furniture and home-goods price tracking, assortment and brand research, catalog building and market analysis. It works on three Wayfair stores: wayfair.com (prices in USD), wayfair.ca (CAD) and wayfair.co.uk (GBP). It reads only public pages that load for a logged-out visitor. No login, no account and no cookies are involved.

This is an independent tool. It is not affiliated with, endorsed by or sponsored by Wayfair.

Start from keywords, SKUs, search URLs, category URLs, brand URLs or product URLs. You can mix them in one run.

Results are de-duplicated by SKU across all inputs, so the same product is never returned twice in one run.

Listing-only mode (product page details off) is a fast way to track prices each day.

Every record has an id (the SKU) and a sourceUrl (the product page it came from).

Output is available as JSON, CSV, Excel, XML or through the API.

What data can you get?

Each dataset item is one product. The fields below are available. Fields marked "details only" are filled when product page details are on, and listing-only fields come from the search or category card.

FieldTypeDescription
idstringStable record ID, equal to the SKU
sourceUrlstringCanonical product page the record came from
skustringWayfair SKU, such as W100576387 (C prefix on wayfair.ca, U prefix on wayfair.co.uk)
namestringProduct name
brandstringManufacturer or house brand as Wayfair shows it
urlstringCanonical product URL without query string
variantUrlstringProduct URL with the piid parameter of the shown variant
variantIdstringID of the shown variant
pricenumberCurrent price for a logged-out visitor
currencystringUSD, CAD or GBP
listPricenumberStruck-through "was" price, when Wayfair shows one
salePricenumberSet only when Wayfair labels the price "Sale"
isOnSalebooleanTrue when a sale price exists or the list price is above the price
discountPercentintegerPercentage from labels such as "33% Off"
ratingnumberAverage customer rating from 0 to 5
reviewCountintegerNumber of customer reviews
availabilitystringIN_STOCK, OUT_OF_STOCK, BACKORDERED or similar
stockMessagestringCard message such as "491 Left in Stock" (listing results only)
deliveryMessagestringCard message such as "FREE 2-Day Delivery" (listing results only)
imageUrlstringMain product image, 800 pixels
selectedOptionsarrayOptions of the shown variant as name and value pairs
optionsCountintegerNumber of visual choices, such as colors, offered
promoFlagstringPromotional flag on the card, such as "Big Furniture Sale"
sponsoredbooleanTrue for sponsored ad cards
categoryPatharrayCategory breadcrumb (details only)
brandUrlstringBrand page URL (details only)
descriptionstringMarketing description (details only)
overallDimensionsstringOverall dimensions (details only)
productWeightstringOverall product weight (details only)
dimensionsobjectAll structured dimensions, key to value (details only)
specificationsobjectFull specifications table, key to value (details only)
detailsScrapedbooleanTrue when the product page was parsed
positioninteger1-based rank within its search or listing; null for direct product inputs
searchQuerystringThe keyword that found the product
inputUrlstringThe listing or product URL that led to the record
storestringwayfair.com, wayfair.ca or wayfair.co.uk
scrapedAtstringISO timestamp of the scrape

What the price fields mean

price is what Wayfair charges now. listPrice is the struck-through "was" price shown next to it. salePrice is filled only when Wayfair itself labels the current price "Sale", so many discounted items have a listPrice and a discountPercent but no salePrice. isOnSale is a convenience flag that is true in either case.

Prices, stock and delivery messages are what a logged-out visitor sees without entering a ZIP or postal code. Member-only prices and ZIP-specific delivery dates are not collected, and delivery messages are generic.

How to use Wayfair Product Scraper

  1. Open the Actor and go to the Input tab.
  2. Add search keywords, start URLs or both. A keyword is what you would type into the Wayfair search box.
  3. Choose the store for keywords and SKUs. URLs keep the store they point to.
  4. Set Max products to the number of records you need.
  5. Keep product page details on if you want dimensions, weight, specifications and categories. Turn them off for the fastest price-only runs.
  6. Keep the default residential proxy. Wayfair blocks datacenter addresses.
  7. Click Start and download the results from the Output tab.

Inputs are processed in this order: product URLs and SKUs first, then listing URLs, then keyword searches. Broad keywords such as "accent chair" are redirected by Wayfair to a category page. The Actor follows that redirect and keeps paging through the category. A SKU used as a keyword (for example W100576387) leads straight to its product page and returns one record.

Pagination uses the curpage parameter. A run stops when it reaches Max products, the page limit, a page with no product cards or a page that adds no new product. Sponsored cards repeat between pages, and they are de-duplicated by SKU.

Wayfair does not show an empty page for nonsense keywords. It returns loosely matching products instead. The Actor checks that at least one product on the first page relates to your keyword and otherwise returns nothing for that query, with a warning in the log.

Input

FieldTypeDescription
searchQueriesarray of stringsKeywords as typed in the Wayfair search box. A SKU also works
startUrlsarraySearch, category (/sb0/, /sb1/, /cat/), brand (/brand/bnd/) or product (/pdp/) URLs. Bare SKUs are accepted too
storestringwayfair.com, wayfair.ca or wayfair.co.uk for keywords and SKUs. Default wayfair.com
maxItemsintegerMaximum number of products, 1 to 5000. Default 50
maxPagesPerQueryintegerListing pages per query or URL, 1 to 100. Default 10
includeDetailsbooleanOpen each product page for dimensions, weight, specifications, description and category. Default true
includeSponsoredbooleanKeep sponsored cards, flagged with sponsored: true. Default true
minPricenumberOnly products priced at or above this amount in the store's currency. Applied to listing cards. Default none
maxPricenumberOnly products priced at or below this amount. Applied before product pages are opened, so it saves requests. Default none
minRatingnumberOnly products with an average rating of at least this value (0-5). Unrated products are skipped. Default none
onlyOnSalebooleanOnly products where the list price is above the current price. Default false
proxyConfigurationobjectApify Proxy settings. Residential is required and is enforced if missing

Example input:

{
"searchQueries": ["boucle swivel accent chair"],
"startUrls": [
{ "url": "https://www.wayfair.com/furniture/sb0/accent-chairs-c416225.html" },
{ "url": "https://www.wayfair.com/brand/bnd/ivy-bronx-b44318.html" }
],
"store": "wayfair.com",
"maxItems": 100,
"maxPagesPerQuery": 5,
"includeDetails": true,
"includeSponsored": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

The proxy country defaults to the store: US for wayfair.com, CA for wayfair.ca and GB for wayfair.co.uk. You can override it with apifyProxyCountry.

Output

Results are stored in the default dataset. This example shows a record with product page details:

{
"id": "HGHM1255",
"sourceUrl": "https://www.wayfair.com/furniture/pdp/sand-stable-hertford-26-wide-mid-century-upholstered-solid-wood-accent-chair-with-an-extra-pillow-hghm1255.html",
"sku": "HGHM1255",
"name": "Hertford 26\" Wide Mid Century Upholstered Solid Wood Accent Chair with an Extra Pillow",
"brand": "Sand & Stable™",
"price": 132.99,
"currency": "USD",
"listPrice": 199,
"salePrice": null,
"isOnSale": true,
"discountPercent": 33,
"rating": 4.38,
"reviewCount": 9972,
"availability": "IN_STOCK",
"stockMessage": "491 Left in Stock",
"deliveryMessage": "FREE 2-Day Delivery",
"selectedOptions": [{ "name": "Upholstery Material", "value": "Beige" }],
"optionsCount": 4,
"promoFlag": "Big Furniture Sale",
"sponsored": false,
"categoryPath": ["Furniture", "Living Room Furniture", "Chairs & Seating", "Accent Chairs"],
"overallDimensions": "29'' H X 26'' W X 32'' D",
"productWeight": "29.32 lb.",
"detailsScraped": true,
"position": 1,
"searchQuery": "accent chair",
"store": "wayfair.com"
}

The dimensions and specifications objects are shortened in this example. In real output they hold every row Wayfair lists, usually 20 or more specification keys.

The dataset has an overview table view with the image, name, brand, SKU, price, was price, sale price, discount, currency, rating, reviews, availability, stock, dimensions, weight, category, sponsored flag, rank, query and URL.

How much does it cost?

The Actor is charged per result: you pay for each product record saved to the dataset. See the Pricing tab of the Actor page for the current rate. Platform usage such as proxy traffic is billed separately by Apify according to your plan.

Wayfair pages are large and the Actor needs a residential proxy, so traffic is the main cost driver. With product page details on, the Actor makes one extra request for every product. For large daily price-tracking runs, turn product page details off. Listing cards already contain the price, list price, sale price, rating, review count, stock and delivery message, and a listing page holds 30 to 48 products in a single request.

Use with AI agents (MCP)

You can call this Actor from AI assistants through the Apify MCP server. Add this to your MCP client configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=axiomworks/wayfair-product-scraper"
}
}
}

Example prompts:

  • "Find the 20 best-rated boucle swivel accent chairs on Wayfair and compare their prices."
  • "Get the price, list price and discount for Wayfair SKU W100576387."
  • "List Ivy Bronx products on Wayfair that are currently on sale."
  • "Scrape the first 50 products from this Wayfair category page without product page details."

Integrations and API

Run the Actor from your own code with the Apify API. Replace YOUR_API_TOKEN with your token (in cURL, set the APIFY_TOKEN environment variable).

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("axiomworks/wayfair-product-scraper").call(run_input={
"searchQueries": ["accent chair"],
"maxItems": 50,
"includeDetails": False,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["sku"], item["name"], item["price"], item["currency"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('axiomworks/wayfair-product-scraper').call({
searchQueries: ['accent chair'],
maxItems: 50,
includeDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => process.stdout.write(`${item.sku} ${item.price}\n`));

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~wayfair-product-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["accent chair"], "maxItems": 50, "includeDetails": false}'

You can also connect the dataset to Google Sheets, Make, Zapier, n8n or a webhook, and schedule the Actor to run every day for price monitoring. Compare each day's price and listPrice by sku to spot changes.

FAQ

Do I need a Wayfair account? No. The Actor only reads pages that load for a logged-out visitor.

Why is a residential proxy required? Wayfair uses bot protection that blocks datacenter IP addresses. The Actor uses Apify residential proxies by default and enforces them even if your input leaves the proxy out. Some first attempts are blocked. The Actor retries them on a fresh proxy session, so runs normally recover.

Why did I get fewer products than Max products? The listing may hold fewer products than you asked for, the page limit may have been reached, or Wayfair stopped returning new products. Sponsored cards that repeat between pages are counted once.

Why is salePrice empty for a discounted product? salePrice is set only when Wayfair labels the price "Sale". Use listPrice, discountPercent and isOnSale for other discounts.

Why are stockMessage and deliveryMessage empty for some records? Those messages come from listing cards. Records built from a product URL or SKU use the product page only and carry the availability status instead.

What happens with a wrong URL or nonsense keyword? The Actor logs a warning, saves nothing for that input and finishes without a long wait. If nothing at all was saved, the run finishes successfully with zero items and a status message that names the cause. A RUN_SUMMARY record in the key-value store lists the inputs, pages fetched, products saved, inputs not found, inputs that failed and blocked attempts.

Can I scrape other countries? The Actor supports wayfair.com, wayfair.ca and wayfair.co.uk. Other Wayfair brands and country stores are not supported.

Are delivery dates included? No. Delivery messages are generic because no ZIP code is set.

What if Wayfair changes its site? Wayfair updates its pages often. If a page returns zero cards, the log says so. Report it through the Issues tab and it will be looked at.

The Actor collects publicly visible product information such as names, prices, ratings and specifications. It does not log in, does not bypass or solve CAPTCHAs, and does not collect personal data: reviewer names are not scraped. Web scraping of public data is generally lawful in many jurisdictions, but rules differ by country and by use. Wayfair's terms of service may restrict automated access, and you are responsible for how you use the data. Respect copyright and trademark rights, keep request volumes modest, and take legal advice for commercial use if you are unsure. Wayfair product names and images belong to Wayfair and the brands that sell on it.

Feedback

Found a bug or missing field? Open an issue from the Issues tab of this Actor with the input you used and the run link. Feature requests are welcome, for example more stores or extra fields.