Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the H&M API page →
E-commerce & Marketplaces

H&M API

The H&M API turns hm.com into clean JSON in five actions: search, product/detail, category, search/suggest and product/availability.

5 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Pick the market with country - 41 are covered, from the United States, the UK and Germany to Türkiye, Japan, India and Australia - and, where H&M runs several languages, language (Canada en/fr, Switzerland de/fr/it, Belgium nl/fr, Finland fi/sv, Hong Kong en/zh); prices come back in that market's currency. H&M shows three different prices and the API keeps them apart: price is what any shopper pays today, regular_price is the price before a sale and is only set when a sale price is running, and member_price is the H&M member price, which is never used as price. A French pair of jeans read on 2026-09-15 returned price 27.99 EUR and member_price 15.99 EUR; a US dress returned price 11.99, regular_price 27.99, a 57% discount and H&M's own note "Sale price in effect for 90+ days". Each colour of a product is its own article with its own prices: product/detail lists every colour with its price, sale and member price and which sizes are in stock or down to a few pieces. The record also carries the description, composition per garment part, preferred materials, care instructions, the category breadcrumb, images, and the rating and review count with the sample of reviews H&M publishes. Verification on 2026-09-15: 120 of 120 searches and 75 of 75 product reads succeeded across all 41 markets, and on 6 of 6 products name, price, member price, rating and in-stock sizes matched H&M's own published product data. No H&M account needed - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

H&M shows up to three prices - the API tells you which is which

A sale price every shopper gets, a regular price, and a lower price only H&M members get. Taking the lowest number would quote a member-only price as the shelf price. Values measured on 2026-09-15.

H&M articlepriceregular_pricemember_priceWhat H&M shows
Baggy Regular Waist Jeans, washed denim blue (France)27.99 EURnull15.99 EURMember price 15.99 - non-members pay 27.99
Baggy Regular Waist Jeans, light beige (France)19.99 EUR27.99 EURnullSale price for every shopper
Lace-Trimmed Jersey Dress, black (US)11.99 USD27.99 USDnullSale -57%, "Sale price in effect for 90+ days"
Long-sleeved tulle-skirt dress (UK)9.99 GBPnullnullRegular price, no promotion

