GET/hm/categoriesapiKey5 credits/request
Returns H&M's own storefront category navigation, department by department: every direct nav item and subcategory currently shown in the site's own menu, with its display name and storefront URL. Where this build has separately verified the value against hm-listing's own category_id parameter, that id is included too; category_id is omitted for entries not yet verified rather than guessed, since the visible category label is confirmed NOT a reliable way to derive H&M's real listing category ids for every category. department, when given, filters the result to one department.
Optional: department (5 allowed values: women, men, kids, home, beauty).
Open in Playground
GET/hm/listingapiKey3 credits/request
Returns one H&M category's product listing page: products with pricing, images, colors, and per-size stock. category_id is an H&M category slug (e.g. ladies_newarrivals_all, men_newarrivals_all, ladies_jeans) -- there is no category/nav-tree discovery endpoint, so category_id values come from known H&M storefront paths rather than a lookup call. Pagination is page-based and real: requesting a page beyond the category's real last page returns a normal response with an empty products array rather than an error.
Required: category_id. Optional: page, page_size, sort (4 allowed values: RELEVANCE, NEWEST_FIRST, PRICE_ASCENDING, PRICE_DESCENDING), is_new.
Sampled 14 Oct 2026: 36 items. Filled in every item: id, name, brand, url, image_url, model_image_url, price, formatted_price and 5 more. Not in every item: new_arrival (5). In the sample: price: 19.99 to 43.99, median 27.99; name: “Harper High Rise Wide Leg Jeans” and 15 other values; url: www2.hm.com; new_arrival: true in 5 of 5; colors: median 5 entries; image_url: image.hm.com; model_image_url: image.hm.com; formatted_price: “$27.99” and 13 other values.
Open in Playground
GET/hm/product/{product_id}apiKey5 credits/request
Returns one H&M product's full detail: every purchasable color grouped with its own per-size price and live availability, plus an aggregate rating and real customer reviews (author label, date, body, rating, and any fit-feedback tags the reviewer left, such as "True to Size") when the product has any. This data is not available from hm-listing or hm-search, which only carry one representative price and a per-color stock count. product_id is the numeric id from a listing/search result's id field or its url field's productpage.<id>.html segment. An unrecognized product_id returns 404.
Required: product_id.
Open in Playground
GET/hm/product/{product_id}/relatedapiKey3 credits/request
Returns every product-detail recommendation list H&M's own app shows for one product (which lists are present genuinely varies by product -- for example "more from series" and "style with" appear only when the product has one, while "alternatives" and "upsell" are more consistently present). An unrecognized product_id returns a well-formed empty result rather than an error.
Required: product_id.
Sampled 14 Oct 2026: 2 items. Filled in every item: label, products. In the sample: label: “product-page-alternatives” and 1 other value; products: median 12 entries.
Open in Playground
GET/hm/searchapiKey3 credits/request
Runs a free-text keyword search on H&M and returns products with pricing, images, colors, and per-size stock, plus search-quality metadata (a spelling-correction suggestion, related searches, and a content-filter flag). Unlike category browsing, an obscure or nonsense keyword returns a genuine empty result (zero products) rather than a fallback set. Pagination is page-based and real: requesting a page beyond the real last page returns a normal response with an empty products array rather than an error.
Required: query. Optional: page, page_size.
Sampled 14 Oct 2026: 36 items. Filled in every item: id, name, brand, url, image_url, model_image_url, price, formatted_price and 5 more. In the sample: price: 11.99 to 40.99, median 30.99; name: “Harper High Rise Wide Leg Jeans” and 12 other values; url: www2.hm.com; colors: median 3 entries; image_url: image.hm.com; model_image_url: image.hm.com; formatted_price: “$27.99” and 10 other values; sizes: median 12 entries.
Open in Playground
GET/hm/search/suggestionsapiKey3 credits/request
Returns H&M's own search-box typeahead suggestions. When query is given, returns spelling-complete phrase suggestions and merchandised content results. When query is omitted or empty, instead returns trending searches and popular-search shortcuts (phrase/content suggestions are both empty in that mode). search_history is not session-scoped -- it returns the identical list for every request, so treat it as fixed default content rather than a real per-caller history.
Optional: query.
Open in Playground
GET/hm/storesapiKey3 credits/request
Returns H&M physical retail store locations near a point: name, phone, full address, and coordinates. Either search, or both lat and lng, is required. search is a free-text zip code or place name that is first resolved to coordinates; if it does not resolve to any location, a well-formed empty result is returned rather than an error. lat and lng, when given directly, skip that resolution step. radius_meters is optional (1000 to 50000, defaults to 10000). A location with no stores within the radius returns a well-formed empty result rather than an error.
Optional: search, lat, lng, radius_meters.
Sampled 14 Oct 2026: 2 items. Filled in every item: store_code, store_class, name, address, city, state, postal_code, country and 2 more. Not in every item: phone (1). In the sample: store_class: “Red”; name: “Roosevelt Collection” and 1 other value; city: “Chicago”; state: “Illinois”; country: “USA”.
Open in Playground