H&M API
H&M product data as structured JSON: one article's price, regular price, sale price and member price in each H&M market, in that market's currency, with online stock by size. Plus search, full product pages with the latest reviews, category, sale and new-arrival grids, stores and where an article is made.
50 free credits on signup. No card.
{ "data": { "query": "jeans", "items": [ { "article_code": "1359271004", "product_code": "1359271", "title": "Barrel-Leg High-Waist Jeans", "brand": "H&M", "url": "https://www2.hm.com/en_us/productpage.1359271004.html", "price": 49.99, "regular_price": 49.99, "sale_price": null, "member_price": 39.99, "discount_percent": null, "prior_price": null, "currency": "USD", "promo_text": null, "promo_terms": null, "multipack": null, "color": "Cream", "colors": [ { "article_code": "1359271004", "name": "Cream", "hex": "#F0EEED" }, "… 2 more (trimmed for preview)" ], "sizes": [ { "size_code": "1359271004002", "label": "2", "in_stock": true }, "… 8 more (trimmed for preview)" ], "in_stock": true, "coming_soon": false, "new_arrival": false, "markers": [], "category": "ladies_jeans_barrel", "image": "https://image.hm.com/assets/hm/53/50/53504aa4e9919677e29bf2fc087a5380395c99ce.jpg", "model_image": "https://image.hm.com/assets/hm/28/64/28646d84584153bd69183167a2cb3989ba42b455.jpg" }, "… 35 more (trimmed for preview)" ], "count": 36, "total": 1329, "page": 1, "page_size": 36, "total_pages": 37, "sort": "relevance", "sorts_offered": [ "relevance", "… 3 more (trimmed for preview)" ], "filters": {}, "facets": [ { "filter": "color", "name": "ColorWithNames", "values": [ { "value": "beige_f5f5dc", "label": "beige", "count": 31, "hex": "#F5F5DC" }, "… 13 more (trimmed for preview)" ] }, "… 4 more (trimmed for preview)" ], "on_sale_count": 60, "price_range": { "min": 9.99, "max": 269 }, "department": null, "store_code": null, "departments": [ { "department": "women", "id": "ladies_all", "label": "Women", "count": 720 }, "… 5 more (trimmed for preview)" ], "did_you_mean": [], "related_searches": [], "country": "us", "language": "en", "currency": "USD", "locale": "en_us", "store": "us", "notes": [ "member_price is H&M's member (club) price, shown to signed-in H&M members; price is what a non-member pays now (sale_price when on sale, else regular_price).", "… 1 more (trimmed for preview)" ] }, "response_time": 3560}Live calls against the real endpoints. Product shows a captured response (it takes 4 to 60 seconds); every other tab runs live. 3 free runs across every tab, then it's your own key.
What is the Scavio H&M API?
The Scavio H&M API is a REST API that returns H&M prices, products, online stock, sales, new arrivals, stores and production details as JSON for 47 countries. One article code is the same in every market, so one code read with several country values returns its price, sale price and member price in each currency. Product costs 2 credits; every other call costs 1.
- 9
- endpoints, all live in production
- 47
- countries: 40 H&M online stores plus 7 on H&M's shared EU store
- 1
- credit per call; product 2
The H&M data price trackers and fashion analysts need
What an article costs in each market, whether members pay less, which sizes are in stock online, what is on sale and what just arrived.
One article, every market
POST /api/v1/hm/searchArticle codes are global. The Bow-detail blazer dress 1372161001 on 2026-11-15: 79.99 USD, 64.99 GBP, 69.99 EUR in Germany, 59.99 EUR in France, 799 SEK, 8,999 JPY.
Member price next to the shelf price
POST /api/v1/hm/searchmember_price is H&M's member price as displayed, next to price, regular_price and sale_price. The same dress read 79.99 USD with a 63.99 member price in the US.
Online stock by size
POST /api/v1/hm/stockin_stock and few_left for every size of every colour of a product, in the market you ask for. Online stock, in that market's own sizes.
Sale grids per market
POST /api/v1/hm/dealsEvery marked-down item in a department with sale_price, regular_price and discount_percent. Each market runs its own sales, so a grid may be empty between sales.
Full product pages
POST /api/v1/hm/productComposition, care, fit and length, every colourway with its own prices, H&M's price disclosure, the rating and the 10 latest reviews with fit feedback.
Category ids shared by every market
POST /api/v1/hm/categoryladies_dresses is ladies_dresses in every country. The UK grid held 3,440 dresses, 717 of them on sale, on 2026-11-15.
Stores with hours
POST /api/v1/hm/storesAddress, coordinates, phone, weekly hours and departments, by city, postal code or radius. The US list counted 478 stores.
Where it is made
POST /api/v1/hm/productionCountries of production with supplier and factory names and city, as H&M publishes them for each article.
All 9 H&M API endpoints
Every route is a POST, returns JSON and takes the same API key. Credits are charged per successful call and per not-found; a 400 and failed upstream calls are not charged.
| Endpoint | Returns | Credits |
|---|---|---|
Search/api/v1/hm/search | Keyword or article-code search in one market: article code, title, price, regular, sale and member price, colours, sizes with online stock, category id; 72 a page, sorts and facet filters | 1 |
Product/api/v1/hm/product | One article by code or link: composition, care, fit attributes, every colour's prices, member price, price disclosure, sizes with online stock, rating and the 10 latest reviews with fit feedback | 2 |
Stock/api/v1/hm/stock | Online stock per size for every colour of a product: in_stock and few_left per size, sizes in stock | 1 |
Stores/api/v1/hm/stores | A country's stores with address, coordinates, phone, opening hours, departments; by city, postal code or radius | 1 |
Category/api/v1/hm/category | A category grid by H&M's category id, the same id in every market, with prices, colours and online stock | 1 |
Deals/api/v1/hm/deals | A department's sale grid: sale price, regular price, discount; empty between sales | 1 |
New arrivals/api/v1/hm/new-arrivals | A department's new-arrivals grid with prices, colours and online stock per size | 1 |
Suggestions/api/v1/hm/suggestions | The search suggestions H&M offers for what a shopper has typed, in the market's language | 1 |
Production/api/v1/hm/production | Where an article is made: countries of production, supplier and factory names, city and workers range | 1 |
50 free credits on signup covers 50 searches or 25 product reads. See plans
47 countries, 26 languages, 27 currencies
One country parameter, plus language where the market offers more than one. Titles, colours and facet values come in the market's language; every answer echoes country, language, currency, locale and store.
| country | Market | Language(s), first = default | Currency | Endpoints |
|---|---|---|---|---|
| us (default) | United States | English | USD | All 9 |
| ca | Canada | English or French | CAD | All 9 |
| mx | Mexico | Spanish | MXN | All 9 |
| gb, ie | United Kingdom, Ireland | English | GBP, EUR | All 9 |
| de, at | Germany, Austria | German | EUR | All 9 |
| ch | Switzerland | German, French or Italian | CHF | All 9 |
| fr | France | French | EUR | All 9 |
| be | Belgium | Dutch or French | EUR | All 9 |
| nl, it, es, pt | Netherlands, Italy, Spain, Portugal | Dutch, Italian, Spanish, Portuguese | EUR | All 9 |
| se | Sweden | Swedish | SEK | All 9 |
| fi | Finland | Finnish or Swedish | EUR | All 9 |
| dk, no | Denmark, Norway | Danish, Norwegian | DKK, NOK | All 9 |
| pl, cz, hu, ro | Poland, Czechia, Hungary, Romania | Polish, Czech, Hungarian, Romanian | PLN, CZK, HUF, RON | All 9 |
| sk, bg, gr | Slovakia, Bulgaria, Greece | Slovak, Bulgarian, Greek | EUR | All 9 |
| rs, tr, ua | Serbia, Turkey, Ukraine | Serbian, Turkish, Ukrainian | RSD, TRY, UAH | All 9 |
| il | Israel | Hebrew | ILS | All 9 |
| hk | Hong Kong | Chinese or English | HKD | All 9 |
| tw | Taiwan | Chinese or English | TWD | 8: no product |
| mo | Macau | Chinese or English | HKD | 7: no product, no stores |
| jp, kr | Japan, South Korea | Japanese, Korean | JPY, KRW | All 9 |
| in, my, ph, sg | India, Malaysia, Philippines, Singapore | English | INR, MYR, PHP, SGD | All 9 |
| vn | Vietnam | Vietnamese | VND | All 9 |
| au | Australia | English | AUD | All 9 |
| hr, cy, ee, lv, lt, lu, si | Croatia, Cyprus, Estonia, Latvia, Lithuania, Luxembourg, Slovenia | English (H&M's shared EU store) | EUR | 8: no product |
The seven countries in the last row shop on H&M's shared English EUR store: answers say store "eu", and stock there carries no few-left flag (also on mo and tw). On mo, tw and the shared EU store, search and stock carry the prices, colours and sizes. Countries where H&M runs a separate site (ae, eg, id, th, br, cn) or has no online store (al, az, ba, by, cl, co, cr, ge, is, kh, kz, mk, nz, pe, xk, za), and ru, answer 400, not charged; send gb for the United Kingdom.
Same article, every market
The Bow-detail blazer dress, article 1372161001, read on 2026-11-15 with one search per country (the article code as the query). Online prices in each market's currency as H&M showed them, never converted.
| country | Currency | price | regular_price | member_price or sale |
|---|---|---|---|---|
| us | USD | 79.99 | 79.99 | member 63.99 |
| ca (French) | CAD | 99 | 99 | member 78.99 |
| mx | MXN | 1,049 | 1,499 | on sale, 30% off |
| gb | GBP | 64.99 | 64.99 | - |
| ie, de, at, nl, hr (shared EU store) | EUR | 69.99 | 69.99 | - |
| fr, it, es | EUR | 59.99 | 59.99 | - |
| ch (Italian) | CHF | 84.95 | 84.95 | - |
| se | SEK | 799 | 799 | - |
| no | NOK | 799 | 799 | - |
| dk | DKK | 599 | 599 | - |
| pl | PLN | 299.99 | 299.99 | - |
| cz | CZK | 1,799 | 1,799 | - |
| hu | HUF | 27,995 | 27,995 | - |
| ro | RON | 349.99 | 349.99 | - |
| tr | TRY | 4,299 | 4,299 | - |
| il | ILS | 399 | 399 | - |
| jp | JPY | 8,999 | 8,999 | - |
| kr | KRW | 99,900 | 99,900 | - |
| hk | HKD | 599 | 599 | - |
| in | INR | 5,499 | 5,499 | - |
| sg | SGD | 99.90 | 99.90 | - |
| au | AUD | not listed | - | - |
A dash means no member price and no markdown that day. In Australia the code returned no result: not every article is sold in every market. gb, se, ca, ch, de, fr, mx and pl are the playground captures of the same day (search in each market's language); the other countries were read by article code. Prices on one date; a comparison is for research and pricing analysis.
What each price field means
Every item, colour and product carries the same price fields, as numbers in the market's currency.
| Field | Meaning | Example from the captures |
|---|---|---|
| price | What a non-member pays now: sale_price when on sale, else regular_price | 79.99 USD (US, 1372161001) |
| regular_price | H&M's full price | 1,499 MXN (Mexico, same article) |
| sale_price | A markdown; null when none | 1,049 MXN |
| discount_percent | H&M's own markdown figure | 30 |
| member_price | H&M's member price as displayed to signed-in members | 63.99 USD (US), 78.99 CAD (Canada) |
| prior_price | The earlier price H&M shows next to a markdown in EU markets | 29.99 PLN on a 19.99 PLN item (Poland) |
| price_disclosure | H&M's own note on a markdown, on product | "Sale price in effect for 90+ days" (US, 1310382002) |
Scavio does not sign in: member_price is the price H&M displays for members, not a member-only cart or checkout price. H&M publishes no price history, so poll and store your own readings.
Price one article in every market
A price tracker sends the article code to search, once per country, and stores price, sale_price, member_price and currency. The response on the right is a real search-by-code capture from the US store.
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key", timeout=120)
# Article codes are the same in every H&M market: one code, one call per country.
ARTICLE = "1372161001"
for country in ["us", "ca", "mx", "gb", "de", "fr", "se", "pl", "jp", "in"]:
r = client.hm.search(query=ARTICLE, country=country)["data"]
hit = next((i for i in r["items"] if i["article_code"] == ARTICLE), None)
if hit:
print(country, hit["price"], hit["regular_price"], hit["sale_price"], hit["member_price"], r["currency"])
else:
print(country, "not sold here"){
"data": {
"query": "1372161001",
"items": [
{
"article_code": "1372161001",
"product_code": "1372161",
"title": "Bow-Detail Jacket Dress",
"brand": "H&M",
"url": "https://www2.hm.com/en_us/productpage.1372161001.html",
"price": 79.99,
"regular_price": 79.99,
"sale_price": null,
"member_price": 63.99,
"discount_percent": null,
"prior_price": null,
"currency": "USD",
"promo_text": null,
"promo_terms": null,
"multipack": null,
"color": "Black",
"colors": [
{
"article_code": "1372161001",
"name": "Black",
"hex": "#272627"
}
],
"sizes": [
{
"size_code": "1372161001002",
"label": "XS",
"in_stock": true
},
{
"size_code": "1372161001003",
"label": "S",
"in_stock": true
},
{
"size_code": "1372161001004",
"label": "M",
"in_stock": true
},
{
"size_code": "1372161001005",
"label": "L",
"in_stock": true
},
{
"size_code": "1372161001006",
"label": "XL",
"in_stock": true
}
],
"in_stock": true,
"coming_soon": false,
"new_arrival": true,
"markers": [],
"category": "ladies_occasion_partywear_dresses",
"image": "https://image.hm.com/assets/hm/39/87/3987eaf26203153e02654dbdeb3cd0cae39f9677.jpg",
"model_image": "https://image.hm.com/assets/hm/63/39/63394285eec0f1b61cf1689ac67ecd30b33e46c1.jpg"
}
],
"count": 1,
"total": 1,
"page": 1,
"page_size": 10,
"total_pages": 1,
"sort": "relevance",
"sorts_offered": [
"relevance",
"newest",
"price_asc",
"price_desc"
],
"filters": {},
"facets": [
{
"filter": "color",
"name": "ColorWithNames",
"values": [
{
"value": "black_000000",
"label": "black",
"count": 1,
"hex": "#000000"
}
]
},
{
"filter": "size",
"name": "Size",
"values": [
{
"value": "womenswear;NO_FORMAT[SML];XS",
"label": "XS",
"count": 1
},
{
"value": "womenswear;NO_FORMAT[SML];S",
"label": "S",
"count": 1
},
{
"value": "womenswear;NO_FORMAT[SML];M",
"label": "M",
"count": 1
},
{
"value": "womenswear;NO_FORMAT[SML];L",
"label": "L",
"count": 1
},
{
"value": "womenswear;NO_FORMAT[SML];XL",
"label": "XL",
"count": 1
}
]
},
{
"filter": "fit",
"name": "Fits",
"values": [
{
"value": "Slim fit",
"label": "Slim fit",
"count": 1
}
]
},
{
"filter": "product_type",
"name": "ProductTypes",
"values": [
{
"value": "Dress",
"label": "Dress",
"count": 1
}
]
}
],
"on_sale_count": null,
"price_range": {
"min": 79.99,
"max": 79.99
},
"department": null,
"store_code": null,
"departments": [
{
"department": "women",
"id": "ladies_all",
"label": "Women",
"count": 1
}
],
"did_you_mean": [],
"related_searches": [],
"country": "us",
"language": "en",
"currency": "USD",
"locale": "en_us",
"store": "us",
"notes": [
"member_price is H&M's member (club) price, shown to signed-in H&M members; price is what a non-member pays now (sale_price when on sale, else regular_price).",
"sizes[].in_stock is online stock (not store stock)."
]
},
"response_time": 1153
}Why not an official H&M API?
H&M Group's integration portals are built for its business partners. Here is what they cover, and where the Scavio API fits.
H&M Group partner portals
- Integration portals for H&M's business partners
- Behind a sign-in, with no public sign-up
- No public product, price or stock API
- Not open to developers who want store prices or stock
Scavio H&M API
- One Scavio key issued at signup, 1 credit per call, product 2
- One article's price, sale and member price in 47 countries
- Online stock by size for every colour
- Sale, new-arrival and category grids per market
- Stores with hours and where each article is made
- The same JSON envelope and key as every other Scavio platform
Portal facts from H&M Group's partner portal sign-in pages, read 2026-11-15. The H&M brand sells online in 62 markets and runs 3,579 stores in 82 markets (H&M Group, 31 August 2026). Not legal advice.
What developers build with it
Prices by country
Read one article code in every market it is sold in and keep each currency, for research and pricing analysis.
searchSale and markdown alerts
Poll a department's sale grid or a watch list of article codes and alert when sale_price appears or the discount deepens.
deals + searchMember price tracking
Track the gap between price and member_price per article and market over time.
search + productSize restock alerts
Watch the online stock of the sizes you care about and alert when one comes back or few_left flips.
stockNew drops and assortment
Store the article codes of each new-arrivals reading and diff the next one; compare category sizes across markets.
new-arrivals + categoryPrice history you own
H&M shows no price history: poll daily and store price, regular_price, sale_price and fetched_at per article and market.
search + dealsSourcing and supply research
Map articles to their countries of production, suppliers and factories as H&M publishes them.
productionShopping agents and assistants
Give an AI agent H&M as tools: find an article, read its sizes and stock, and price it in the shopper's market.
MCP + RESTHow to get H&M prices by country
- 1
Get an API key
Sign up for a Scavio account and copy your key from the dashboard. You get 50 free credits on signup, with no card.
- 2
Find the article code
Send {"query": "blazer dress", "country": "us"} to https://api.scavio.dev/api/v1/hm/search with an Authorization: Bearer header. Each item carries article_code (10 digits), the same code in every H&M market.
- 3
Read it in every market
Send {"query": "1372161001", "country": "gb"} to the same endpoint, once per country. Each answer has price, regular_price, sale_price, member_price, discount_percent and currency, plus sizes with online stock.
- 4
Poll and store each reading
Run the same calls on a schedule and store price, sale_price, member_price, currency and fetched_at. H&M publishes no price history, so your readings are the record.
H&M API FAQ
Does H&M have a public API?
+
No. H&M has no public product, price or stock API. H&M Group runs integration portals for its business partners behind a sign-in; they are not open to developers who want store prices or stock. The Scavio H&M API is a separate option: 9 POST endpoints on one API key.
How do I get H&M prices by country?
+
Send the article code as the search query with a country: the answer carries the price in that market's currency with the regular, sale and member price. One call per country. The Bow-detail blazer dress 1372161001 read 79.99 USD, 64.99 GBP, 69.99 EUR in Germany, 59.99 EUR in France, 799 SEK and 8,999 JPY on 2026-11-15. H&M Search API docs
Is the H&M article code the same in every country?
+
Yes. An article code (10 digits: a 7-digit product code plus a 3-digit colour) is global, so one code identifies the same article in every market. Not every article is sold everywhere: 1372161001 returned no result in Australia on 2026-11-15.
Does it return the H&M member price?
+
Yes, where H&M displays one: member_price sits next to price, regular_price and sale_price. Scavio does not sign in, so it is the member price H&M shows on the page, not a member-only cart or checkout price. In the US capture the blazer dress read 79.99 USD with a 63.99 member price.
When do H&M sales run, and does deals always return items?
+
Each market runs its own sales in seasons, so a sale grid may be empty between sales (still 1 credit): on 2026-11-15, 25 of the 47 markets had an empty women's sale grid while the UK men's grid held 414 items. H&M's US Black Friday page says Black Friday 2026 starts early at hm.com on November 26 and in stores on November 27. H&M Deals API docs
Does it return stock by size?
+
Yes, online stock: stock returns every colour of a product with in_stock and few_left per size in the market you ask for, and search, grids and product carry in_stock per size too. On mo, tw and the shared EU store countries few_left is null. H&M Stock API docs
Can I check a size in a specific H&M store?
+
No. H&M publishes no per-size store stock, so none is returned. stores lists a country's stores with hours, and search with a store code lists that store's assortment, which tells you whether a store carries an item, not whether your size is on the shelf.
Does it return H&M reviews?
+
product returns the rating (average and count) and the latest reviews H&M shows on the product page, up to 10, each with rating, text, date and fit feedback such as True to Size and Length. There is no endpoint for the full review list, and reviewer names are left out.
How do H&M category ids work?
+
Every item carries its category id (for example ladies_dresses, men_jeans, ladies_occasion_partywear_dresses), and the ids are the same in every market. Send one to category to read that grid in any country. A category returns everything H&M files under the id, which can be more than the curated page of the same name. H&M Category API docs
Which countries, currencies and languages are covered?
+
47 countries in 27 currencies and 26 languages: the US, Canada (English or French), Mexico, 23 European markets with a store of their own, Turkey, Ukraine, Israel, Hong Kong, Macau and Taiwan (Chinese or English), Japan, South Korea, India, Malaysia, the Philippines, Singapore, Vietnam and Australia, plus seven countries on H&M's shared EU store. Product runs on 38 of them and stores on 46.
What is H&M's shared EU store?
+
Croatia, Cyprus, Estonia, Latvia, Lithuania, Luxembourg and Slovenia shop on one H&M store in English and EUR. Send the country code (hr, cy, ee, lv, lt, lu, si): answers say store "eu". Search, stock, grids, suggestions, stores and production work there; product does not (use search or stock).
Can I see where an H&M item is made?
+
Yes. production returns the countries of production and each supplier and factory with name, city and workers range, as H&M publishes them for the article; street addresses and contacts are left out. The US capture of 1310382004 named one supplier and one factory in Sukabumi, Indonesia. H&M Production API docs
Does it cover COS, ARKET, Weekday or & Other Stories?
+
Not their own online stores: the API reads the H&M brand's stores. Items H&M itself sells on hm.com under those labels do appear, with the label in markers.
What do H&M's terms say?
+
H&M's US Terms of Use (effective 28 June 2024) ask users not to use spiders, bots, crawlers or other automated tools to navigate or search hm.com or to copy its content, and say site content is for personal, non-commercial use. We do not interpret them for you: read the current terms for your market and use case. You are responsible for your own compliance. This is not legal advice.
How much does an H&M request cost?
+
product costs 2 credits; the other 8 endpoints cost 1 credit per call. New accounts get 50 free credits on signup, one time and with no card. Paid plans start with Hobby at $15 per month for 3,000 credits; on Growth credits cost $1 per 1,000, so a 1-credit call costs $0.001. Reading one article in 20 markets every day is 20 credits a day. A 400 and a failed upstream call are not charged; a not-found is charged.
How fresh is the data, and how long does a call take?
+
Every request reads H&M when you call it and carries fetched_at; nothing is cached. Most calls answer in 1 to 10 seconds; product reads the product page and usually takes 4 to 60 seconds. Set a client timeout of 120 seconds.
Explore more of Scavio
Best H&M country price APIs
Seven options priced, plus 44 articles in 41 online stores: the median cost 114% more in its dearest store.
How to get H&M prices by country
One article code in every market, member price, stock by size and a daily Black Friday poll, step by step.
Is H&M more expensive in Denmark?
131 articles online in Denmark, Sweden and Norway: a median 12.9% above Sweden, 1.1% below Norway.
Vinted API
Second-hand listings, H&M items included, with prices and sellers.
Nordstrom API
Nordstrom sale prices and store pickup by size.
Trendyol API
Trendyol fashion and marketplace prices on 35 storefronts.
IKEA API
IKEA prices by country with one article number.
Amazon API
Search, product and offers across 22 marketplaces.
H&M API docs
All 9 endpoints with params and real responses.
Start reading H&M prices
50 free credits on signup, no card. One key for H&M and every other Scavio platform.