The two jeans rows are colours of the same product: product/detail returned 10 colours, 2 on sale at 19.99 EUR, 4 with a member price (15.99 or 19.99 EUR) and 4 at the regular 27.99 EUR.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/hm/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "dress"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "hm",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 983.9,
    "record_count": 36,
    "bytes": 151903,
    "cache_hit": false,
    "country": "us",
    "requests": 1,
    "pagination": {
      "page": 1,
      "page_size": 36,
      "has_more": true,
      "total": 1993
    }
  },
  "data": {
    "results": [
      {
        "article_code": "1299218008",
        "product_code": "1299218",
        "name": "[redacted-name]",
        "brand": "H&M",
        "url": "https://www2.hm.com/en_us/productpage.1299218008.html",
        "image": "https://image.hm.com/assets/hm/11/2c/112cdce2873f60f26124d64e9adff63295fb4011.jpg",
        "model_image": "https://image.hm.com/assets/hm/de/6d/de6dd6dc6f1d9336fa20710f1b6adbed92fb2b94.jpg",
        "images": [
          "https://image.hm.com/assets/hm/08/aa/08aabae79696057d372305b76f27cfa508f66eb4.jpg",
          "https://image.hm.com/assets/hm/0e/c9/0ec9ed9f43a37a7e9fb6db5143ccb6606609efce.jpg",
          "https://image.hm.com/assets/hm/61/f5/61f5e86daf53fb54ccb7e521bc272a77bbc1a3a6.jpg"
        ],
        "price": 49.99,
        "regular_price": null,
        "on_sale": false,
        "discount_percent": null,
        "member_price": null,
        "price_formatted": "$49.99",
        "price_range": null,
        "currency": "USD",
        "color_name": "Taupe",
        "color_hex": "#968475",
        "color_shades": [
          "Ecru",
          "Stone"
        ],
        "colors": [
          {
            "article_code": "[trimmed-depth]",
            "color_name": "[trimmed-depth]",
            "hex": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "image": "[trimmed-depth]"
          }
        ],
        "color_count": 1,
        "sizes": [
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          }
        ],
        "sizes_in_stock": 5,
        "availability": "Available",
        "coming_soon": false,
        "online": true,
        "pre_shopping": false,
        "new_arrival": true,
        "multipack": false,
        "external_brand": false,
        "markers": [],
        "main_category": "ladies_dresses_knitted",
        "has_video": false
      },
      {
        "article_code": "1353669001",
        "product_code": "1353669",
        "name": "Corduroy Dress with Peter Pan Collar",
        "brand": "H&M",
        "url": "https://www2.hm.com/en_us/productpage.1353669001.html",
        "image": "https://image.hm.com/assets/hm/f2/2e/f22e259609b626ae702004bca052befec3d77c80.jpg",
        "model_image": "https://image.hm.com/assets/hm/65/d1/65d1d0ffd05528840fb9431aefdde2ea3d6edc24.jpg",
        "images": [
          "https://image.hm.com/assets/hm/98/5e/985e859fe627d13b464458257c7c16fd944f747c.jpg",
          "https://image.hm.com/assets/hm/e4/a3/e4a3090720b015154adabd150cadd8664fefff89.jpg",
          "https://image.hm.com/assets/hm/62/65/6265b919e8d20c281e3195bac942d44fcb2a8882.jpg"
        ],
        "price": 29.99,
        "regular_price": null,
        "on_sale": false,
        "discount_percent": null,
        "member_price": null,
        "price_formatted": "$29.99",
        "price_range": null,
        "currency": "USD",
        "color_name": "Pale turquoise/floral",
        "color_hex": "#8E9A9B",
        "color_shades": [],
        "colors": [
          {
            "article_code": "[trimmed-depth]",
            "color_name": "[trimmed-depth]",
            "hex": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "image": "[trimmed-depth]"
          },
          {
            "article_code": "[trimmed-depth]",
            "color_name": "[trimmed-depth]",
            "hex": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "image": "[trimmed-depth]"
          }
        ],
        "color_count": 2,
        "sizes": [
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          }
        ],
        "sizes_in_stock": 8,
        "availability": "Available",
        "coming_soon": false,
        "online": true,
        "pre_shopping": false,
        "new_arrival": true,
        "multipack": false,
        "external_brand": false,
        "markers": [],
        "main_category": "kids_girls_clothing_dresses_collared",
        "has_video": false
      },
      {
        "article_code": "1356573002",
        "product_code": "1356573",
        "name": "[redacted-name]",
        "brand": "H&M",
        "url": "https://www2.hm.com/en_us/productpage.1356573002.html",
        "image": "https://image.hm.com/assets/hm/be/22/be22202ef134fb070ed57f193a0457f67c9aadfd.jpg",
        "model_image": "https://image.hm.com/assets/hm/0f/72/0f727c46982cb25224f35d54ef0ed3bfe02b6271.jpg",
        "images": [
          "https://image.hm.com/assets/hm/57/aa/57aad90dd66fbb68396c83581a45cf9e8865aaba.jpg",
          "https://image.hm.com/assets/hm/7b/9e/7b9ea90c9cd843dfb1efb279140fec83b5d47e2a.jpg"
        ],
        "price": 11.99,
        "regular_price": 27.99,
        "on_sale": true,
        "discount_percent": 57,
        "member_price": null,
        "price_formatted": "$11.99",
        "price_range": null,
        "currency": "USD",
        "color_name": "Black",
        "color_hex": "#272627",
        "color_shades": [
          "Charcoal"
        ],
        "colors": [
          {
            "article_code": "[trimmed-depth]",
            "color_name": "[trimmed-depth]",
            "hex": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "image": "[trimmed-depth]"
          },
          {
            "article_code": "[trimmed-depth]",
            "color_name": "[trimmed-depth]",
            "hex": "[trimmed-depth]",
            "url": "[trimmed-depth]",
            "image": "[trimmed-depth]"
          }
        ],
        "color_count": 2,
        "sizes": [
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          },
          {
            "size_code": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "in_stock": "[trimmed-depth]"
          }
        ],
        "sizes_in_stock": 4,
        "availability": "Available",
        "coming_soon": false,
        "online": true,
        "pre_shopping": false,
        "new_arrival": false,
        "multipack": false,
        "external_brand": false,
        "markers": [],
        "main_category": "ladies_occasion_partywear_dresses",
        "has_video": false
      }
    ],
    "count": 36,
    "page": 1,
    "page_size": 36,
    "total_results": 1993,
    "total_pages": 56,
    "has_more": true,
    "page_out_of_range": null,
    "filters_available": {
      "departments": [
        {
          "id": "all",
          "label": "All",
          "count": 1993
        },
        {
          "id": "ladies_all",
          "label": "Women",
          "count": 1561
        },
        {
          "id": "kids_newbornbaby_viewall",
          "label": "Baby",
          "count": 111
        }
      ],
      "colors": [
        {
          "id": "beige_f5f5dc",
          "count": 211
        },
        {
          "id": "black_000000",
          "count": 322
        },
        {
          "id": "blue_0000ff",
          "count": 256
        }
      ],
      "materials": [
        {
          "id": "Alpaca",
          "count": 1
        },
        {
          "id": "Bouclé",
          "count": 12
        },
        {
          "id": "Chiffon",
          "count": 62
        }
      ],
      "sale": {
        "false": 1573,
        "true": 420
      },
      "price_range": {
        "min": 2.49,
        "max": 269
      }
    },
    "query": "dress",
    "matched_query": null,
    "did_you_mean": [],
    "related_searches": [],
    "query_blocked": null,
    "sort_applied": "relevance",
    "filters_applied": null,
    "country": "us",
    "language": "en",
    "locale": "en_us",
    "currency": "USD"
  }
}
Actions

