Wayfair
Wayfair Search API
Search Wayfair products by keyword on wayfair.com, wayfair.ca (English or French), wayfair.co.uk and wayfair.ie, or on Wayfair's US banner sites AllModern, Birch Lane, Joss & Main and Perigold. Sort by price per item or customer rating and filter by sale, closeout, open box, new arrivals, in stock, brand id, minimum rating, price range or any facet. Each product has its SKU, brand, price, sale price, was price (the strikethrough), price label, badge, rating, review count, stock text, open-box price and option counts. Keyword pages return 30 results; a keyword Wayfair maps to a category answers that category's 48 per page and says so in redirected_to. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonquerystringrequiredSearch keywords, 1-200 characters. A SKU opens that product instead: the answer has no items and redirected_to { type: product, sku, url }.
Example: office chair
countrystringdefault:usThe Wayfair market: us (wayfair.com), ca (wayfair.ca), gb (wayfair.co.uk) or ie (wayfair.ie). Prices come back in the market's currency, never converted; the answer echoes country, language, site and currency. Wayfair no longer sells in Germany or Austria, so de and at answer 400, like any other code, before anything is charged.
Example: us
us— wayfair.com, USD, English. The default.ca— wayfair.ca, CAD, English or French (language).gb— wayfair.co.uk, GBP, English. uk is accepted too.ie— wayfair.ie, EUR, English.
languageenum<string>ca only: en (the default) or fr for wayfair.ca in French (French names, labels such as Solde, and dates). Every other market and banner site is English; fr there answers 400.
Example: fr
en— English. The default everywhere.fr— French, on country ca only.
siteenum<string>default:wayfairWayfair's US banner sites on the same catalogue platform: allmodern, birchlane, jossandmain or perigold (USD, English, country us only; with ca, gb or ie they answer 400). Default wayfair, the market's own site.
Example: perigold
wayfair— The market's own Wayfair site. The default.allmodern— AllModern (allmodern.com), US, USD.birchlane— Birch Lane (birchlane.com), US, USD.jossandmain— Joss & Main (jossandmain.com), US, USD.perigold— Perigold (perigold.com), US, USD.
pageintegerdefault:1Results page, 1-based, up to 1000. A page past the last returns no items and a note (Wayfair itself would serve page 1 again).
Example: 2
sortenum<string>default:recommendedResult order. Price sorts follow Wayfair's price per item, so a set is placed by its per_item_price, not its shown price.
Example: price_asc
recommended— Wayfair's own order. The default.price_asc— Price per item, low to high.price_desc— Price per item, high to low.rating— Customer rating, best first.
on_salebooleanOnly products on sale.
Example: true
closeoutbooleanOnly closeout products.
Example: true
open_boxbooleanOnly products with an open-box offer (open_box_price).
Example: true
new_arrivalsbooleanOnly new arrivals.
Example: true
in_stockbooleanOnly products in stock.
Example: true
brandinteger | string | array1 to 5 Wayfair brand ids (not names): items[].brand.id or a Brand facet option id, e.g. 44308 = Ebern Designs.
Example: 44308
min_ratingintegerCustomer rating: 5 = five stars only, 4 or 3 = that many stars and up, 1 = every reviewed product.
Example: 4
5— Five stars only.4— 4 stars and up.3— 3 stars and up.1— Every reviewed product.
price_minnumberLowest price, in the market's currency.
Example: 100
price_maxnumberHighest price, in the market's currency.
Example: 400
filtersobjectAny facet of an answer, keyed by facets[].id with facets[].options[].id values; ranges as "min~max". At most 12 filter values per call.
Example: {"2471": ["274623"]}
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key", timeout=120)
# Office chairs on sale at wayfair.com, cheapest per item first.
r = client.wayfair.search(query="office chair", on_sale=True, sort="price_asc")["data"]
print(r["total"], "results (approximate),", r["currency"])
for i in r["items"]:
print(i["sku"], i["name"], i["price"], "was", i["was_price"], i["price_label"], i["badge"])Response