IKEA API: Check store stock
Checks a product's price and stock at IKEA stores in a country. Store stock and delivery options appear only where IKEA provides them.
Unofficial. Not affiliated with or endorsed by IKEA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Store optional
store City or IKEA store name. Shows that store and stores within 50 miles, for example Brooklyn. Defaults to all stores.
(default)
- Country optional
country IKEA country name or two-letter code, for example Canada. Defaults to United States.
Canada
Default
United States.- Product, required
product Product name or IKEA product link, for example BILLY bookcase white.
https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/
Input as JSON
{ "country": "Canada", "product": "https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/" }Output
{ "price": 90, "stores": [ { "city": "Boucherville", "page_url": "https://www.ikea.com/ca/en/stores/boucherville/" , "quantity": 56, "store_code": "414", "store_name": "IKEA Montreal - Boucherville", "stock_level": "in stock", "expected_restock_date": null, "home_delivery_available": true, "click_and_collect_available": true }, { "city": "Burlington", "page_url": "https://www.ikea.com/ca/en/stores/burlington/" , "quantity": 83, "store_code": "040", "store_name": "IKEA Toronto - Burlington", "stock_level": "in stock", "expected_restock_date": null, "home_delivery_available": true, "click_and_collect_available": true }, { "city": "Calgary", "page_url": "https://www.ikea.com/ca/en/stores/calgary/" , "quantity": 286, "store_code": "216", "store_name": "IKEA Calgary", "stock_level": "in stock", "expected_restock_date": null, "home_delivery_available": true, "click_and_collect_available": true } ], "currency": "CAD", "product_name": "BILLY Bookcase, white, 80x28x202 cm", "article_number": "20522046", "product_page_url": "https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"ikea.com/check_store_stock","input":{"country":"Canada","product":"https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/"}}' # 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": "ikea.com/check_store_stock" , "input": { "country": "Canada", "product": "https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/" }})# 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": "ikea.com/check_store_stock" , "input": { "country": "Canada", "product": "https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/" } }), 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 ikea.com/check_store_stock# with {"country":"Canada","product":"https://www.ikea.com/ca/en/p/billy-bookcase-white-20522046/"}"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": { "store": { "type": "string", "default": "", "description": "City or IKEA store name. Shows that store and stores within 50 miles, for example Brooklyn. Defaults to all stores." }, "country": { "type": "string", "default": "United States", "description": "IKEA country name or two-letter code, for example Canada. Defaults to United States." }, "product": { "type": "string", "description": "Product name or IKEA product link, for example BILLY bookcase white." } }}Output schema
{ "type": "object", "required": [ "product_name", "price", "currency", "article_number", "product_page_url", "stores" ], "properties": { "price": { "type": "number" }, "stores": { "type": "array", "items": { "type": "object", "properties": { "city": { "type": [ "string", "null" ] }, "page_url": { "type": "string" }, "quantity": { "type": [ "integer", "null" ] }, "store_code": { "type": "string" }, "store_name": { "type": "string" }, "stock_level": { "enum": [ "in stock", "low stock", "out of stock" ], "type": "string" }, "expected_restock_date": { "type": [ "string", "null" ] }, "home_delivery_available": { "type": "boolean" }, "click_and_collect_available": { "type": "boolean" } } } }, "currency": { "type": "string" }, "product_name": { "type": "string" }, "article_number": { "type": "string" }, "product_page_url": { "type": "string" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
ikea.com/check_store_stock- Returns
- product name, price, currency, and per-store stock level, quantity, restock date, click & collect and home delivery
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 ikea.com/check_store_stock with the inputs above.
Ask your agent
- How many BILLY bookcases in white are in stock at IKEA stores in the United States right now, and when is the next restock?
- Can you check the price and whether the KALLAX shelf unit is available for click and collect at the IKEA store in Brooklyn?
- Is the MALM dresser in oak effect in stock at IKEA Canada, and does it offer home delivery?
- I need the current price in USD and per-store quantities for the POANG armchair in birch veneer at IKEA locations near Chicago.
- Look up the stock level at all IKEA stores in the UK for the HEMNES bed frame in white stain, including restock dates and delivery options.
See more
All IKEA methodsSearches IKEA products in a chosen country and returns current prices, details, photos and reviews in IKEA's result order.
ikea.com/search_productsChecks a Best Buy product's price, shipping estimate, and pickup availability at the stores nearest a US ZIP code, by product name or Best Buy product link. Availability can change before checkout.
bestbuy.com/check_store_stockChecks a Target product's stock and pickup, drive-up and same-day delivery availability at the stores nearest a US ZIP code.
target.com/check_store_stockChecks in-store pickup availability for an exact Apple product configuration (name or part number) near a ZIP, postal code or city, listing nearby Apple Stores by distance with their pickup messages. No reservation is made.
apple.com/check_store_pickupGets 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.
hm.com/get_productFinds a Lowe's product by name, item number or product link and returns its details, price, specifications, images and availability at the nearest store for a ZIP code (or the site's default store).
lowes.com/get_productSearches a named Instacart store's guest-visible grocery products for a US ZIP code. Prices are in USD and can differ from in-store prices; stock estimates can change.
instacart.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_product