What the H&M API does

ActionDescriptionConcrete use caseKey params
searchSearch H&M in any of its 41 markets by keyword. Each product comes with the price a shopper pays, the regular price when a sale price is running, the H&M member price kept separate, currency, every colour, sizes with in-stock flags, markers and availability. Sort by newest or price; filter by department, sale, colour or material. Misspellings H&M corrects are reported in matched_query.Pricing teams call search to search H&M in any of its 41 markets by keyword.query, country, language, page, page_size, ...
product/detailThe full H&M article by article code, product code or URL: name, brand, category and breadcrumb, description and details, the price with the regular price and discount on sale, the member price apart, H&M's legal price note, currency, colour, images, every size with in-stock and few-left flags, composition per garment part, preferred materials, recycled share, country of production, care instructions, model height and size worn, rating and review count with the page's review sample, and every other colour of the product with its own prices and sizes.Marketplace operators call product/detail to get the full H&M article by article code, product code or URL.article_code, country, language, max_rotations
categoryEvery product on one H&M category page (a department, a product type, a sale page), paged and sorted, with the same rows as search. Pass the category URL or path, or the category_id + page_id a previous call returned.Catalog enrichment teams call category to get every product on one H&M category page (a department, a product type, a sale page), paged and….category, category_id, page_id, country, language, ...
search/suggestH&M's search-box suggestions for what a shopper has typed: suggested searches and linked content pages, in the market's language.Retail analysts call search/suggest to get h&M's search-box suggestions for what a shopper has typed.query, country, language, max_rotations
product/availabilityLive size availability for every colour of one H&M product in one market: which sizes can be ordered and which H&M flags as few pieces left. One small call — for stock monitoring.Pricing teams call product/availability to get live size availability for every colour of one H&M product in one market.article_code, country, language, max_rotations
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/hm/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"dress"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.hm.search with {"query":"dress"}.
Use cases

