H&M
H&M Search API
Search one H&M market's online catalog by keyword, in that market's language and currency, on 47 countries: each item with its article code, title, price, regular price, sale price, member price, discount, colours, sizes with online stock, new-arrival flag and H&M category id, up to 72 a page with the exact total, sorted by relevance, newest or price and filtered by colour, size, material, fit, product type, department, sale and one store's assortment. An article code as the query finds that article. 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, in any language. An article or product code finds that item.
Example: jeans
countrystringdefault:usThe H&M market, as a lowercase country code. This endpoint serves all 47 countries: the 40 H&M online stores of their own (us, ca, mx, gb, ie, de, at, ch, fr, be, nl, it, es, pt, se, fi, dk, no, pl, cz, sk, hu, ro, bg, gr, rs, tr, ua, il, hk, mo, tw, jp, kr, in, my, ph, sg, vn, au) plus hr, cy, ee, lv, lt, lu, si on H&M's shared English EUR store (the answer says store "eu"). Prices come back in the market's currency, never converted; every answer echoes country, language, currency, locale and store. ae, eg, id, th, br and cn (H&M runs a separate site there), al, az, ba, by, cl, co, cr, ge, is, kh, kz, mk, nz, pe, xk and za (no H&M online store), ru, and uk (send gb) answer 400, not charged.
Example: us
us— United States, USD, en (English). The default.ca— Canada, CAD, en (English) or fr (French); default en.mx— Mexico, MXN, es (Spanish).gb— United Kingdom, GBP, en (English).ie— Ireland, EUR, en (English).de— Germany, EUR, de (German).at— Austria, EUR, de (German).ch— Switzerland, CHF, de (German) or fr (French) or it (Italian); default de.fr— France, EUR, fr (French).be— Belgium, EUR, nl (Dutch) or fr (French); default nl.nl— Netherlands, EUR, nl (Dutch).it— Italy, EUR, it (Italian).es— Spain, EUR, es (Spanish).pt— Portugal, EUR, pt (Portuguese).se— Sweden, SEK, sv (Swedish).fi— Finland, EUR, fi (Finnish) or sv (Swedish); default fi.dk— Denmark, DKK, da (Danish).no— Norway, NOK, no (Norwegian).pl— Poland, PLN, pl (Polish).cz— Czechia, CZK, cs (Czech).sk— Slovakia, EUR, sk (Slovak).hu— Hungary, HUF, hu (Hungarian).ro— Romania, RON, ro (Romanian).bg— Bulgaria, EUR, bg (Bulgarian).gr— Greece, EUR, el (Greek).rs— Serbia, RSD, sr (Serbian).tr— Turkey, TRY, tr (Turkish).ua— Ukraine, UAH, uk (Ukrainian).il— Israel, ILS, he (Hebrew).hk— Hong Kong, HKD, zh (Chinese) or en (English); default zh.mo— Macau, HKD, zh (Chinese) or en (English); default zh.tw— Taiwan, TWD, zh (Chinese) or en (English); default zh.jp— Japan, JPY, ja (Japanese).kr— South Korea, KRW, ko (Korean).in— India, INR, en (English).my— Malaysia, MYR, en (English).ph— Philippines, PHP, en (English).sg— Singapore, SGD, en (English).vn— Vietnam, VND, vi (Vietnamese).au— Australia, AUD, en (English).hr— Croatia, EUR, en (English); H&M's shared English EUR store (store "eu").cy— Cyprus, EUR, en (English); H&M's shared English EUR store (store "eu").ee— Estonia, EUR, en (English); H&M's shared English EUR store (store "eu").lv— Latvia, EUR, en (English); H&M's shared English EUR store (store "eu").lt— Lithuania, EUR, en (English); H&M's shared English EUR store (store "eu").lu— Luxembourg, EUR, en (English); H&M's shared English EUR store (store "eu").si— Slovenia, EUR, en (English); H&M's shared English EUR store (store "eu").
languagestringThe answer's language, from the market's own list (the first is the default): ca en or fr; ch de, fr or it; be nl or fr; fi fi or sv; hk, mo and tw zh or en; every other market its one language (see the markets table). Titles, descriptions, colours and facet values come back in it. A language the market does not serve answers 400, not charged.
Example: fr
pageintegerdefault:1Results page, 1-based, up to 200.
Example: 2
page_sizeintegerdefault:36Items per page, 1 to 72.
Example: 72
sortenum<string>default:relevanceResult order. The same four sorts on every market.
Example: price_asc
relevance— H&M's own order. The default.newest— Newest first.price_asc— Price, low to high.price_desc— Price, high to low.
departmentenum<string>Only one department (default: every department; the answer's departments[] carries the count of each).
Example: women
women— Women (H&M's ladies_all).men— Men (men_all).kids— Kids (kids_all).baby— Baby (kids_newbornbaby_viewall).home— H&M HOME (home_all).
storestringA store code from the stores endpoint (e.g. US0760): only items in that store's assortment. This is the store's range, not per-size store stock.
Example: US0760
colorstring | string[]Colour: up to 10 values of the color facet of an earlier answer in the same market (e.g. black_000000 on us, schwarz_000000 on de); several values are ORed.
Example: black_000000
sizestring | string[]Size: values of the size facet (e.g. womenswear;NO_FORMAT[Numeric];8).
Example: womenswear;NO_FORMAT[SML];M
materialstring | string[]Material: values of the material facet, in the market's language (e.g. Cotton, Baumwolle).
Example: Cotton
fitstring | string[]Fit: values of the fit facet (e.g. Slim fit, Loose fit).
Example: Loose fit
product_typestring | string[]Product type: values of the product_type facet (e.g. Jeans).
Example: Jeans
on_salebooleanOnly marked-down items.
Example: true
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key", timeout=120)
# One article code, read in several markets: codes are the same everywhere.
for country in ["us", "gb", "de", "fr", "se", "jp"]:
r = client.hm.search(query="1372161001", country=country)["data"]
for i in r["items"]:
if i["article_code"] == "1372161001":
print(country, i["title"], i["price"], i["regular_price"], i["member_price"], r["currency"])Response