Wayfair Scraper avatar

Wayfair Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Wayfair Scraper

Wayfair Scraper

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.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

43

Total users

13

Monthly active users

0.76 hours

Issues response

2 days ago

Last modified

Share

Scrape Wayfair product listings, product detail pages, category browses, and brand pages across all four regional storefronts. Search by keyword, paste any Wayfair URL, browse a top-level category, look up a brand, or resolve exact SKUs — get title, price (incl. sale/previous price), currency, rating, review count, brand, description, breadcrumbs, image, and product URL for every result. HTTP-only via curl_cffi Chrome impersonation with Apify residential proxy — no login, no cookies, no API key.

What this actor does

  • Five modes: search, byUrl, byCategory, byBrand, byProduct
  • Four regional storefronts: wayfair.com (US), wayfair.ca (CA), wayfair.co.uk (UK), wayfair.ie (IE)
  • Filters: price range, minimum rating, sort order
  • Optional PDP enrichmentfetchProductDetails=true fetches each product's detail page to add brand, real per-product description, breadcrumbs, and a high-resolution image
  • Automatic anti-bot recovery — rotates proxy sessions and escalates to Apify UNBLOCKER after repeated blocks
  • Empty fields are omitted — no null/sentinel values anywhere in a record

Output per product

  • title, sku, brand (PDP enrichment only)
  • productUrl, canonicalUrl
  • price, previousPrice — the pre-discount price, only present when the product is actually on sale
  • currency — native currency for the store (USD/CAD/GBP/EUR)
  • ratingValue (0.0–5.0), reviewCount
  • imageUrl — CDN image link
  • description — real per-product text (PDP enrichment only)
  • breadcrumbs[], category, subCategory (PDP enrichment only)
  • promoFlag — e.g. "Labor Day Deal", "72-Hour Clearout" (listing cards only)
  • country, siteName: "Wayfair", recordType: "product", scrapedAt, sourceUrl

Input

Proxy behavior: the actor defaults to the Apify RESIDENTIAL group and requests a fresh proxy session for every HTTP request and retry, so a temporarily rate-limited exit is never reused for the rest of a run.

FieldTypeDefaultDescription
modeenumsearchsearch / byUrl / byCategory / byBrand / byProduct
countryenumcomcom (US) / ca (Canada) / co.uk (UK) / ie (Ireland)
textstringsofaSearch keyword (search mode)
categoryenumfurnitureTop-level Wayfair category (byCategory mode)
urlsarrayDirect Wayfair URLs — search results, category, brand, or product page (byUrl mode)
brandstringBrand / manufacturer name, e.g. "Latitude Run" (byBrand mode)
skusarrayWayfair SKUs, e.g. W118077895, CXVA1530 (byProduct mode)
sortByenumrelevancerelevance / price_low_to_high / price_high_to_low / top_rated / newest / best_seller
priceMin / priceMaxintDrop products outside this price range
ratingMinfloatDrop products with rating below this (0.0–5.0); products with no rating are kept
fetchProductDetailsboolfalseEnrich every listing card with PDP data (brand, description, breadcrumbs, high-res image)
maxItemsint25Hard cap on emitted records (1–5000)
maxPagesPerListingint3Max paginated listing pages to crawl per seed (1–25; ~48 products per page)
proxyConfigurationproxyRESIDENTIALApify proxy — required; Wayfair blocks Apify datacenter IPs with 429

Example: keyword search, sorted by rating

{
"mode": "search",
"country": "com",
"text": "sofa",
"sortBy": "top_rated",
"maxItems": 50
}

Example: any Wayfair URL (category, brand, or product page)

{
"mode": "byUrl",
"urls": [
"https://www.wayfair.com/furniture/cat/sofas-c413894.html",
"https://www.wayfair.com/furniture/pdp/latitude-run-ilkeston-...-cxva1530.html"
]
}

Example: category browse with full PDP enrichment

{
"mode": "byCategory",
"country": "co.uk",
"category": "lighting",
"sortBy": "newest",
"fetchProductDetails": true,
"maxItems": 30
}

Example: exact SKU lookup

{
"mode": "byProduct",
"country": "com",
"skus": ["W118077895", "CXVA1530"]
}

Use cases

  • Price monitoring — track price and sale-price changes for specific SKUs over time
  • Competitor/market research — benchmark furniture and home-goods pricing across brands and categories
  • Catalog enrichment — bulk-fetch brand, description, and imagery for a list of known SKUs
  • Assortment analysis — compare category depth and best-sellers across US/CA/UK/IE storefronts
  • Deal discovery — filter listings by sortBy=price_low_to_high or ratingMin to surface top-rated bargains
  • Brand tracking — monitor a specific manufacturer's live catalog and pricing

FAQ

Does this work without a proxy? Locally, yes (from your own IP). On Apify cloud, Wayfair returns 429 from every Apify datacenter IP, so the actor defaults to RESIDENTIAL proxy and will not reliably return data without it.

Why can a Residential Proxy still receive a 429? Wayfair can temporarily rate-limit an individual residential exit. The actor responds by requesting a fresh proxy session for the next request or retry, and automatically escalates to Apify UNBLOCKER after repeated blocks.

Does it support wayfair.de? No. Wayfair shut down its German storefront in 2020; the domain redirects to a permanent announcement page.

Why is price missing on some listing-card results? Wayfair's listing pages only embed full pricing for a subset of cards in the initial page load — the rest hydrate client-side after the page renders, which a pure-HTTP scraper can't observe. Enable fetchProductDetails=true for much more reliable per-product pricing (the actor fetches each product's own detail page, which reliably embeds price).

What does previousPrice mean? The pre-discount price, only present when the product is actively on sale. Wayfair tags sale pricing as either its "primary" listed price or a distinct "sale" variation depending on the page — the actor recognizes both.

What happens if I request a SKU that doesn't exist? byProduct mode validates that Wayfair's own SKU-lookup result actually matches the SKU you requested; if it doesn't find an exact match, that SKU is skipped rather than substituted with an unrelated product.

Does the scraper extract reviews? Not individual reviews — only the aggregate ratingValue and reviewCount. Wayfair's review widget loads via a separate XHR call after the page renders.

How many products per page? ~48 unique SKUs per Wayfair listing page.

What about international currency? Each store has its native currency: USD (com), CAD (ca), GBP (co.uk), EUR (ie). The actor extracts the actual currency code embedded in the page for each result rather than assuming one from the country.

Is this affiliated with Wayfair? No — this is a third-party actor built against Wayfair's public website.

Limitations

  • wayfair.de is not supported (storefront closed since 2020).
  • Listing-page pricing is partial by design. Most cards on a search/category/brand listing page hydrate pricing client-side after the initial load, so it isn't present in a plain HTTP fetch. fetchProductDetails=true gets substantially more complete pricing at the cost of one extra request per product.
  • fetchProductDetails=true is slower — it fetches a full product page (1–2 MB) per item. The actor fetches these concurrently in small batches to keep this reasonable, but large maxItems values with enrichment enabled will still take noticeably longer than a plain listing scrape.
  • Reviews-per-product are not extracted, only the aggregate rating and review count.
  • Brand pages: Wayfair doesn't expose a single canonical brand-URL format, so byBrand mode performs a brand-scoped keyword search rather than browsing a dedicated brand page. For an exact brand storefront, paste its URL directly via byUrl mode instead.
  • Sponsored/ad placements on listing pages may return sparser data than organic results.