ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Hm12 min readNov 15, 2026

How to Get H&M Prices by Country With an API (Price, Sale Price, Member Price and Stock by Size for One Article in Every H&M Market)

Find an H&M article code once, then read its price, sale price, member price and online size stock in 47 countries with Scavio's H&M API, 1 credit a call.

Scavio Team

Nov 15, 2026

Try the H&M API free
scavio
Fashion / Retail
Hm

To get H&M prices by country, find the article's 10-digit code once with Scavio's H&M search, then call POST /api/v1/hm/search with that code and each country. Article codes are the same in every market, so each call returns that market's price, regular price, sale price, member price and online stock by size in its own currency, for 1 credit, in any of 47 countries. For many articles at once, POST /api/v1/hm/category prices up to 72 per market in one 1-credit call.

An H&M price depends on three things: the article, the market and the day. H&M sells online in 62 markets, each with its own currency, markdowns and member prices, and it shows no price history, so anyone comparing or tracking prices has to read every market and keep the readings. H&M publishes no public API for this; its integration portals are for business partners and sit behind a sign-in. Every response below is a trimmed capture from Scavio's H&M API on November 15, 2026, between 18:43 and 18:57 UTC. Prices are numbers in the market's currency: 349 with "currency": "DKK" is 349 kr. Images are cut from every sample.

Step 1: Search H&M and get the article code

Bash
curl -s https://api.scavio.dev/api/v1/hm/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "scuba hoodie", "country": "us", "page_size": 5}'

The US store returned 36 results. The third:

JSON
{
  "query": "scuba hoodie",
  "count": 5,
  "total": 36,
  "page": 1,
  "page_size": 5,
  "total_pages": 8,
  "sort": "relevance",
  "on_sale_count": 1,
  "price_range": { "min": 31.99, "max": 49.99 },
  "country": "us",
  "language": "en",
  "currency": "USD",
  "locale": "en_us",
  "store": "us",
  "items": [
    {
      "article_code": "1329256001",
      "product_code": "1329256",
      "title": "Loose-Fit Scuba Hoodie",
      "brand": "H&M",
      "url": "https://www2.hm.com/en_us/productpage.1329256001.html",
      "price": 49.99,
      "regular_price": 49.99,
      "sale_price": null,
      "member_price": 41.99,
      "discount_percent": null,
      "prior_price": null,
      "currency": "USD",
      "color": "Black",
      "colors": [
        { "article_code": "1329256001", "name": "Black", "hex": "#272627" },
        { "article_code": "1329256006", "name": "Dark brown", "hex": "#4A312C" },
        { "article_code": "1329256002", "name": "Gray melange", "hex": "#A5A5A5" },
        { "article_code": "1329256007", "name": "Dark blue", "hex": "#2B2C32" }
      ],
      "sizes": [
        { "size_code": "1329256001001", "label": "XS", "in_stock": true },
        { "size_code": "1329256001002", "label": "S", "in_stock": true },
        { "size_code": "1329256001007", "label": "3XL", "in_stock": false }
      ],
      "in_stock": true,
      "coming_soon": false,
      "new_arrival": false,
      "markers": [],
      "category": "men_hoodiessweatshirts_hoodies"
    }
  ]
}

article_code is 10 digits: the 7-digit product_code and a 3-digit colour. Each colour is its own article, listed in colors; we follow the grey one, 1329256002. Search takes page_size up to 72, four sorts (relevance, newest, price_asc, price_desc), a department, on_sale and the market's own facet values for color, size, material, fit and product_type. price is what a non-member pays now, member_price the member price H&M displays (Scavio does not log in), and sizes[].in_stock is online stock. It answered in 1.2 seconds. 1 credit.

Step 2: Look up the same code in another market

Bash
curl -s https://api.scavio.dev/api/v1/hm/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "1329256002", "country": "dk"}'
JSON
{
  "query": "1329256002",
  "count": 1,
  "total": 1,
  "country": "dk",
  "language": "da",
  "currency": "DKK",
  "locale": "da_dk",
  "store": "dk",
  "items": [
    {
      "article_code": "1329256002",
      "product_code": "1329256",
      "title": "Hoodie i scuba Loose Fit",
      "url": "https://www2.hm.com/da_dk/productpage.1329256002.html",
      "price": 349,
      "regular_price": 349,
      "sale_price": null,
      "member_price": null,
      "discount_percent": null,
      "prior_price": null,
      "currency": "DKK",
      "color": "Gråmeleret",
      "in_stock": true,
      "category": "men_hoodiessweatshirts_hoodies"
    }
  ]
}