Who uses this API and why

  • Price trackers follow H&M sale and member prices per colour across 41 markets and currencies.
  • Fashion analytics teams compare the same article's price between markets, from USD to TRY and JPY.
  • Resale and sustainability apps read composition, preferred materials, care instructions and country of production.
  • Stock alerts watch which sizes of a colour are back in stock or down to a few pieces.
FAQ

Questions developers ask before integrating

Which price does a shopper without an H&M membership pay?

price. It is the sale price when one is running, otherwise the regular price. member_price is the H&M member price and is only filled where H&M shows one; it is never copied into price. On 2026-09-15 a French search for jean returned 15 rows with a member price among 36, and not one of them had the member price as price.

Article code or product code - which do I pass?

Either, or the hm.com URL. The 10-digit number in an H&M link (1323075003) is one colour of a product; its first 7 digits (1323075) are the product. A product code returns the product's default colour, and variants lists every colour with its own article code, prices and sizes.

Which markets and languages are covered?

41 H&M markets, each with its own prices and currency: the United States, Canada, Mexico, the UK, Ireland, Germany, Austria, Switzerland, France, Belgium, the Netherlands, Spain, Portugal, Italy, Greece, Sweden, Norway, Denmark, Finland, Poland, Czechia, Slovakia, Hungary, Romania, Bulgaria, Serbia, Ukraine, Türkiye, Israel, India, Japan, South Korea, Hong Kong, Singapore, Malaysia, the Philippines, Vietnam, Australia, H&M's asia1 (HKD) and asia3 (TWD) sites and H&M's English Europe site. A search and a product read succeeded in every one of them on 2026-09-15, and the currency matched the market 41 of 41 times.

How do I know which sizes are available?

Every size carries in_stock, and product/detail adds few_left where H&M shows "few pieces left". product/availability returns the same for every colour of a product in one small call: for the French jeans that was 8 colours, 72 sizes in stock and 3 flagged few left. Quantities are not published.

Do the filters and sorts really apply?

Yes. dress in the US on 2026-09-15: 2,001 results; sale_only returned 428, every row on sale; department ladies_all returned 1,562; color black_000000 returned 322; shirt with material Linen returned 127 of 1,461. price_asc and price_desc come back in price order and newest reorders the list. The department, colour and material ids to pass come back in filters_available.

What happens with a misspelling or a search with no match?

H&M corrects common misspellings and the API says so: jaket returned jacket results with matched_query jacket, sweatr returned sweater. A keyword with no match returns an empty result - 8 of 8 nonsense keywords came back empty and 0 of 23 real keywords in seven languages were emptied.

What does H&M NOT publish here?

