Wayfair APIwayfair.com ↗
Search Wayfair products, fetch details by SKU or URL, retrieve daily deals, browse categories, and filter by dimensions and price via 5 endpoints.
What is the Wayfair API?
The Wayfair API covers 5 endpoints for searching the Wayfair product catalog, retrieving full product details, and browsing promotions. The get_product_details endpoint returns up to 10 fields per product — including SKU, brand, current price, original price, star rating, review count, and a full image array — using either a product SKU or a direct page URL as input. Other endpoints expose daily sale events, top-level navigation categories, and dimension-filtered product results.
curl -X GET 'https://api.parse.bot/scraper/881e95f6-2127-4669-83b7-fca30162d85e/search_products?page=1&query=desk' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace wayfair-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.wayfair_api import Wayfair, Product, ProductSummary, Deal, Category, NotFoundError
wayfair = Wayfair()
# Search for products by keyword — limit caps total items fetched
for summary in wayfair.products.search(query="standing desk", limit=5):
print(summary.name, summary.price, summary.sku)
# Drill into a single result's full details (images, specs, brand)
first = wayfair.products.search(query="bookshelf", limit=1).first()
if first:
product = first.details()
print(product.name, product.brand, product.price)
print("Specs:", product.specifications)
print("Images:", product.images[:2])
# Get product details directly by SKU
try:
detail = wayfair.products.get(sku="W009454625")
print(detail.name, detail.brand, detail.original_price)
except NotFoundError as exc:
print(f"Product not found: {exc}")
# Browse daily deals
for deal in wayfair.deals.list(limit=5):
print(deal.name, deal.url)
# List top-level categories
for category in wayfair.categories.list(limit=5):
print(category.name, category.url)
print("exercised: products.search / ProductSummary.details / products.get / deals.list / categories.list")
Search for products by keyword on Wayfair with optional pagination. Returns a list of product summaries including name, SKU, price, rating, review count, and URL. Each page returns up to ~50 products. Paginated via a page number parameter. Image URLs are not available in search results; use get_product_details for images.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword (e.g. 'sofa', 'desk', 'bookshelf') |
{
"type": "object",
"fields": {
"count": "integer total number of products returned on the page",
"products": "array of product summary objects with name, sku, url, price, rating, review_count, image_url"
},
"sample": {
"data": {
"count": 50,
"products": [
{
"sku": "W112032887",
"url": "https://www.wayfair.com/furniture/pdp/inbox-zero-momoyo-adjustable-height-desk-with-drawers-w112032887.html",
"name": "Electric Standing Desk with Large Monitor Shelf & Drawers | Height-Adjustable Ergonomic Desk for Home or Office",
"price": "$149.99",
"rating": "4.54",
"image_url": null,
"review_count": "232"
}
]
},
"status": "success"
}
}About the Wayfair API
Search and Product Data
The search_products endpoint accepts a query string (e.g. 'sofa', 'bookshelf') and an optional page integer for pagination. Each page returns up to 60 product summaries with name, sku, url, price, rating, review_count, and image_url. The get_product_details endpoint accepts either a sku or a full url and returns a richer record: brand, description, images array, original_price (null when no discount exists), currency (always USD), and specifications.
Deals and Categories
get_daily_deals requires no input parameters and returns the current set of named sale events from Wayfair's daily-sales page, each with a name, url, and image_url. The result set changes as promotions rotate. get_categories similarly requires no input and returns the top-level navigation departments — Furniture, Outdoor, Bedding & Bath, Rugs, Lighting, and others — as name/url pairs.
Dimension Filtering
filter_products_by_dimensions lets you constrain results by physical size and price before they reach your application. It accepts query, width_max, height_max, depth_max, and price_max (all optional, in inches and USD). It fetches detail pages for the first 10 search results and returns only those whose specifications fall within your maximums, including full name, sku, brand, price, and images fields on each match.
The Wayfair API is a managed, monitored endpoint for wayfair.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wayfair.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wayfair.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a furniture comparison tool that pulls
price,original_price, andratingfromget_product_detailsfor a set of SKUs. - Monitor daily promotions by polling
get_daily_dealsand alerting when specific category sale events appear. - Filter sofas or desks to a room's exact footprint using
filter_products_by_dimensionswithwidth_max,depth_max, andheight_max. - Populate a category browse page by fetching department names and URLs from
get_categories. - Track price changes on specific products over time by periodically calling
get_product_detailswith a fixed SKU. - Aggregate review counts and star ratings across a product segment using
search_productswith pagination. - Cross-reference Wayfair SKUs with other retailer data by extracting
skuandbrandfields from search results.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Wayfair have an official developer API?+
What does `get_product_details` return that `search_products` does not?+
search_products returns summary-level fields: name, sku, url, price, rating, review_count, and image_url. get_product_details adds brand, description, a full images array, original_price (the pre-discount price, or null), currency, and specifications — the structured dimension data that filter_products_by_dimensions also uses.How does pagination work for `search_products`?+
page parameter is an integer starting at 1. Each page returns up to 60 product summaries. The response includes a count field reflecting how many products were returned on that specific page. There is no total-results-count or total-pages field in the response, so you continue paginating until a page returns fewer than 60 results.Does the API return individual customer reviews or just aggregate ratings?+
rating (a star score out of 5) and review_count (total number of reviews), both as strings. Individual review text, reviewer names, and per-review dates are not exposed. You can fork this API on Parse and revise it to add an endpoint that fetches per-review content for a given SKU.