One code, one result, in Danish and in kroner, with the same item fields as Step 1 (colours and 7 sizes trimmed here; XS and 3XL were out of stock online). An article the market does not sell returns zero results. Titles, colours and facet values come back in the market's language; pass language where a market has several (Canada en or fr, Switzerland de, fr or it, Belgium nl or fr, Finland fi or sv, Hong Kong, Macau and Taiwan zh or en). 1 credit.

Step 3: Read the article in every market

One call per country. The 47 country values: 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, and hr, cy, ee, lv, lt, lu and si, which share H&M's English EUR store (the answer says "store": "eu", and all seven return the same prices, so read one of them).

Python
import requests

API = "https://api.scavio.dev/api/v1/hm"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
STORES = ["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", "hr"]

code = "1329256002"
for country in STORES:  # one request at a time, 1 credit each
    d = requests.post(f"{API}/search", headers=HEADERS, timeout=60,
                      json={"query": code, "country": country}).json()["data"]
    for it in d["items"]:
        if it["article_code"] == code:
            print(country, it["currency"], it["regular_price"], it["sale_price"], it["member_price"])

That is 41 credits for one article in every store. The grey scuba hoodie was in all 41 on November 15. Here is a selection, read from the category grids of Step 7 the same hour (a code lookup returns the same fields: Denmark's 349 kr matched), with US dollars at the ECB rates of November 13:

StoreRegular priceSale or member priceIn USD
PhilippinesPHP 1,990-$31.18
IndiaRs 2,999-$31.82
Japan¥5,499-$34.37
CanadaC$59.99member C$50.99$42.07
Poland174.99 złsale 139.99 zł$43.84
Germany, France, Spain and 11 more euro stores€39.99member €31.99 in Slovakia, Bulgaria and Greece$44.20
Sweden449 kr-$44.68
MexicoMX$899sale MX$629$48.35
United States$49.99member $41.99$49.99
United Kingdom£37.99-$50.25
Denmark349 kr-$51.60
Norway499 kr-$52.18
SwitzerlandCHF 49.95-$59.58
Israel₪229-$71.32

Serbia (RSD 4,599, member RSD 3,699), Ukraine (UAH 1,999, sale UAH 1,599), Taiwan (NT$1,499) and Vietnam (999,000 VND) returned prices too; the ECB publishes no rate for their currencies.

Step 4: Read the product for member price, sizes and reviews

Bash
curl -s https://api.scavio.dev/api/v1/hm/product \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"article_code": "1329256002", "country": "us"}'
JSON
{
  "article_code": "1329256002",
  "product_code": "1329256",
  "title": "Loose-Fit Scuba Hoodie",
  "category": "Hoodies",
  "category_code": "men_hoodiessweatshirts_hoodies",
  "url": "https://www2.hm.com/en_us/productpage.1329256002.html",
  "color": "Gray melange",
  "price": 49.99,
  "regular_price": 49.99,
  "sale_price": null,
  "member_price": 41.99,
  "discount_percent": null,
  "price_disclosure": null,
  "currency": "USD",
  "composition": [
    {
      "part": "Shell",
      "materials": [
        { "name": "Polyester", "percent": 70 },
        { "name": "Rayon", "percent": 24 },
        { "name": "Spandex", "percent": 6 }
      ]
    }
  ],
  "attributes": {
    "fit": ["Relaxed fit"],
    "length": ["Regular length"],
    "sleeve_length": ["Long sleeve"]
  },
  "colors": [
    { "article_code": "1329256001", "name": "Black", "price": 49.99, "member_price": 41.99 },
    { "article_code": "1329256002", "name": "Gray melange", "price": 49.99, "member_price": 41.99 }
  ],
  "sizes": [
    { "size_code": "1329256002001", "label": "XS", "in_stock": true, "few_left": false },
    { "size_code": "1329256002002", "label": "S", "in_stock": true, "few_left": false },
    { "size_code": "1329256002007", "label": "3XL", "in_stock": false, "few_left": false }
  ],
  "sold_in_stores": true,
  "rating": { "average": 4.1, "count": 14 },
  "reviews": [],
  "country": "us"
}

Product adds the description, composition, care, fit attributes, breadcrumbs, images, every colourway's prices (4 here) and price_disclosure, a note such as "Sale price in effect for 90+ days" where H&M shows one. reviews holds the latest reviews H&M shows on the page, up to 10, each with rating, text, date and fit feedback (True to Size, Length), without reviewer names; this article showed a 4.1 rating from 14 and no review text. There is no endpoint for the full review list. Product is not served in Macau, Taiwan or the shared EU store. It took 27.7 seconds, so set a long timeout. 2 credits.

Step 5: Check online stock by size

Bash
curl -s https://api.scavio.dev/api/v1/hm/stock \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"article_code": "1329256002", "country": "gb"}'
JSON
{
  "product_code": "1329256",
  "article_code": "1329256002",
  "title": "Loose Fit Scuba hoodie",
  "colors": [
    {
      "article_code": "1329256002",
      "name": "Grey marl",
      "sizes": [
        { "size_code": "1329256002001", "label": "XS", "in_stock": false, "few_left": false },
        { "size_code": "1329256002002", "label": "S", "in_stock": true, "few_left": false },
        { "size_code": "1329256002003", "label": "M", "in_stock": true, "few_left": false }
      ]
    }
  ],
  "sizes_total": 45,
  "sizes_in_stock": 15,
  "country": "gb",
  "currency": "GBP"
}

Stock returns every colour of the product (six in the UK, including short-length sizes such as XS/S), and sizes_in_stock / sizes_total across them: 15 of 45 in the UK, with black, grey and one of the two browns in stock from S to XXL and the rest sold out online. It is online stock; H&M publishes no per-size stock for a store. few_left is H&M's low-stock flag, null in Macau, Taiwan and the shared EU store. It answered in 1.6 seconds. 1 credit.

Step 6: Convert with one dated exchange rate

The API never converts. Pick one dated reference rate and say which; we used the ECB euro reference rates of November 13, 2026, the latest on November 15:

Python
import re, urllib.request

xml = urllib.request.urlopen("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml").read().decode()
date = re.search(r"time='([\d-]+)'", xml).group(1)
per_eur = {c: float(r) for c, r in re.findall(r"currency='(\w+)' rate='([\d.]+)'", xml)}
per_eur["EUR"] = 1.0

def to_usd(amount, currency):
    return amount / per_eur[currency] * per_eur["USD"]

print(date, round(to_usd(349, "DKK"), 2))  # 2026-11-13 51.6

The ECB publishes no rate for the Serbian dinar, Ukrainian hryvnia, Taiwan dollar or Vietnamese dong, so leave those four markets out of a converted comparison or take their rates from another dated source. Macau prices come back in Hong Kong dollars. EU, UK, Swiss and Nordic prices include VAT; US and Canadian prices exclude sales tax.

Step 7: Price whole categories at 72 articles per call

Looking up codes one by one costs 1 credit per article per market. If your list is a category, read the grid instead: category ids are the same in every market, and each article in the grid carries the same price fields as search.

Bash
curl -s https://api.scavio.dev/api/v1/hm/category \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category": "men_hoodiessweatshirts_hoodies", "country": "de", "page_size": 72}'

Germany returned 72 of 73 men's hoodies, from €19.99 ("price_range": {"min": 19.99, "max": 129}), among them the Loose Fit Hoodie, article 0970819001, "Hoodie in Loose Fit" at €19.99; the US grid listed the same article at $24.99 with a $21.99 member price. items[].category gives the id of any article's category, and a category answers everything H&M files under that id, which can be more than the curated page on the site (3,440 women's dresses under ladies_dresses in the UK). We read five category ids in 41 stores, 205 calls in ten minutes, to compare 44 articles across markets; the best H&M country price APIs has the result. Deals returns a department's markdown grid (it can be empty between sales) and new arrivals the newest items, in the same shape. 1 credit each.

Step 8: Poll daily through Black Friday and keep your own history

H&M's US Black Friday page says the sale starts at hm.com on November 26 and in stores on November 27. Nothing in a response tells you yesterday's price, so store every reading:

Python
import csv, datetime, requests

API = "https://api.scavio.dev/api/v1/hm"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
CATEGORIES = ["men_hoodiessweatshirts_hoodies", "ladies_jeans_straight", "kids_clothing_jeans_loose"]
STORES = ["us", "gb", "de", "fr", "se", "dk", "no", "pl", "mx", "jp"]

now = datetime.datetime.now(datetime.timezone.utc).isoformat(timespec="seconds")
with open("hm_prices.csv", "a", newline="") as f:
    w = csv.writer(f)
    for country in STORES:
        for category in CATEGORIES:  # one request at a time, 1 credit each
            r = requests.post(f"{API}/category", headers=HEADERS, timeout=60,
                              json={"category": category, "country": country, "page_size": 72})
            if r.status_code != 200:
                continue  # failed upstream calls are not charged; retry later
            d = r.json()["data"]
            for it in d["items"]:
                in_stock = sum(1 for s in it["sizes"] if s["in_stock"])
                w.writerow([now, country, d["currency"], category, it["article_code"], it["price"],
                            it["regular_price"], it["sale_price"], it["member_price"],
                            it["discount_percent"], it["prior_price"], in_stock, len(it["sizes"])])

Run it once a day from November 26 to November 30 (cron or any scheduler). Three categories in ten stores is 30 credits a reading and 150 for the five days, $0.15 on the Growth plan. Keep regular_price, sale_price and prior_price apart: discount_percent is measured against prior_price where an EU store shows one (a Polish polo top at 89.99 zł was "18% off" its 109.99 zł prior price, with a regular price of 147.99 zł), so recompute the markdown you want from the raw fields.

What it costs per 1,000 articles per market per day: 1,000 credits ($1.00) if you look up each code with search; about 14 credits ($0.014) if your 1,000 articles are whole category grids of 72. Use product (2 credits) and stock (1 credit) only for articles where you need sizes, composition or reviews.

All H&M endpoints

EndpointWhat it returnsMarketsCredits
searchKeyword or article-code search with prices, sizes and facets471
productOne article with composition, every colour's prices, sizes, rating and up to 10 latest reviews382
stockOnline stock per size for every colour471
storesStores with address, opening hours and departments461
categoryA category grid by H&M's category id471
dealsA department's markdown grid471
new-arrivalsA department's new arrivals471
suggestionsSearch suggestions in the market's language471
productionCountries of production, suppliers and factory cities471

Not available: price history, per-size store stock, the full review list, member-only checkout prices, and the sibling brands COS, Weekday, & Other Stories, Monki and ARKET. Markets H&M runs on a separate site (the UAE, Egypt, Indonesia, Thailand, Brazil, China) and those without an H&M online store answer 400 before anything is charged.

Getting started

  1. Sign up and copy your API key; you get 50 free credits, no card.
  2. Run Step 1 with your own query, or try search, category and stock in the playground.
  3. Save the article codes you care about; they work in every market.
  4. Read your categories or codes in each market you need, once a day, and store the rows.
  5. Agents can call the same endpoints through the MCP server.

Try the H&M API free: 50 credits price one article in all 41 stores and leave 9 to spare.

Reference: H&M API overview · search docs · category docs · product docs · stock docs · best H&M country price APIs · is H&M more expensive in Denmark? · how to get IKEA prices by country · how to get Nintendo eShop prices by country

Frequently asked questions

Is the H&M article number the same in every country?

Yes. An H&M article code is 10 digits, a 7-digit product code plus a 3-digit colour, and it is the same in every market: 1329256002, a grey Loose-Fit Scuba Hoodie, is 1329256002 in the US, Denmark and Japan. You find it in the product link (productpage.1329256002.html) or in any search result, and searching it in another market returns that market's price.

Can you see H&M member prices without logging in?

H&M shows a member price next to many articles on its public pages, and Scavio returns it as member_price, the price as H&M displays it; it does not log in, so it never returns member-only checkout prices or account offers. On November 15, 2026, 38 of 39 articles we priced in the US had a member price, a median 20% below the regular price.

Can I check H&M stock by size in a specific store?

No. H&M publishes online stock per size, which Scavio's stock and product endpoints return as in_stock and few_left for each size and colour, but it does not publish per-size stock for a store. A store code passed to search narrows results to that store's assortment, which is not the same as stock on the shelf.

When does H&M Black Friday 2026 start?

In the US, H&M's Black Friday page says Black Friday 2026 begins in stores on November 27 and starts early at hm.com on November 26. We did not read the dates for other markets; the deals endpoint and the sale_price field show what is marked down in each market on the day you call.

Do H&M's terms allow automated price collection?

H&M's US website terms ask users not to use spiders, bots, crawlers or other automated tools to navigate or search hm.com or copy its content, and say site content is for personal, non-commercial use. This is not legal advice; read the current terms for your market and use case.

H&M prices by country

  • Look up one article code in any of 47 countries
  • Price, sale price, member price and online stock by size
  • Category grids of up to 72 articles per call, 1 credit
Try the H&M API free

50 free credits, no credit card

On this page

  1. Step 1: Search H&M and get the article code
  2. Step 2: Look up the same code in another market
  3. Step 3: Read the article in every market
  4. Step 4: Read the product for member price, sizes and reviews

Related articles

View all
  • scavio
    Fashion / Retail
    Hm
    7 Best H&M Country Price APIs in 2026: Scavio Priced 44 H&M Articles in 41 Online Stores, and 35 Were Marked Down in Some Markets but Full Price in Others
  • scavio
    Fashion / Denmark
    Hm
    Is H&M More Expensive in Denmark? We Priced 131 H&M Articles Online: a Median 12.9% Dearer Than Sweden, 1.1% Cheaper Than Norway
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

Ask AI about Scavio

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy