Retail pricing and availability monitoring
Mit H&M-Endpunkten verwandelst du retail pricing and availability monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Turn H&M's own app-backend storefront data into structured retail data — keyword product search, category listing pages, and per-product detail with every color's live per-size price and stock plus real customer reviews, all as normalized JSON. Credential-free.
Search H&M products, browse category listings, and get full product detail — per-color pricing, live per-size stock, and customer reviews — as structured JSON.
Endpunkt-Familien
5
Dokumentierte Parameter
23
Beispiele
7
Live-Katalog-Snapshot
Aktive Endpunkte
7
Methoden
GET
Pflichtparameter
11
Schema-Referenzen
7
{
"platform": "H&M",
"endpoint": "hm-search",
"method": "GET",
"path": "/hm/search",
"auth": "apiKey"
}Use Cases
Search H&M products, browse category listings, and get full product detail — per-color pricing, live per-size stock, and customer reviews — as structured JSON.
Mit H&M-Endpunkten verwandelst du retail pricing and availability monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit H&M-Endpunkten verwandelst du category catalog and product research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit H&M-Endpunkten verwandelst du review and rating tracking in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Managed Execution
Jede Zahl unten stammt direkt aus dem Live-H&M-Endpunktkatalog — 7 Endpunkte, 23 dokumentierte Request-Parameter und 7 veröffentlichte Response-Schemas — demselben Katalog, gegen den auch Docs und Playground laufen.
7 documented H&M endpoints, grouped into 5 request families — Product, Search and Categories, plus 2 more.
23 request parameters are documented across those H&M endpoints, 11 of them required — the full input contract is public before you write any integration code.
7 of the 7 H&M endpoints ship a recorded example response, and 7 carry a documented response schema — you can code against the real JSON before the first request.
H&M endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
7 hosted MCP tools back the H&M endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Abdeckungskarte
/hm/product/{product_id}
/hm/search
/hm/categories
/hm/listing
/hm/stores
Endpunktkatalog
/hm/searchRuns 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.
Hinweise zur Response
- Unlike category browsing, an obscure or nonsense keyword returns a genuine empty result (`total_pages`, `total_hits`, and `products` all zero/empty) rather than a fallback or recommended set. - Pagination is real and page-based: the same `page` returns identical results on repeat requests, and different pages return different, non-overlapping products. - Requesting a `page` beyond the real last page returns a normal `200` with an empty `products` array. `total_pages` and `total_hits` stay at their real, nonzero values in that case, distinguishing it from a genuinely empty search, where both are `0`. - `search_meta.did_you_mean` and `search_meta.related_searches` are spelling-correction and related-query suggestions from H&M's own search backend -- they are commonly empty arrays. - `search_meta.blocked` reflects H&M's own content-filter flag for the query; its exact trigger conditions are not documented by H&M. - `products[].id` can carry a leading zero, so it is returned as a string, not a number. - `products[].colors[]` lists every purchasable color for that product's own search entry, each with its own image and product-page URL. - `products[].sizes[]` lists every size H&M's search result offers for the displayed color, each with its own live stock count.
MCP-Tool hm_search
/hm/listingReturns 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.
Hinweise zur Response
- Pagination is real and page-based: the same `page` returns identical results on repeat requests, and different pages return different, non-overlapping products. - Requesting a `page` beyond the category's real last page returns a normal `200` with an empty `products` array. `total_pages` and `total_hits` stay at their real, nonzero values in that case, distinguishing it from `category_id` pointing at an invalid or empty category, where both are genuinely `0`. - `products[].id` can carry a leading zero, so it is returned as a string, not a number. - `products[].colors[]` lists every purchasable color for that product's own listing entry, each with its own image and product-page URL. - `products[].sizes[]` lists every size H&M's listing offers for the displayed color, each with its own live stock count.
MCP-Tool hm_listing
/hm/product/{product_id}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.
Hinweise zur Response
- `colors` groups every purchasable color of the base product, with each color's `sizes[]` carrying its own real per-SKU price and live availability -- unlike listing/search, which only carry one representative price and a per-color stock count for the whole product. - A product that only varies by size, not color, groups under a single `colors[0]` entry with an empty `name`. - `rating` is present only when the product has at least one review; a product with none omits it entirely rather than sending a zero value. Responses can come from either of two sources depending on upstream availability; one of them never carries rating/review data, so its absence does not always mean the product genuinely has none. - `reviews[].author` is a plain display label (e.g. `"Verified Buyer"`), not a personal name -- H&M does not expose reviewer names through this data. - `reviews[].dimensions[]`, when present, is fit feedback the reviewer left alongside their review text (e.g. `{"label":"True to Size","value":"True to Size"}`) -- not every review carries this. - `availability` values are normalized from schema.org's full URL form (e.g. `https://schema.org/InStock`) down to the bare name (e.g. `InStock`, `OutOfStock`). - An unrecognized `product_id` returns `404`. A non-numeric or missing `product_id` returns `400` before any upstream request is made.
MCP-Tool hm_product
/hm/categoriesReturns 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.
Hinweise zur Response
- Each entry's `section` is the nav group it lives under (e.g. `"Clothing"`, `"Accessories"`, `"Shoes"`), and is empty for a department's own direct nav item (e.g. `"New in"`). - `category_id`, when present, is the value to pass as `hm-listing`'s own `category_id` query parameter. It is included only where separately verified against `hm-listing`'s upstream, and is omitted -- not guessed -- for every other live nav entry, since the visible category label is confirmed not to reliably derive H&M's real listing category id for every category (for example, "T-shirts & Tops" resolves to `men_tshirtstanks`, not a slug built from the label). - Nav depth genuinely differs by department: Women and Men are two levels deep (department > group > leaf), Home and Beauty are one level deep (department > leaf directly), and Kids is deeper still (department > age/gender group > age-band group > leaf). A group node that is itself a real, directly browsable page (for example Kids's "2-8 years") appears both as its own entry and as the `section` for its own children. - The navigation itself reflects H&M's live site on every request; only the `category_id` enrichment is a periodically-refreshed reference table, so a brand-new category may appear with a name and URL before its `category_id` has been separately verified. - `source_url` reflects which of two sources served the request (`https://app2.hm.com/...` or `https://www2.hm.com/...`). Both produce the same response shape.
MCP-Tool hm_categories
/hm/product/{product_id}/relatedReturns 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.
Hinweise zur Response
- Which lists are present genuinely varies by product, not a fixed set. A product with a same-series companion piece returns all four kinds seen so far -- `product-page-more_from_series`, `product-page-style_with`, `product-page-alternatives`, `product-page-upsell` -- while a product without one (for example jeans, tested live) returns only `product-page-alternatives` and `product-page-upsell`. - `lists[].products[]` uses the same product shape `hm-listing`/`hm-search` already establish (pricing, images, colors, per-size stock). - An unrecognized `product_id` returns a well-formed empty `lists` array rather than an error.
MCP-Tool hm_product_related
/hm/search/suggestionsReturns 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.
Hinweise zur Response
- With `query` given, the response carries `phrase_suggestions` (spelling-complete phrases) and `content_suggestions` (merchandised results). `trending_searches` and `popular_searches` are both empty in this mode. - With `query` omitted or empty, the response instead carries `trending_searches` and `popular_searches`. `phrase_suggestions` and `content_suggestions` are both empty in this mode. - `search_history` is part of the real upstream response but confirmed NOT session-scoped: separate cookie-free requests returned the identical list, so treat it as fixed default content, not a real per-caller search history, despite the field name. - `blocked` mirrors the same content-filter flag `hm-search`'s own `search_meta.blocked` documents; its exact trigger conditions are not documented by H&M. - `content_suggestions[]`/`popular_searches[]` entries do not all carry every field -- `link`, `deep_link`, `image_url`, and `content_type` are each populated only when H&M's own response includes them.
MCP-Tool hm_search_suggestions
/hm/storesReturns 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.
Hinweise zur Response
- Each store includes its name, phone number, full street address, and coordinates. - `lat`/`lng` in the response always reflect the coordinates actually searched -- the caller's own values when given directly, or the coordinates resolved from `search` otherwise. - A `search` value that does not resolve to any location returns a well-formed empty result (`count: 0`, `stores: []`), not an error. - A location with no stores within the radius returns a well-formed empty result, not an error.
MCP-Tool hm_stores
Verwandte APIs
Marketplaces & Retail
Separate an auction that is still open from a completed sale, and use BaT's own make and model directory to carry valid IDs into search and price-history requests.
Marketplaces & Retail
Treat Glovo as a local marketplace: discover the supported city first, then follow that city's category, store, menu, and collection identifiers through the catalog.
Marketplaces & Retail
Use PetSmart's hierarchical paths to scope product searches, then keep product SKU, price range, online availability, pickup eligibility, and store inventory as separate fields.
So scrapst du H&M
Crawlora's H&M endpoints return search, category listings, and product detail as normalized JSON with one API key — no H&M account required. A pull on 2026-10-27 for linen shirt reported 102 hits over 3 pages of 36, and a store search around Regent Street, London returned 17 stores within the default 10 km.
Send a free-text keyword to /hm/search for paginated, normalized products with pricing, images, and per-color stock.
Pass a known category slug (e.g. ladies_jeans, men_newarrivals_all) to /hm/listing for that category's product listing — H&M doesn't publish a category/nav-tree lookup call, so category_id values come from known storefront paths, not a discovery endpoint.
Pass a product_id (a listing/search result's id, or the digits in a product page's productpage.<id>.html URL) to /hm/product/{product_id} for every color's real per-size price and live availability, plus customer reviews when the product has any.
search returned total_hits 102, total_pages 3 and page_size 36, with a related-searches list and a blocked flag set to false. Check blocked before treating an empty result as no products.
stores for 51.5136, -0.1365 returned 17 stores within the default radius_meters of 10,000. The first was H&M HOME Regent Street (code GB1401, class Flagship), so store_class separates flagship and home stores from ordinary shops.
Agent Skills
Installiere einen Crawlora Agent Skill, und dein Agent ruft H&M-Daten als JSON über die dokumentierte API ab, ohne einen Scraper zu schreiben. Diese Skills decken H&M ab:
Researches H&M's catalog — storefront categories, product listings, product detail, free-text search, and nearby physical stores — using the…
npx skills add github.com/Crawlora-org/crawlora-skills --skill hm-researchResearch products, prices, sellers, and reviews across major online marketplaces and retailers, including African Jumia storefronts. Use when the…
npx skills add github.com/Crawlora-org/crawlora-skills --skill product-price-researchFAQ
Pass a known category slug to Crawlora's /hm/listing endpoint — H&M doesn't expose a category/nav-tree discovery call, so category_id values (e.g. ladies_jeans, men_newarrivals_all) are sourced from known storefront paths rather than a lookup call.
Yes — unlike category browsing, /hm/search returns a genuine empty result (zero products) for an obscure or nonsense keyword, rather than falling back to a recommended set.
Yes — /hm/product/{product_id} returns every purchasable color grouped with its own real per-size price and live availability, plus an aggregate rating and customer reviews when the product has any. /hm/listing and /hm/search only carry one representative price and a per-color stock count.
36 in the 2026-10-27 pull, which reported 102 hits for linen shirt over 3 pages.