IKEA prices, stock and specs as JSON, with the IKEA Family price where it belongs
The IKEA API turns every ikea.com country store - 50 countries, from the United States and Germany to Japan, Saudi Arabia and Chile - into clean JSON in eight actions: search, category, categories, product/detail, product/availability, product/reviews, stores and suggest.
8 active endpoints, on 1 and 2 credit tiers.
- POST/ikea/v1/search
- POST/ikea/v1/category
- POST/ikea/v1/categories
- POST/ikea/v1/product/detail
- POST/ikea/v1/product/availability
- POST/ikea/v1/product/reviews
- POST/ikea/v1/stores
- +1 more
What IKEA endpoints does ReefAPI ship?
8 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
IKEA API
3 of 8 endpoints, ready to run
IKEA products for a keyword: item number, price in the store's currency, the IKEA Family price and any previous price kept apart with their dates, what the price buys, rating, colours and category path.
{ "ok": true, "meta": { "api": "ikea", "endpoint": "search", "mode": "live", "latency_ms": 766.9, "record_count": 24, "cache_hit": false }, "data": { "results": [ { "product_id": "40595942", "item_no": "40595942", "item_no_global": "40573285", "item_type": "ART", "title": "GLOSTAD Sofa, Knisa dark gray", "name": "GLOSTAD", "type_name": "Sofa", "design": "Knisa dark gray", "measure": null, "url": "https://www.ikea.com/us/en/p/glostad-sofa-knisa-dark-gray-40595942/", "image": "https://www.ikea.com/us/en/images/products/glostad-sofa-knisa-dark-gray__1234948_pe917261_s5.jpg", "contextual_image": "https://www.ikea.com/us/en/images/products/glostad-sofa-knisa-dark-gray__1235175_pe917294_s5.jpg", "price": 199, "currency": "USD", "price_type": "regular", "original_price": null, "discount_percent": null, "member_price": null, "member_program": null, "member_discount_percent": null, "lowest_previous_price": null, "price_valid_from": null, "price_valid_to": null, "price_disclaimer": null, "price_unit": null, "price_basis": "per_item", "pack_quantity": null, "quantity": null, "unit": null, "in_store_offer": null, "low_price_item": true, "online_sellable": true, "last_chance": false, "is_new": false, "top_seller": false, "rating": 4, "rating_count": 77, "rating_scale": 5, "colours": [ { "id": "10028", "name": "gray", "hex": "949494" } ], "category_path": [ { "key": "700640", "name": "Sofas & armchairs" }, { "key": "fu003", "name": "Sofas & sectionals" }, { "key": "10670", "name": "Three-seat sofas" } ], "product_area": "Sofas", "home_furnishing_business": "Living room seating", "variant_count": 0, "min_order_quantity": null, "energy_class": null }, { "product_id": "s19384116", "item_no": "19384116", "item_no_global": "19384116", "item_type": "SPR", "title": "UPPLAND Sofa, Blekinge white", "name": "UPPLAND", "type_name": "Sofa", "design": "Blekinge white", "measure": null, "url": "https://www.ikea.com/us/en/p/uppland-sofa-blekinge-white-s19384116/", "image": "https://www.ikea.com/us/en/images/products/uppland-sofa-blekinge-white__1578502_pe1034145_s5.jpg", "contextual_image": "https://www.ikea.com/us/en/images/products/uppland-sofa-blekinge-white__0818564_pe774486_s5.jpg", "price": 899, "currency": "USD", "price_type": "regular", "original_price": null, "discount_percent": null, "member_price": null, "member_program": null, "member_discount_percent": null, "lowest_previous_price": null, "price_valid_from": null, "price_valid_to": null, "price_disclaimer": null, "price_unit": null, "price_basis": "per_item", "pack_quantity": null, "quantity": null, "unit": null, "in_store_offer": null, "low_price_item": false, "online_sellable": true, "last_chance": false, "is_new": false, "top_seller": true, "rating": 3.7, "rating_count": 200, "rating_scale": 5, "colours": [ { "id": "10156", "name": "white", "hex": "ffffff" } ], "category_path": [ { "key": "700640", "name": "Sofas & armchairs" }, { "key": "fu003", "name": "Sofas & sectionals" }, { "key": "10670", "name": "Three-seat sofas" } ], "product_area": "Sofas", "home_furnishing_business": "Living room seating", "variant_count": 12, "min_order_quantity": null, "energy_class": null }, { "product_id": "s69578602", "item_no": "69578602", "item_no_global": "89542669", "item_type": "SPR", "title": "GLOSTAD Sofa with chaise, Knisa dark gray", "name": "GLOSTAD", "type_name": "Sofa with chaise", "design": "Knisa dark gray", "measure": null, "url": "https://www.ikea.com/us/en/p/glostad-sofa-with-chaise-knisa-dark-gray-s69578602/", "image": "https://www.ikea.com/us/en/images/products/glostad-sofa-with-chaise-knisa-dark-gray__1577736_pe1033483_s5.jpg", "contextual_image": "https://www.ikea.com/us/en/images/products/glostad-sofa-with-chaise-knisa-dark-gray__1235200_pe917305_s5.jpg", "price": 249, "currency": "USD", "price_type": "regular", "original_price": null, "discount_percent": null, "member_price": null, "member_program": null, "member_discount_percent": null, "lowest_previous_price": null, "price_valid_from": null, "price_valid_to": null, "price_disclaimer": null, "price_unit": null, "price_basis": "per_item", "pack_quantity": null, "quantity": null, "unit": null, "in_store_offer": null, "low_price_item": false, "online_sellable": true, "last_chance": false, "is_new": false, "top_seller": false, "rating": 3.5, "rating_count": 37, "rating_scale": 5, "colours": [ { "id": "10028", "name": "gray", "hex": "949494" } ], "category_path": [ { "key": "700640", "name": "Sofas & armchairs" }, { "key": "fu003", "name": "Sofas & sectionals" }, { "key": "47388", "name": "Sofas with chaise lounge" } ], "product_area": "Sofas", "home_furnishing_business": "Living room seating", "variant_count": 0, "min_order_quantity": null, "energy_class": null } ], "count": 24, "total_results": 700, "page": 1, "page_size": 24, "page_count": 30, "filters_available": [ { "parameter": "f-type", "name": "Type", "kind": "values", "selected": false, "values": [ { "id": "Armchair", "name": "Armchair", "count": 47, "selected": false }, { "id": "Sofa", "name": "Sofa", "count": 37, "selected": false }, { "id": "Loveseat", "name": "Loveseat", "count": 31, "selected": false } ] }, { "parameter": "f-price-buckets", "name": "Price", "kind": "values", "selected": false, "values": [ { "id": "PRICE_0_20000", "name": "$0.00 - 199.99", "count": 251, "selected": false }, { "id": "PRICE_20000_40000", "name": "$200.00 - 399.99", "count": 147, "selected": false }, { "id": "PRICE_40000_60000", "name": "$400.00 - 599.99", "count": 90, "selected": false } ] }, { "parameter": "f-measurement-buckets", "name": "Size", "kind": "values", "selected": false, "values": [ { "id": "WIDTH_0_40", "name": "0 - 39 \"", "group": "Width", "count": 150, "selected": false }, { "id": "WIDTH_40_60", "name": "40 - 59 \"", "group": "Width", "count": 65, "selected": false }, { "id": "WIDTH_60_80", "name": "60 - 79 \"", "group": "Width", "count": 63, "selected": false } ] } ], "sort_options": [ "relevance", "price_asc", "price_desc" ], "sort_applied": "relevance", "filters_applied": {}, "filters_not_applied": [], "country": "us", "language": "en", "currency": "USD", "query": "sofa" } }
How the IKEA API works
IKEA is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Track an IKEA product's price and stock in any country, with the right price in the right field
IKEA puts the IKEA Family price where the price normally is, prices some products per pack, and lists a foreign item number as out of stock everywhere. Three calls give a record you can trust.
{"query": "bookcase", "country": "us"}Rows with item_no, price, member_price, original_price with its end date, price_basis and in_store_offer. Take item_no.
{"product_id": "20522046", "country": "us"}The full record: 79.00 USD online, the in-store-only IKEA Family offer as text, measurements, packages with weights, materials, assembly instructions. Two credits.
{"product_id": "20522046", "country": "us"}Every US store that carries it, with quantity, status and restock dates; stores that do not stock it are counted, not listed.
A product record with the online price, the member price and any reduction in separate fields, plus stock per store - in any of 50 countries, four credits for the three calls.
curl -X POST https://api.reefapi.com/ikea/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"sofa"}'{
"ok": true,
"data": { … },
"meta": {
"api": "ikea",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}IKEA hides the IKEA Family price in the price field - the API returns both prices, labelled
This is the one thing to know before you build an IKEA price tracker. On a product with an IKEA Family price, the number IKEA's own data puts in the price slot is the MEMBER price, and the regular price sits next to it as the 'previous' price; IKEA's page even advertises the member price as the offer price. The API returns the regular price as price and the Family price as member_price, and treats every other kind of reduction separately. Measured on 2026-09-15.
| IKEA product | price | member_price / original_price | What kind of price it is |
|---|---|---|---|
| GÖRSNYGG storage case (India) | 299 INR | member_price 149 INR | IKEA Family price, valid to 2026-09-30 |
| POÄNG armchair (United Kingdom) | 69 GBP | original_price 80 GBP | New lower price, valid to 2027-02-23 |
| MALM bed frame 140x200 (Saudi Arabia) | 599 SAR | original_price 799 SAR | Limited-time offer, 10 Sep - 4 Oct 2026 |
| LISABO chair (Poland) | 299 PLN | original_price 349 PLN | New lower price; lowest price of the previous 30 days 349 PLN |
| BILLY bookcase (United States) | 79.00 USD | in_store_offer 'In-store only price $65.00' | In-store only, IKEA Family members only - never the online price |
| TEODORES chair (Poland) | 516 PLN | price_basis per_pack, pack_quantity 4 | The price is for a pack of 4 chairs |
A search row and the full product record agreed on price, previous price, member price, price type and price basis on 70 of 70 products across 50 countries.
Which country, which price, which item number, and what IKEA does not publish
50 IKEA country stores, one item number per product per market. Measured on 2026-09-15: 82 searches, 73 product reads and 23 stock reads, all successful; search and product read in all 50 countries; 70 products compared between search and product record; 10 products checked against two other IKEA data sources. Four of these lines go against us.
country picks the store (us, gb, de, fr, se, jp, au, ca, sa, in, mx, cl … 50 in total) and language picks among the languages IKEA publishes there. On 2026-09-15 a search and a product read succeeded in every one of the 50, and every row's currency was that country's. IKEA Ukraine lists no products online and returns MARKET_UNAVAILABLE.
IKEA's own data puts the Family price in the price slot. The API returns price as the regular price and member_price as the Family price (GÖRSNYGG in India: 299 and 149 INR). Reductions come with their kind and dates: new lower price, limited-time offer, clearance, and in the EU the lowest price of the previous 30 days.
10 of 10 products matched two separate IKEA data sources on price, previous price, name, design, rating, rating count and currency, in Germany, the UK, the US, Japan, France, the UAE, Austria, Australia and Belgium. Search rows and product records agreed on 70 of 70 products.
price_basis per_item, per_pack (pack_quantity: glasses in 4, 6 or 8 packs; chairs in a 4-pack) or per_quantity (quantity and unit: a 0.5 kg food pack). Measurements and package sizes are in the market's units - inches and pounds in the US - with the unit returned beside each value.
Only stores that carry the product are listed, with quantity, status, restock dates and aisle and bin. An item number the country does not sell comes back in not_sold_here rather than as out of stock in every store.
Across 70 products in 50 countries and 9 departments: title, price, images, description, packages, materials and care instructions on 70 of 70, measurements on 68, designer on 67, assembly documents on 62.
IKEA publishes no EAN or GTIN, no price history beyond the running reduction, and delivery prices only for a postcode. Online delivery stock is a status, not a quantity.
The same product can have another item number in another market (FADO: 70096377 in the US, 80096372 elsewhere). item_no_global is returned, but an item number from one country can be NOT_FOUND in another.
The rating and review count are IKEA's worldwide figures, while the review list is local by default (a German sofa: 156 reviews worldwide, 17 written in Germany). On 2 of 70 products IKEA's listing showed a rating 0.1 higher than its own product page; product/detail returns the page's figure.
IKEA stores that run on their own websites (Türkiye, Greece, China, Iceland, Indonesia and a few more) are not included. There is no dedicated deals action yet: reductions are found through search and category rows, which carry price_type and the last_chance_only filter.
What people build with IKEA
The jobs this data is most often used for.
endpoints
credits per call
Price trackers follow IKEA prices in 50 countries with the regular price, the IKEA Family price and reductions stored separately, each with its end date.
Furniture resellers and interior designers check store stock with quantities and restock dates before sending a client to a store.
Marketplaces and planning tools pull measurements, package sizes and weights, materials and the articles in a combination to calculate shipping and fit.
Retail analysts compare the same product's price across countries, with pack prices flagged so a 4-chair pack is never compared with a single chair.
What IKEA data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 252 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/ikea/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"sofa"}'import requests
r = requests.post(
"https://api.reefapi.com/ikea/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "sofa"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up IKEA.
Get a free key →Which price should I store - price or member_price?▾
Store both, and label them. price is what a shopper without IKEA Family pays online; member_price is the IKEA Family price and is null when IKEA runs none on that product. IKEA's own data puts the Family price where the price normally is - GÖRSNYGG in India reads 149, while the regular price is 299 - so a tracker that copies that number records the member price as the price. The API returns price 299 and member_price 149.
What is the difference between original_price, lowest_previous_price and in_store_offer?▾
original_price is the previous price of a running reduction, and price_type says which kind: new_lower_price (a permanent cut, POÄNG 69 from 80 GBP), time_restricted_offer (MALM 599 from 799 SAR, 10 September to 4 October) or discontinued (clearance while supply lasts). lowest_previous_price is the EU disclosure of the lowest price in the 30 days before the reduction (LISABO 349 PLN). in_store_offer is a price IKEA offers only in its stores - BILLY in the US is 79.00 online with an in-store IKEA Family price of 65.00 - and it never replaces price.
Why does a price sometimes cover more than one item?▾
Because IKEA prices some products per pack. price_basis tells you what the price buys: per_item, per_pack with pack_quantity (TEODORES chairs in Poland, 516 PLN for 4; glasses sold as 4, 6 or 8 packs) or per_quantity with quantity and unit for food sold by amount (a 0.5 kg jar). On IKEA's food range in Sweden, Germany and the UK the stated amount matched the product's own size on 303 of 309 products; the other 6 were two pickled herring jars priced on their 0.14 and 0.15 kg drained weight while the label says 250 g - both numbers are returned. No price per kg is invented.
Which countries and languages are covered?▾
Every IKEA country store on ikea.com: 50 countries across Europe, North and South America, the Middle East, Africa and Asia-Pacific, each in its own currency (USD, EUR, GBP, SEK, JPY, SAR, INR, CLP …). On 2026-09-15 a search and a product read succeeded in all 50 with the country's currency. Countries with several languages take a language parameter (Belgium nl, fr or en; Spain es, ca, eu, gl or en). IKEA stores that run on other websites - Türkiye, Greece, China, Iceland, Indonesia and a few more - are not included, and IKEA Ukraine publishes no products online, so it returns MARKET_UNAVAILABLE.
How accurate is store stock?▾
product/availability returns every store that carries the product, with the quantity IKEA publishes for that store, a stock status, expected restock dates and the aisle and bin to pick it from. Stores that do not stock the product are left out rather than shown as out of stock, and counted in units_not_in_range. If an item number is not sold in the country at all - the US BILLY number asked in Germany, where BILLY has its own number - it comes back in not_sold_here instead of looking 'out of stock everywhere'. On 2026-09-15, 20 of 20 stock reads across four countries succeeded.
Do item numbers work across countries?▾
Mostly, but not always: the same product can carry a different item number per market (the FADO lamp is 70096377 in the US and 80096372 elsewhere), which is why rows return item_no and item_no_global. Use an item number that a listing in the same country returned. A product URL from any ikea.com store works too and sets country and language by itself.
Do the filters and sorting really apply?▾
Yes. For sofas in Germany on 2026-09-15: 278 results unfiltered, 190 in beige (every row beige), 12 in the 0-199.99 EUR band. Price sorting was in order on every page checked, and page 2 never repeated page 1. The filter ids come back in filters_available with their counts; a filter a listing does not have is listed in filters_not_applied instead of being silently ignored.
What does IKEA NOT publish?▾
No EAN or GTIN barcode, no price history beyond the previous price of a running reduction, no delivery price (it depends on a postcode), no per-store prices, and no stock quantity for online delivery - only a status. The rating summary counts reviews from every country, while the review list is local by default, so they differ; products without reviews return rating null, never 0. Assembly documents were published on 62 of 70 sampled products and a guarantee on 3 of 70.
What is the IKEA API?▾
IKEA API is a ReefAPI endpoint group for ikea prices, stock and product specs in 50 countries, with the ikea family price kept separate. It returns live JSON through POST requests under /ikea/v1.
Is the IKEA API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. IKEA calls use the same shared credit balance as every other ReefAPI engine.
Do I need an IKEA login or account?▾
No login to IKEA is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the IKEA data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the IKEA API use?▾
IKEA actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call IKEA from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call ikea actions with the same key, credit pool and JSON envelope used by normal REST requests.
91 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling IKEA, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-15.