Wayfair Product and Price Scraper avatar

Wayfair Product and Price Scraper

Pricing

Pay per event

Go to Apify Store
Wayfair Product and Price Scraper

Wayfair Product and Price Scraper

Track Wayfair assortment and pricing with product and variant IDs, sale prices, discounts, promotions, ratings, images, and regional listing context.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Turn Wayfair search and category pages into structured product and price data.

The Actor extracts visible Wayfair product variants without requiring a Wayfair account. Use a keyword such as office chair, submit an exact category URL, or combine several inputs. Each dataset row contains stable IDs, prices, discounts, ratings, images, promotions, and source context.

It is designed for scheduled assortment snapshots, competitor price tracking, catalog research, and retail analytics. The crawler uses lightweight HTTP first and starts a browser only when Wayfair serves a partial listing shell.

What does the Wayfair Product and Price Scraper do?

The Actor visits anonymous pages on wayfair.com and returns one row per selected listing variant. It supports Wayfair keyword pages, category pages, and browse pages. It follows server-rendered pagination within the limit you choose. It deduplicates products across overlapping inputs by product ID and variant ID.

You can use it to:

  • 🔎 search Wayfair by one or many product keywords;
  • 💵 capture current price, previous price, savings, and discount percentage;
  • 🏷️ collect sale and promotion labels;
  • ⭐ export ratings and aggregate review counts;
  • 🖼️ save product image URLs and Wayfair image IDs;
  • 🧩 identify selected variants and choice IDs;
  • 📍 preserve the requested ship-to ZIP context;
  • 🕒 timestamp every recurring snapshot.

Who is it for?

Retailers and furniture brands can compare their catalog against Wayfair assortment and prices.

Marketplace resellers can discover promoted products and monitor price movement before sourcing decisions.

Competitive-intelligence teams can schedule daily or weekly category snapshots and compare datasets over time.

Catalog and data teams can normalize Wayfair IDs, URLs, images, ratings, and pricing into a warehouse.

Developers and automation builders can call the Actor through the API, MCP, webhooks, or integrations.

Why use this Wayfair scraper?

Manual browsing is useful for one product but inefficient for a category or recurring monitor. This Actor provides repeatable inputs and export-ready output.

  • No Wayfair login is required.
  • Keyword and URL workflows use the same output contract.
  • Result caps keep smoke tests and scheduled runs bounded.
  • HTTP-first extraction reduces browser and proxy usage when possible.
  • Partial anti-bot pages fail closed instead of returning misleading empty data.
  • Dataset results work with JSON, CSV, Excel, XML, RSS, and API clients.

What Wayfair data can I extract?

FieldTypeDescription
productIdstringWayfair display listing ID
variantIdstringSelected listing variant ID
selectedChoiceIdsnumber[]Variant choice IDs from the listing URL
namestringDisplay product name
urlstringCanonical visible product URL
imageUrlstring or nullLead product image
imageIdnumber or nullWayfair image identifier
currentPricenumberCurrent displayed price
previousPricenumber or nullPrevious or strike-through price
currencystringDisplay currency, normally USD
savingsAmountnumber or nullPrevious price minus current price
discountPercentnumber or nullCalculated percentage discount
promotionstring or nullSale or promotion label
ratingnumber or nullAverage product rating
reviewCountnumber or nullAggregate rating count
marketingCopystring or nullListing marketing description when embedded
inStockboolean or nullPositive add-to-cart stock signal when visible
isSponsoredbooleanWhether Wayfair marks the listing as sponsored
shipToPostalCodestring or nullZIP context submitted with the run
sourceUrlstringSearch/category page that produced the item
searchTermstring or nullKeyword input, when applicable
pageNumbernumberSource pagination number
positionnumberListing position reported by Wayfair
scrapedAtstringISO extraction timestamp

How to scrape Wayfair products

  1. Open the Actor input page.
  2. Enter one or more values in Wayfair search terms.
  3. Optionally add exact Wayfair category or browse URLs.
  4. Keep maxItems small for the first run.
  5. Choose how many pages to follow per input.
  6. Optionally enter a US ZIP code for regional context.
  7. Run the Actor and open the default dataset.
  8. Export the records or connect a downstream integration.

Input

A small keyword run:

