IKEA API: Search products
Searches IKEA products in a chosen country and returns current prices, details, photos and reviews in IKEA's result order.
Unofficial. Not affiliated with or endorsed by IKEA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Query, required
query Words to search IKEA products for, for example white bookcase.
white bookcase
- Country optional
country Country name or two-letter country code, for example Canada or CA.
United States (default)
- Max Price optional
max_price Only return products priced at or below this amount in the selected country's currency, for example 100.
Not set
Number 0 or more.
- Max Results optional
max_results Maximum number of products to return, for example 24.
24 (default)
Whole number from 1 to 100.
Input as JSON
{ "query": "white bookcase"}Output
{ "products": [ { "price": 79, "colour": "white", "currency": "USD", "dimensions": "31 1/2x11x79 1/2 \"" , "photo_link": "https://www.ikea.com/us/en/images/products/billy-bookcase-white__1590272_pe1038911_s5.jpg" , "star_rating": 4.5, "product_link": "https://www.ikea.com/us/en/p/billy-bookcase-white-20522046/" , "product_name": "BILLY", "product_type": "Bookcase, white", "review_count": 2105, "article_number": "20522046", "previous_price": null }, { "price": 39.99, "colour": "white", "currency": "USD", "dimensions": "23 5/8x70 7/8 \"" , "photo_link": "https://www.ikea.com/us/en/images/products/gersby-bookcase-white__1590290_pe1038929_s5.jpg" , "star_rating": 4.5, "product_link": "https://www.ikea.com/us/en/p/gersby-bookcase-white-70261131/" , "product_name": "GERSBY", "product_type": "Bookcase, white", "review_count": 1482, "article_number": "70261131", "previous_price": null }, { "price": 39, "colour": "white", "currency": "USD", "dimensions": "15 3/4x11x41 3/4 \"" , "photo_link": "https://www.ikea.com/us/en/images/products/billy-bookcase-white__1590288_pe1038927_s5.jpg" , "star_rating": 4.6, "product_link": "https://www.ikea.com/us/en/p/billy-bookcase-white-10522037/" , "product_name": "BILLY", "product_type": "Bookcase, white", "review_count": 892, "article_number": "10522037", "previous_price": null } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"ikea.com/search_products","input":{"query":"white bookcase"}}' # 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/search_products" , "input": { "query": "white bookcase" }})# 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/search_products" , "input": { "query": "white bookcase" } }), 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/search_products# with {"query":"white bookcase"}"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": [ "query" ], "properties": { "query": { "type": "string", "description": "Words to search IKEA products for, for example white bookcase." }, "country": { "type": "string", "default": "United States", "description": "Country name or two-letter country code, for example Canada or CA." }, "max_price": { "type": "number", "minimum": 0, "description": "Only return products priced at or below this amount in the selected country's currency, for example 100." }, "max_results": { "type": "integer", "default": 24, "maximum": 100, "minimum": 1, "description": "Maximum number of products to return, for example 24.", "x-fous-developer": true } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "products" ], "properties": { "products": { "type": "array", "items": { "type": "object", "required": [ "product_name", "product_type", "price", "currency", "previous_price", "colour", "dimensions", "star_rating", "review_count", "photo_link", "product_link", "article_number" ], "properties": { "price": { "type": "number", "description": "Current product price." }, "colour": { "type": [ "string", "null" ], "description": "Colour or finish." }, "currency": { "type": "string", "description": "Currency of current and previous prices." }, "dimensions": { "type": [ "string", "null" ], "description": "Product dimensions as displayed." }, "photo_link": { "type": [ "string", "null" ], "description": "Main product photo link." }, "star_rating": { "type": [ "number", "null" ], "description": "Average customer star rating." }, "product_link": { "type": "string", "description": "IKEA product page link." }, "product_name": { "type": "string", "description": "Product name." }, "product_type": { "type": [ "string", "null" ], "description": "Product type and variant shown by IKEA." }, "review_count": { "type": [ "integer", "null" ], "description": "Number of customer reviews." }, "article_number": { "type": [ "string", "null" ], "description": "IKEA article number.", "x-fous-developer": true }, "previous_price": { "type": [ "number", "null" ], "description": "Previous price when reduced, otherwise null." } }, "additionalProperties": false }, "description": "Matching products in IKEA search order." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
ikea.com/search_products- Returns
- product name, type, price, previous price, colour, dimensions, rating, review count, photo and product links, article number
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/search_products with the inputs above.
Ask your agent
- Find white bookcases under 150 dollars on IKEA in Canada, show prices and ratings
- I need a list of IKEA desk lamps with photos and article numbers, shipped to the UK
- Look up IKEA sofas in Germany priced at 500 euros or less, top 10 results
- Show me current IKEA prices for oak dining chairs in the United States, including previous prices
- Search for IKEA storage boxes in Australia with dimensions and review counts
See more
All IKEA methodsChecks 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_stockSearches H&M clothing and home products by keyword, with country-specific prices and an optional sale-only filter.
hm.com/search_productsSearches AliExpress listings by product words, shipping destination, price range and sort order. Unpriced promotional cards are omitted; free shipping is marked only when the listing explicitly says so.
aliexpress.com/search_productsSearches Nike products in a chosen country, in Nike search order, with optional gender (men, women, kids) and sale-only filters. Prices, currency and availability reflect the selected country's Nike store.
nike.com/search_productsSearches a country's English Zara store for products, with current prices, colours, images and product links. The all section excludes non-Zara brands.
zara.com/search_productsSearches Amazon products in a chosen country store, with price range, sort, Prime and page options. Returns the listings and prices shown to an anonymous shopper in the store's currency.
amazon.com/search_productsSearches Macy's products in the site's order with optional USD price bounds, sale-only results and sorting. Prices for products with a range use the lowest shown price.
macys.com/search_productsSearches Walmart products by keywords with optional sort and price range, returning prices, ratings, sellers and availability in Walmart's order. Uses Walmart's default location (no ZIP-based pricing).
walmart.com/search_products