Wayfair Scraper & Price Tracker - Prices, Discounts, Ratings avatar

Wayfair Scraper & Price Tracker - Prices, Discounts, Ratings

Pricing

from $1.00 / 1,000 run start fees

Go to Apify Store
Wayfair Scraper & Price Tracker - Prices, Discounts, Ratings

Wayfair Scraper & Price Tracker - Prices, Discounts, Ratings

Scrape Wayfair category pages into a clean dataset: product name, current price, was-price, genuine discount percent, rating, review count and product URL. Built for price monitoring, assortment research and furniture market analysis.

Pricing

from $1.00 / 1,000 run start fees

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Wayfair Scraper

Wayfair Scraper collects products from Wayfair category pages with current prices, was-prices, genuine discounts, ratings, review counts and product links. Supply a category URL and choose how many unique products you need. Results are saved to the default dataset, ready to export in JSON, CSV or Excel or to read through the Apify API.

Use the Actor to monitor furniture categories, build your own Wayfair price tracker, compare displayed Wayfair prices over time, review discount coverage, or collect a catalogue for your own analysis. Each record retains Wayfair's listing identifier so repeated runs can be joined without relying on a product's changing position in a category. The Actor collects the information shown by the category page; it does not open every product detail page.

What can you do with this Wayfair Scraper?

  • Wayfair price tracking. Schedule the same category every day or week and compare price per listing_id. Together these runs form your own Wayfair price history, and a price drop shows up as a lower price for the same listing.
  • Discount monitoring. on_sale, was_price and discount_percent show which listings Wayfair marks as a sale and how deep the reduction is, without counting every crossed-out number as a discount.
  • Furniture price comparison. Collect sofas, bookcases or any other category and compare Wayfair prices with your own catalogue or with other retailers.
  • Assortment and review research. rating and review_count show which products dominate a category and how much customer feedback they have collected.
  • Catalogue building. Export product names, descriptions and URLs as a starting list for further analysis.

Wayfair Scraper input

The input has three existing settings. category_url is the Wayfair page to collect. limit is the maximum number of unique products to return and defaults to 96, with a supported range of 1 to 2000. retries defaults to 40 and supports values from 1 to 60. It controls how many attempts may be made for a page when the source does not return usable content. The default is 40, including runs submitted through the API.

{
"category_url": "https://www.wayfair.com/furniture/sb0/sofas-c413892.html",
"limit": 30
}

Start with the sofas or bookcases category shown in the examples. Keep any filters already present in the category URL when those filters work in Wayfair itself. A URL that cannot be loaded may produce an empty run. Increasing the attempt limit cannot make an invalid category exist, so check the page when repeated runs remain empty.

The Actor follows category pagination automatically and removes duplicate listing identifiers before delivery. Larger requests may take several page requests. You do not need to manage the continuation field when running the Actor on Apify. If the source stops returning products before your requested limit is reached, the run returns the products that were available. Sponsored placements and changes in inventory can alter row order between runs.

Output fields

Each dataset row contains listing_id, variant_id, name, description, manufacturer, price, was_price, currency, on_sale, discount_percent, rating, review_count, url and position. The original field names and their JSON types are preserved. Fields that the source does not publish can be null; a missing manufacturer is not replaced with an invented brand.

price is the displayed current price as a number, expressed in currency. was_price contains the crossed-out price only when the source marks the line as a sale and the previous price is higher than the current price. discount_percent is calculated from those two values and is null when the record does not qualify as a sale. This distinction prevents a crossed-out value from being reported as a discount without evidence.

name is read from the product URL slug, while description contains the separate marketing copy. The slug can omit punctuation or format words differently from the full product page. rating and review_count describe the information available in the category payload. position starts at one and follows the delivered row order after duplicate removal.

Additional fields support joining records across datasets: source, fetched_at, country, product_id, title and brand. fetched_at records the collection time in UTC. product_id retains the listing identifier, title follows name, and brand follows manufacturer. The US catalogue uses country: US; these fields do not change the meaning of the original fields.

Example output

A real row from the sofas category above, collected on 6 October 2026 (description shortened):

{
"listing_id": "W004081673",
"variant_id": "BC39053931",
"name": "George Oliver Bridgeview Leather Mid Century Modern Upholstered Square Arm Sofa Or Loveseat",
"description": "This sofa brings a clean-lined, modern look to your living room or office with its mid-century style. ...",
"manufacturer": null,
"price": 359.99,
"was_price": 599,
"currency": "USD",
"on_sale": true,
"discount_percent": 39.9,
"rating": 4.48,
"review_count": 1384,
"url": "https://www.wayfair.com/furniture/pdp/george-oliver-bridgeview-leather-mid-century-modern-upholstered-square-arm-sofa-or-loveseat-w004081673.html",
"position": 2,
"source": "wayfair-scraper",
"fetched_at": "2026-10-06T01:20:59.682Z",
"country": "US",
"product_id": "W004081673",
"title": "George Oliver Bridgeview Leather Mid Century Modern Upholstered Square Arm Sofa Or Loveseat",
"brand": null
}

In that run of 30 sofas, 12 listings were marked as a sale with a higher previous price; the other 18 have was_price and discount_percent set to null.

Summary and errors

The default key-value store contains a summary record with product counts, fetched-page counts, price and rating coverage, sale counts and elapsed collection time. An errors record is written when collection encounters a problem. A run with no products can succeed with an empty dataset and a descriptive error code. Such an outcome should be checked separately from a completed run with product rows.

Previously collected rows remain deliverable when a later page cannot be collected. Review the summary for partial results before treating a run as a complete snapshot. Category ordering, availability, prices and review information may change independently of your input, so compare repeated observations by listing_id and collection time.

How this Wayfair Scraper compares

ApproachWhat you getTrade-off
This Actor (category pages)Up to 2000 unique products per run with price, was-price, sale flag, discount, rating and reviewsNo per-product specifications or full review texts
Product detail scrapersSpecifications, options and stock for individual product pagesOne page per product, so large categories take longer and cost more
Browser price-alert toolsA notification when one saved product changes priceNo dataset, no category coverage, no API
Writing your own scraperFull controlPagination, retries, deduplication and discount rules are yours to build and maintain

Choose this Actor when you need a whole category as structured rows, repeatedly, at a predictable price per product.

Pricing

The existing pay-per-event pricing is unchanged: run_start costs $0.001 once per run and product costs $0.0015 per delivered product, which is $1.50 per 1,000 products. Empty runs have no product charge and retain the start fee. A free-plan run delivers at most ten products. Product charges follow the number of rows actually delivered; duplicate listings are not charged twice.

FAQ

Can I use the same input as before?

Yes. The existing category_url, limit and retries fields remain supported with their original defaults. The output also keeps the original dataset fields.

Why did my run return fewer products than requested?

The category may have fewer available products, overlapping pages, or a collection interruption. The limit is an upper bound, not a promise that the category contains that many unique products. Check the summary and errors for the outcome.

Does every crossed-out price count as a discount?

No. A record qualifies only when the source marks it as a sale and its previous price exceeds the current price. Otherwise the previous-price and discount fields remain null.

Can I build a Wayfair price history with it?

Yes. Schedule the same category_url with Apify schedules and keep every dataset. Join the runs on listing_id and order them by fetched_at to see each listing's price over time.

Is there a Wayfair API for product data?

Wayfair's own developer APIs are meant for its suppliers and partners. This Actor gives you category product data through the Apify API instead: start a run with the input above and read the dataset as JSON.

Can I export or schedule these results?

Use Apify's dataset export formats and schedules. For automated comparisons, keep the listing identifier and the collection timestamp, and compare the same category input across runs.

Which Wayfair site is supported?

The US site, wayfair.com, with prices in USD.