{
"searchTerms": ["office chair"],
"maxItems": 20,
"maxPagesPerUrl": 1,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

An exact category snapshot:

{
"startUrls": [
{ "url": "https://www.wayfair.com/furniture/sb0/office-chairs-c478390.html" }
],
"maxItems": 50,
"maxPagesPerUrl": 2,
"postalCode": "10001"
}

At least one non-empty searchTerms or startUrls value is required. Non-Wayfair hosts and product-detail URLs fail validation because this Actor is listing-focused.

Output example

{
"productId": "W112194307",
"variantId": "W112194307_290186980",
"selectedChoiceIds": [290186980],
"name": "Murva Ergonomic Office Chair with Footrest",
"url": "https://www.wayfair.com/furniture/pdp/example-w112194307.html?piid=290186980",
"imageUrl": "https://assets.wfcdn.com/im/example.jpg",
"imageId": 447643739,
"currentPrice": 209.99,
"previousPrice": 289.99,
"currency": "USD",
"savingsAmount": 80,
"discountPercent": 27.59,
"promotion": "Pay Over Time Sale",
"rating": 4.86,
"reviewCount": 43,
"shipToPostalCode": "10001",
"sourceUrl": "https://www.wayfair.com/keyword.php?keyword=office%20chair",
"searchTerm": "office chair",
"pageNumber": 1,
"position": 1,
"scrapedAt": "2026-07-16T05:49:33.341Z"
}

Values reflect what Wayfair displayed at scrape time and may vary by location or session.

How much does it cost to scrape Wayfair products?

This Actor uses pay-per-event pricing. A small start event covers run initialization, and an item event is charged for each saved product record. Plan tiers receive decreasing per-item prices. The one-time start is $0.005. Per saved product, current tier prices are $0.00056189 FREE, $0.00048860 BRONZE, $0.00038111 SILVER, $0.00029316 GOLD, $0.00019544 PLATINUM, and $0.00013681 DIAMOND. The current prices are also shown on the Actor pricing tab before you start a run.

Actual spend depends on the number of saved rows, pages, browser fallback, and residential proxy transfer. Use maxItems: 20 and one page for a low-cost first test. Filtered duplicates are not pushed or charged as result items.

Pagination and duplicate handling

Wayfair category pages expose numbered page links. The Actor follows those links until maxPagesPerUrl, maxItems, or the available pages are exhausted.

Overlapping keywords can surface the same product. The Actor deduplicates by product ID plus selected variant ID across the entire run. Different selected variants can remain separate records when their variant IDs differ.

Regional prices and availability

Wayfair can personalize price, delivery, and availability by location. Set postalCode to pass a US ZIP context and preserve it in every row. The field is evidence of the requested context, not a guarantee that every upstream promotion is ZIP-specific.

inStock: true means an add-to-cart signal was visible. inStock: null means no reliable positive or negative stock signal was available on the listing card. The Actor does not turn an unknown state into false.

Price monitoring workflow

Create a scheduled Actor task with stable inputs. Store each run's timestamped dataset or send it to your database. Join snapshots on productId and variantId. Compare currentPrice, previousPrice, promotion, and inStock between runs. Alert only after confirming a material change across the desired ZIP context.

This workflow supports repricing research, sale detection, and assortment change monitoring.

Assortment and catalog analysis

Use category URLs when you need a repeatable shelf definition. Use keywords when you need discovery across Wayfair's current search interpretation.

Useful analyses include:

  • new and removed listing IDs;
  • promoted share of a category;
  • average current price by keyword;
  • discount distribution;
  • rating and review-count coverage;
  • repeated product variants across categories;
  • image and marketing-copy changes.

Integrations

Send results to tools available through the Apify platform.

  • Google Sheets: append a scheduled price snapshot for analysts.
  • Slack: post a webhook alert when downstream code detects a price drop.
  • Zapier or Make: trigger catalog enrichment and approval flows.
  • Google Drive or S3: archive dated exports for historical analysis.
  • Webhooks: start a comparison job after each successful run.
  • Apify API: load records directly into a warehouse or application.

Use the stable product and variant IDs as downstream keys.

API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/wayfair-product-price-scraper').call({
searchTerms: ['standing desk'],
maxItems: 25,
maxPagesPerUrl: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/wayfair-product-price-scraper').call(run_input={
'searchTerms': ['outdoor dining set'],
'maxItems': 25,
'maxPagesPerUrl': 1,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Keep tokens in environment variables or a secrets manager in production.

cURL API example

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~wayfair-product-price-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["sectional sofa"],"maxItems":20,"maxPagesPerUrl":1}'

Poll the returned run ID, then download its default dataset.

Use with Apify MCP

Connect AI clients through Apify MCP:

https://mcp.apify.com/?tools=automation-lab/wayfair-product-price-scraper

Claude Code setup

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/wayfair-product-price-scraper"

Claude Desktop, Cursor, and VS Code setup

For Claude Desktop, Cursor, or VS Code, add this server to the client's MCP configuration and authenticate with your Apify token:

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

Try specific example prompts:

  • “Scrape 20 Wayfair office chairs and rank them by current discount percentage.”
  • “Create a Wayfair sectional sofa price snapshot for ZIP 10001, including variant IDs and ratings.”
  • “Extract the first Wayfair office-chair category page and return product ID, current price, previous price, and promotion.”
  • “Compare these Wayfair variant IDs with yesterday's dataset and flag price changes above 10%.”

Keep result caps small while testing prompts.

Scheduling recurring snapshots

Save a successful input as an Apify task. Open Schedules, choose the task, and select a daily or weekly cadence. Use a webhook to notify your pipeline after success.

Do not overwrite historical data if price trends matter. Archive datasets with the run ID and scrapedAt timestamp. Monitor failure alerts because Wayfair delivery can change.

Reliability and anti-bot handling

Wayfair sometimes returns HTTP 429 or a shell containing only the first few products. The Actor detects that partial response rather than silently treating it as a complete page. It first tries inexpensive anonymous HTTP and then uses a US residential browser fallback. Blocked exits rotate conservatively with bounded retries.

If every route remains blocked, the run fails non-zero and logs the affected source URL. A failed run does not overwrite the extraction error during cleanup.

Limitations

  • The Actor currently targets public wayfair.com US listing pages.
  • It does not scrape product-detail specifications or individual review bodies.
  • Product-detail URLs are rejected by design.
  • Marketing copy can be null when Wayfair omits it from embedded state.
  • Availability can be null when the listing card has no reliable signal.
  • Prices, promotions, ranking, and stock can differ by location and time.
  • Wayfair can change its HTML, embedded state, rate limits, and pagination.
  • Very large runs consume more proxy bandwidth and should be tested gradually.

Tips for accurate results

  • Start with one keyword and one page.
  • Use category URLs for repeatable assortment boundaries.
  • Keep the same ZIP context across snapshots.
  • Compare by product and variant IDs, not name alone.
  • Store sourceUrl, pageNumber, and position for ranking analysis.
  • Treat null availability as unknown.
  • Review a sample of records before automating business decisions.
  • Increase limits only after a small run succeeds.

Public web data can generally be collected for legitimate purposes, but rules vary by jurisdiction and use case. You are responsible for complying with Wayfair's terms, applicable laws, privacy requirements, and contractual obligations.

Avoid collecting personal data that you do not need. Respect intellectual-property rights and do not republish protected images or copy without permission. Use reasonable request volumes and secure all exported data. This documentation is not legal advice.

Troubleshooting

The run says a partial listing shell was returned. Wayfair served fewer unique products than a normal listing page. Keep the residential proxy enabled and retry later rather than accepting incomplete output.

The run fails with HTTP 429. Wayfair rate-limited the current route. Use the default US residential proxy configuration and a small one-page input.

My URL is rejected. Use a Wayfair keyword, category, or browse listing URL. Product-detail URLs and other hosts are outside this Actor's contract.

Why is inStock null? The listing card did not expose a trustworthy stock signal. Null is intentionally different from out of stock.

FAQ

Does the Actor require a Wayfair account? No. It targets anonymous public listing pages.

Can I provide multiple keywords? Yes. Results deduplicate across all keywords and URLs in the run.

Can it monitor previous prices? It captures Wayfair's displayed previous price and calculated discount. For historical trends, schedule runs and compare stored datasets.

Does it scrape reviews? It returns aggregate rating and review count, not individual review text.

Can I scrape Wayfair Canada or the UK? Not in this release. The validated scope is wayfair.com US.

Why use a browser fallback? Wayfair sometimes sends a partial server response to HTTP clients. The browser allows the listing grid to hydrate before extraction.

Combine this Actor with related Automation Lab catalog tools:

Use source-specific IDs separately, then normalize titles, prices, currency, and snapshot timestamps in your warehouse.

Support

If a run fails, open the run log and note the input, failing URL, build number, and timestamp. Share a run with the developer through Apify's support flow when possible. Do not post API tokens, proxy credentials, or private downstream data.

For reproducible reports, include a small input that demonstrates the issue. The Actor deliberately logs route failures without logging proxy credentials.

Start scraping Wayfair

Run a small office chair search, inspect the dataset, and save the input as a task. Once the fields match your workflow, schedule recurring snapshots or connect the Actor through API, MCP, or webhooks.