No GTIN or EAN (H&M's own size codes are returned instead), no stock quantities, no per-store stock and no full review list - only the sample of up to 10 reviews on the product page. Care instructions were present on 12 of 24 sampled products, country of production only where H&M publishes it (the French pages in the sample), and model height on few products.

What is the H&M API?

H&M API is a ReefAPI endpoint group for h&m prices in 41 markets with the sale price, the member price and every colour's sizes in stock kept apart. It returns live JSON through POST requests under /hm/v1.

Is the H&M API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. H&M calls use the same shared credit balance as every other ReefAPI engine.

Do I need a H&M login or account?

No login to H&M is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the H&M data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the H&M API use?

H&M actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call H&M from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call hm actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the H&M API a H&M scraper?

It is the managed alternative to a DIY H&M scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same h&m prices in 41 markets with the sale price, the member price and every colour's sizes in stock kept apart back as clean JSON.

docs / hm

H&M

H&M prices in 41 markets with the sale price, the member price and every colour's sizes in stock kept apart.

base /hm/v15 endpoints
post/hm/v1/product/detail2 credits

The full H&M article by article code, product code or URL: name, brand, category and breadcrumb, description and details, the price with the regular price and discount on sale, the member price apart, H&M's legal price note, currency, colour, images, every size with in-stock and few-left flags, composition per garment part, preferred materials, recycled share, country of production, care instructions, model height and size worn, rating and review count with the page's review sample, and every other colour of the product with its own prices and sizes.

ParameterAllowed / rangeDescription
article_coderequiredAn H&M article code (10 digits = product + colour, as in a product URL), a 7-digit product code (resolved to its default colour) or an hm.com product URL.
country = usoptionalus · ca · mx · gb · ie · de · at · ch · fr · be · nl · es · pt · it · gr · se · no · dk · fi · pl · cz · sk · hu · ro · bg · rs · ua · tr · il · in · jp · kr · hk · asia1 · asia3 · sg · my · ph · vn · au · eurThe H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.
languageoptionalbg · cs · da · de · el · en · es · fi · fr · he · hu · it · ja · ko · nl · no · pl · pt · ro · sk · sr · sv · tr · uk · vi · zhOnly for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.
max_rotations = 3optional1–6Attempts per upstream request before giving up (each on a fresh exit).
Try in playground →
post/hm/v1/category2 credits

Every product on one H&M category page (a department, a product type, a sale page), paged and sorted, with the same rows as search. Pass the category URL or path, or the category_id + page_id a previous call returned.

ParameterAllowed / rangeDescription
categoryoptionalAn H&M category page: its URL or its path (/ladies/shop-by-product/dresses.html). `breadcrumb` on any product lists them.
category_idoptionalWith page_id: the listing ids a previous category call returned (skips reading the category page).
page_idoptionalWith category_id: the listing ids a previous category call returned.
country = usoptionalus · ca · mx · gb · ie · de · at · ch · fr · be · nl · es · pt · it · gr · se · no · dk · fi · pl · cz · sk · hu · ro · bg · rs · ua · tr · il · in · jp · kr · hk · asia1 · asia3 · sg · my · ph · vn · au · eurThe H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.
languageoptionalbg · cs · da · de · el · en · es · fi · fr · he · hu · it · ja · ko · nl · no · pl · pt · ro · sk · sr · sv · tr · uk · vi · zhOnly for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.
page = 1optional1–500Result page, from 1.
page_size = 36optional1–72Products per page (H&M's own page shows 36; the service allows up to 72).
sort = relevanceoptionalrelevance · newest · price_asc · price_descH&M's own sort orders.
max_rotations = 3optional1–6Attempts per upstream request before giving up (each on a fresh exit).
Try in playground →
post/hm/v1/search/suggest1 credit

H&M's search-box suggestions for what a shopper has typed: suggested searches and linked content pages, in the market's language.

ParameterAllowed / rangeDescription
queryrequiredWhat a shopper has typed so far.
country = usoptionalus · ca · mx · gb · ie · de · at · ch · fr · be · nl · es · pt · it · gr · se · no · dk · fi · pl · cz · sk · hu · ro · bg · rs · ua · tr · il · in · jp · kr · hk · asia1 · asia3 · sg · my · ph · vn · au · eurThe H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.
languageoptionalbg · cs · da · de · el · en · es · fi · fr · he · hu · it · ja · ko · nl · no · pl · pt · ro · sk · sr · sv · tr · uk · vi · zhOnly for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.
max_rotations = 3optional1–6Attempts per upstream request before giving up (each on a fresh exit).
Try in playground →
post/hm/v1/product/availability1 credit

Live size availability for every colour of one H&M product in one market: which sizes can be ordered and which H&M flags as few pieces left. One small call — for stock monitoring.

ParameterAllowed / rangeDescription
article_coderequiredAn H&M article code (10 digits = product + colour, as in a product URL), a 7-digit product code (resolved to its default colour) or an hm.com product URL.
country = usoptionalus · ca · mx · gb · ie · de · at · ch · fr · be · nl · es · pt · it · gr · se · no · dk · fi · pl · cz · sk · hu · ro · bg · rs · ua · tr · il · in · jp · kr · hk · asia1 · asia3 · sg · my · ph · vn · au · eurThe H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.
languageoptionalbg · cs · da · de · el · en · es · fi · fr · he · hu · it · ja · ko · nl · no · pl · pt · ro · sk · sr · sv · tr · uk · vi · zhOnly for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.
max_rotations = 3optional1–6Attempts per upstream request before giving up (each on a fresh exit).
Try in playground →