H&M API: Get product
Gets an H&M item's current country-specific price, sizes, colours and images by product name or product page link. Description, materials, composition, care and sustainability details are always returned as null.
Unofficial. Not affiliated with or endorsed by H&M.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Colour optional
colour Colour name to select, such as Beige. Defaults to the first colour.
Not set
- Country optional
country Country name or two-letter code, such as United States or GB.
United States (default)
- Product, required
product Product name or H&M product page link, such as Regular Fit Linen Shirt.
Regular-Fit Embroidered Resort Shirt
Input as JSON
{ "product": "Regular-Fit Embroidered Resort Shirt"}Output
{ "fit": "Regular Fit", "price": 49.99, "sizes": [ { "in_stock": false, "low_stock": false, "size_label": "XS" }, { "in_stock": false, "low_stock": false, "size_label": "S" }, { "in_stock": false, "low_stock": false, "size_label": "M" } ], "colour": "Light yellow/patterned" , "colours": [ { "link": "https://www2.hm.com/en_us/productpage.1348853001.html" , "name": "Light yellow/patterned" } ], "materials": null, "sale_price": 29.99, "composition": null, "description": null, "image_links": [ "https://image.hm.com/assets/hm/91/01/91011a104dbdbae8ed131e61ac912e66dd8367f5.jpg" , "https://image.hm.com/assets/hm/b9/6d/b96daeb7bb3d95a395105786404443a18d08c8e7.jpg" , "https://image.hm.com/assets/hm/86/07/86076efbd72dfa73741f6c6c94ee0b48ab784b7d.jpg" ], "product_link": "https://www2.hm.com/en_us/productpage.1348853001.html" , "product_name": "Regular-Fit Embroidered Resort Shirt", "currency_code": "USD", "article_number": "1348853001", "care_instructions": null, "sustainability_info": null}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"hm.com/get_product","input":{"product":"Regular-Fit Embroidered Resort Shirt"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "hm.com/get_product" , "input": { "product": "Regular-Fit Embroidered Resort Shirt" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "hm.com/get_product" , "input": { "product": "Regular-Fit Embroidered Resort Shirt" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run hm.com/get_product# with {"product":"Regular-Fit Embroidered Resort Shirt"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "product" ], "properties": { "colour": { "type": "string", "description": "Colour name to select, such as Beige. Defaults to the first colour." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter code, such as United States or GB." }, "product": { "type": "string", "description": "Product name or H&M product page link, such as Regular Fit Linen Shirt." } }}Output schema
{ "type": "object", "required": [ "product_name", "colour", "price", "currency_code", "sale_price", "sizes", "colours", "description", "materials", "composition", "care_instructions", "fit", "sustainability_info", "image_links", "product_link", "article_number" ], "properties": { "fit": { "type": [ "string", "null" ] }, "price": { "type": "number" }, "sizes": { "type": "array", "items": { "type": "object", "properties": { "in_stock": { "type": "boolean" }, "low_stock": { "type": [ "boolean", "null" ] }, "size_label": { "type": "string" } } } }, "colour": { "type": [ "string", "null" ] }, "colours": { "type": "array", "items": { "type": "object", "properties": { "link": { "type": "string" }, "name": { "type": "string" } } } }, "materials": { "type": [ "string", "null" ] }, "sale_price": { "type": [ "number", "null" ] }, "composition": { "type": [ "string", "null" ] }, "description": { "type": [ "string", "null" ] }, "image_links": { "type": "array", "items": { "type": "string" } }, "product_link": { "type": "string" }, "product_name": { "type": [ "string", "null" ] }, "currency_code": { "type": "string" }, "article_number": { "type": "string" }, "care_instructions": { "type": [ "string", "null" ] }, "sustainability_info": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
hm.com/get_product- Returns
- product name, colour, price, sale price, currency, sizes with online stock, colours, images, product link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method hm.com/get_product with the inputs above.
Ask your agent
- What's the current price in the United States for the Regular Fit Linen Shirt in beige, and which sizes are in stock online?
- Look up the H&M product page at https://www.hm.com/en_us/productpage.0123456789.html and tell me its price in GB pounds, available colours and images.
- Can you check whether the Oversized Cotton Hoodie is available in size M and L online, and what it costs in Germany?
- Find the sale price, currency and product link for the Slim Fit Chino Trousers in navy, shipping to Canada.
- I want the Ribbed Knit Cardigan details, including the price and stock by size, for the French store in colour black.
See more
All H&M methodsSearches H&M clothing and home products by keyword, with country-specific prices and an optional sale-only filter.
hm.com/search_productsGets a Zara item's price, colours, sizes with availability, materials and images by item name or Zara item link in a chosen country. A name returns the closest match from Zara's search.
zara.com/get_productGets a Nike product's details by name or product link for a chosen country. Returns its colourways, size availability, price and reviews.
nike.com/get_productGets current Apple Store prices and the configurations on sale for a product in one country. It includes only models sold on that country's public store.
apple.com/get_product_pricesGet one AliExpress product’s prices, variants, reviews, shipping to a chosen country, seller and specifications from its link or the best-selling name match. Sold counts may be rounded, and shipping options are those shown for the displayed variant.
aliexpress.com/get_productGets a B&H Photo product's details by name, product link, or B&H number. A name uses the best matching search result; details and prices reflect the public page.
bhphotovideo.com/get_productGets details for an Amazon product, found by name or by link, in a chosen country store. Offer prices, delivery and variants may be missing when Amazon does not show them publicly.
amazon.com/get_productChecks a product's price and stock at IKEA stores in a country. Store stock and delivery options appear only where IKEA provides them.
ikea.com/check_store_stock