In this Article
Large home goods retailers are a favourite scraping target and a consistently underestimated one. The difficulty is not access, it is that the thing being priced is not one thing: a product page is a family of variants, each with its own price, stock and delivery reality.
This guide covers the data model that survives contact with the category, and the fields that decide whether a comparison means anything.
Key Facts
- Variants are the scale problem. One product page can carry dozens of colour, size and material combinations, each with its own price and stock.
- Shipping is part of the price in this category, and a dataset that ignores it compares the wrong numbers.
- The same item appears under different names across retailers, which makes cross-retailer matching the hardest engineering problem here.
- Availability is regional, so a national price with no delivery context describes nothing specific.
- Promotions are constant, which makes a single snapshot close to meaningless for this category.
Why does the catalogue explode?
Wayfair scraping breaks on one fact: a listing is a family, not an item. We call it the 4-layer catalogue model.
| Layer | What it holds | Trap |
|---|---|---|
| 1. Product family | The page a shopper lands on | Storing only this loses all real prices |
| 2. Variant | Colour, size, material combination | Prices and stock live here, not above |
| 3. Offer | Seller, condition, delivery option | Marketplace listings hide behind one page |
| 4. Total cost | Price plus shipping plus surcharges | The only figure a shopper actually compares |
Most datasets in this category store layer one and call it a price. That produces a number that is usually the cheapest variant, sometimes a mid variant, and never consistent between retailers. Modelling variants explicitly is the difference between a usable dataset and a plausible one.
Why does shipping change the answer?
Because furniture is bulky, and delivery can be a substantial share of the total. A sofa listed cheaper than a competitor’s can cost more delivered, and for large items the delivery option itself differs: kerbside, room of choice, assembly included.
Delivery cost also depends on the destination, which means a national price is a fiction for this category. Two customers in different regions genuinely pay different totals for the same item from the same retailer.
The practical rule: collect to a defined delivery postcode and store it with every record. Without it, a price series mixes regions and the variance you see is geography rather than pricing strategy. City and ZIP-level exits are what make that reproducible.
How do you match items across retailers?
| Signal | Use this when | Avoid when |
|---|---|---|
| Manufacturer part number | Exposed: the strongest match available | Retailer hides it, which is common by design |
| Brand plus model name | Both are present and consistent | Retailer-exclusive naming, which defeats it |
| Dimensions and materials | As a confirming signal | Used alone; many products share specifications |
| Image comparison | Text signals conflict | You need certainty; visual matching is probabilistic |
Exclusive naming is deliberate. Retailers rename products specifically so that direct comparison is hard, which means any cross-retailer dataset in this category carries a confidence level rather than a clean join. Report that confidence rather than hiding it.
What are the limits?
Terms restrict automated access on large retail sites, so scope and rate are the design decisions. A targeted collection against a defined product list is a different proposition from full-catalogue extraction.
Be gentle. Variant expansion multiplies requests quickly; one product family can mean dozens of calls. Rate limits per host matter more here than almost anywhere.
A snapshot is not a price. Promotions run constantly, so a single observation cannot support a claim about a retailer’s pricing. Sample repeatedly and report the window.
Do not collect reviews as personal data. Reviewer names and profiles are personal data and a pricing dataset does not need them. General information, not legal advice: see is web scraping legal.
Frequently Asked Questions
What makes furniture catalogues hard to scrape?
Variant explosion. One product page carries many colour, size and material combinations, each with its own price and stock, so storing the page-level price produces a number that is inconsistent between products and between retailers.
Why does shipping matter so much in this category?
Because furniture is bulky and delivery is a substantial share of the total, and the delivery option itself varies between kerbside, room of choice and assembly. A cheaper listed item can cost more delivered.
Do I need postcode-level collection?
Yes, if the data is meant to describe what a customer pays. Delivery cost and availability depend on destination, so a national price is a fiction here and a series without a postcode mixes regions.
How do you match the same product across retailers?
Manufacturer part number where exposed, brand plus model name where consistent, with dimensions and materials as confirming signals. Retailers use exclusive naming deliberately, so cross-retailer matching carries a confidence level rather than being a clean join.
Is one price observation enough?
No. Promotions in this category run constantly, so a single snapshot cannot support a claim about a retailer’s pricing. Sample repeatedly and always report the window the data covers.
Collect to a postcode, not to a country
Delivery cost and availability resolve to a destination, so a national exit gives you one arbitrary answer. DataImpulse residential supports country, city and ZIP targeting at $1 per GB across 195 countries. Create an account.
Related: price comparison use case · change monitoring · is web scraping legal.
Last updated: September 18, 2026.

State/City/Zip/ASN Targeting 



