To get IKEA prices by country, use Scavio's IKEA API with the product's 8-digit article number. POST /api/v1/ikea/compare returns that article's price in up to 10 of the 50 ikea.com countries in one call, each in its own currency with the previous price where IKEA shows a cut, for 1 credit per country. POST /api/v1/ikea/items returns up to 100 article numbers on one country for 1 credit, so a 100-item basket in 16 euro countries is 16 calls, $0.016 on the Growth plan.
IKEA prices every market on its own, and since September 1, 2026 it has been cutting prices across Europe, with "the selection of products and price decrease" differing "from market to market" (Ingka Group). The article number is what ties one product together across those markets. Every response below is a trimmed capture from November 13, 2026: the KALLAX product page and the category tree come from our playground samples captured that day, the rest from live calls between 18:21 and 18:29 UTC. Prices are numbers in the market's currency: 49.99 with "currency": "EUR" is €49.99. Images are trimmed from every sample.
Step 1: Find the article number
The article number is the 8 digits at the end of every IKEA product URL (.../kallax-regal-weiss-80275887/), shown on the price tag as 802.758.87. To find one by name, search a market:
curl -s https://api.scavio.dev/api/v1/ikea/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "blåhaj", "country": "de", "page_size": 6}'IKEA Germany returned 2 products. The first, with category path and colors cut:
{
"query": "blåhaj",
"total": 2,
"page": 1,
"count": 2,
"country": "de",
"language": "de",
"currency": "EUR",
"items": [
{
"item_no": "30373588",
"item_no_global": "30373588",
"is_combination": false,
"name": "BLÅHAJ",
"type_name": "Stoffspielzeug",
"design": "Hai",
"measure_text": "100 cm",
"url": "https://www.ikea.com/de/de/p/blahaj-stoffspielzeug-hai-30373588/",
"price": 27.99,
"previous_price": null,
"price_tag": "none",
"rating": 4.9,
"rating_count": 3065,
"online_sellable": true
}
]
}Search takes query in any language the market serves, country (default us), language on multi-language markets (be nl / fr / en, ch de / fr / it / en ...), page and page_size up to 100, seven sorts and filters for color, price range, category, new, last chance, IKEA Family price and best seller, plus facets for everything else. is_combination: true marks a combination with its own number. 1 credit. For a search box, POST /api/v1/ikea/suggestions with {"query": "kall", "country": "de"} returned 8 suggestions, from "kallax regal" to the KALLAX series category, also 1 credit.
Step 2: Price one article number in up to 10 countries
curl -s https://api.scavio.dev/api/v1/ikea/compare \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_no": "80275887", "countries": ["de", "lt", "at", "pt", "nl", "us"]}'KALLAX 77x147 cm in six countries, three of them shown:
{
"item_no": "80275887",
"count": 6,
"found_count": 5,
"markets": [
{
"country": "de",
"language": "de",
"currency": "EUR",
"found": true,
"name": "KALLAX",
"type_name": "Regal",
"design": "weiß",
"price": 49.99,
"previous_price": 59.99,
"price_tag": "new_lower_price",
"url": "https://www.ikea.com/de/de/p/kallax-regal-weiss-80275887/"
},
{
"country": "lt",
"language": "lt",
"currency": "EUR",
"found": true,
"name": "KALLAX",
"type_name": "Lentyna",
"design": "balta",
"price": 49.99,
"previous_price": null,
"price_tag": "none",
"url": "https://www.ikea.com/lt/lt/p/kallax-lentyna-balta-80275887/"
},
{
"country": "us",
"language": "en",
"currency": "USD",
"found": false,
"name": null,
"type_name": null,
"design": null,
"price": null,
"previous_price": null,
"price_tag": null,
"url": null
}
],
"errors": [],
"note": "Prices are in each market's own currency and are not converted. Some markets (us, ca, jp, au, kr, in, my, sg, ph ...) sell the same product under a different article number, so found is false there."
}Austria showed €49.99 (was 59.99), Portugal €49.99 (was 55) and the Netherlands €49.99 (was 69.99). IKEA US sells KALLAX under its own number, so found is false; search the US site for it. Compare takes 2 to 10 of the 50 ikea.com countries and costs 1 credit per country that answers, found: false included; a country listed in errors is not charged. This call was 6 credits. The same call for BLÅHAJ (30373588) in 10 countries returned €14.99 in Lithuania, €19.99 in Spain, €27.99 in Germany, GBP 25 in the UK and SEK 299 in Sweden.
Step 3: Price 100 article numbers in one country
For a basket, one items call per country beats one compare call per product:
curl -s https://api.scavio.dev/api/v1/ikea/items \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_nos": ["49617713", "90349326", "49502665", "79574892", "30449908", "30373588", "20611108"], "country": "lt"}'Seven names in Lithuania: six found, and the PAX / FORSAND wardrobe combination, which Lithuania does not sell under that number, in not_found. One item shown:
{
"count": 6,
"not_found": ["49502665"],
"country": "lt",
"language": "lt",
"currency": "EUR",
"items": [
{
"item_no": "30373588",
"item_no_global": "30373588",
"is_combination": false,
"name": "BLÅHAJ",
"type_name": "Minkštasis žaislas",
"design": "ryklys",
"measure_text": "100 cm",
"url": "https://www.ikea.com/lt/lt/p/blahaj-minkstasis-zaislas-ryklys-30373588/",
"price": 14.99,
"previous_price": null,
"price_tag": "none",
"price_valid_from": null,
"price_valid_to": null,
"rating": null,
"rating_count": null,
"online_sellable": true,
"availability": {
"store": null,
"home_delivery": { "status": "in_stock_high", "text": "Šią prekę galime jums pristatyti" },
"click_collect": null
}
}
]
}item_nos takes 1 to 100 numbers as a list or a comma-separated string; dots are fine (802.758.87). We sent the first 100 numbers of IKEA Germany's best-seller list to 21 countries this way, 21 credits: each euro country sold 76 to 89 of them, the UK 75, Sweden and Poland 83, IKEA US 38 and IKEA Japan none. The Estonian, Latvian and Lithuanian answers carried no ratings. Items covers the 50 ikea.com countries and ikea.cn. 1 credit.
| Country | Of 100 German article numbers sold | Currency |
|---|---|---|
| Germany | 100 | EUR |
| Austria, Netherlands | 89 | EUR |
| Sweden, Poland | 83 | SEK, PLN |
| Belgium, Estonia, Finland | 82 | EUR |
| France, Latvia, Slovakia | 81 | EUR |
| Portugal, Spain | 80 | EUR |
| Croatia, Italy, Lithuania, Slovenia | 79 | EUR |
| Ireland | 76 | EUR |
| United Kingdom | 75 | GBP |
| United States | 38 | USD |
| Japan | 0 | JPY |
Step 4: Read the previous price and the price tags
IKEA marks a cut with a tag, and the API passes it through. POST /api/v1/ikea/deals lists one of ten deal lists for a market:
curl -s https://api.scavio.dev/api/v1/ikea/deals \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "new_lower_price", "country": "de", "page_size": 5}'IKEA Germany's new-lower-price list had 1,028 items. KALLAX, with the badge and variants cut:
{
"type": "new_lower_price",
"total": 1028,
"page": 1,
"page_size": 5,
"total_pages": 206,
"country": "de",
"currency": "EUR",
"items": [
{
"item_no": "80275887",
"name": "KALLAX",
"type_name": "Regal",
"measure_text": "77x147 cm",
"price": 49.99,
"previous_price": 59.99,
"price_tag": "new_lower_price",
"price_tag_text": "Neuer niedriger Preis",
"price_valid_from": "2026-09-01",
"price_valid_to": "2027-08-31",
"rating": 4.7,
"rating_count": 8241
}
]
}price_tag is one of new_lower_price (a cut, with previous_price), time_restricted_offer (a limited-time reduced price with previous_price and dates, seen in Thailand), family_price (price is the IKEA Family member price and previous_price the regular one, so use previous_price for what everyone pays), lower_price_in_store, new_product, discontinued or none. The other lists are new_products, family_price, last_chance, lowest_price, top_seller, limited_edition, time_restricted, in_store_price_only and reduced_price_offer. top_seller returned IKEA Germany's 275 best sellers, the list behind our Germany vs Lithuania comparison. 1 credit.
Step 5: Read one product
curl -s https://api.scavio.dev/api/v1/ikea/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_no": "80275887", "country": "de"}'KALLAX on IKEA Germany, with description, images, care text and documents cut:
{
"item_no": "80275887",
"article_number": "802.758.87",
"name": "KALLAX",
"full_name": "KALLAX Regal - weiß 77x147 cm",
"price": 49.99,
"previous_price": 59.99,
"price_valid_from": "2026-09-01",
"price_valid_to": "2027-08-31",
"family_price": null,
"currency": "EUR",
"dimensions": { "width": "76.5 cm", "depth": "39 cm", "height": "146.5 cm", "weight": null },
"rating": 4.7,
"rating_count": 8241,
"availability_online": "in_stock",
"price_tag": "new_lower_price",
"measurements": [
{ "name": "Breite", "value": "76.5 cm" },
{ "name": "max. Belastung/Regalboden", "value": "13 kg" }
],
"packaging": {
"number_of_packages": 1,
"packages": [
{
"item_no": "80275887",
"dimensions": { "width": { "text": "41 cm", "value": 41 }, "height": { "text": "16 cm", "value": 16 }, "length": { "text": "150 cm", "value": 150 } },
"weight": { "text": "20.30 kg", "value": 20.3 },
"quantity": 1
}
]
},
"assembly_pdfs": [
{ "label": "KALLAX Regal", "url": "https://www.ikea.com/de/de/assembly_instructions/kallax-regal-weiss__AA-2703433-1-2.pdf", "article_number": "802.758.87" }
],
"designer": "Tord Björklund",
"return_policy_days": 365,
"detail_level": "full",
"country": "de",
"language": "de"
}Product also returns materials, care, safety notes, variants with their prices, sub-ratings and the 3 newest reviews, and takes a product url instead of item_no. It covers 55 sites; ikea.cn and the franchise sites (Puerto Rico, the Dominican Republic, the islands, Iceland) return fewer fields. A product page took 7 to 11 seconds in our run and can take up to about 100, so set a long timeout. 1 credit.
Step 6: Find stores and check stock
curl -s https://api.scavio.dev/api/v1/ikea/stores \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country": "de", "query": "Berlin"}'IKEA Germany lists 55 stores and points; "Berlin" matched 4. Berlin-Spandau, with the weekly hours cut to one day:
{
"store_id": "394",
"name": "IKEA Berlin - Spandau",
"display_name": "Berlin-Spandau",
"type": "store",
"address": { "street": "Gewerbehof 10", "city": "Berlin", "zip": "13597", "timezone": "Europe/Berlin" },
"latitude": 52.52811168,
"longitude": 13.21462368,
"hours": {
"normal": [{ "day": "MON", "open": "10:00", "close": "20:00" }],
"closed": [{ "date": "2026-12-25", "reason": "1. Weihnachtstag" }]
},
"restaurant_hours": [{ "day": "MON", "open": "10:00", "close": "19:00" }]
}Then stock for up to 100 article numbers at that store:
curl -s https://api.scavio.dev/api/v1/ikea/stock \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_nos": ["80275887", "00263850", "30373588", "49617713"], "store_id": "394", "country": "de"}'{
"store": { "id": "394", "name": "Berlin-Spandau" },
"count": 4,
"items": [
{
"item_no": "80275887",
"name": "KALLAX",
"price": 49.99,
"store_availability": { "status": "in_stock_high", "text": "Verfügbar in Berlin-Spandau" }
},
{
"item_no": "49617713",
"name": "POÄNG",
"price": 99,
"store_availability": { "status": "out_of_stock", "text": "Nicht verfügbar in Berlin-Spandau" }
}
],
"not_found": []
}KALLAX, BILLY and BLÅHAJ were in stock, the POÄNG armchair out of stock. The status is a level (in_stock_high, in_stock_low, out_of_stock), not a unit count; IKEA does not publish quantities. Add zip for home-delivery availability. Stores and stock cover the 50 ikea.com countries, 1 credit each; store_id also works as a filter on search, category and deals.
Step 7: Read reviews
curl -s https://api.scavio.dev/api/v1/ikea/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_no": "80275887", "country": "de"}'{
"item_no": "80275887",
"rating": 4.7,
"rating_count": 8241,
"secondary_ratings": [
{ "id": "ease_of_assembly", "label": "Einfachheit des Zusammenbaus", "value": 4.7 },
{ "id": "value_for_money", "label": "Preis-Leistungs-Verhältnis", "value": 4.6 }
],
"count": 20,
"reviews": [
{
"title": "Vielseitig einsetzbar",
"text": "Super verarbeitet, super einfach zum aufbauen einfach nur schön!!",
"rating": 5,
"date": "2026-11-12T20:49:37Z",
"author": "Sylvia",
"country": null
}
]
}Reviews returns the 20 newest reviews the product page shows, here from October 4 to November 12, 2026, with five sub-ratings and highlighted reviews with their country. There is no paging, sort or star filter. rating and rating_count are what that market's site shows: many markets share one pool (KALLAX: 8,241 in Germany, Spain and Sweden), others have their own (France 2,760, Italy 1,887), and some show none (Estonia, Latvia, Lithuania, Israel, Iceland). 1 credit.
Step 8: Browse a category and the category tree
POST /api/v1/ikea/category with {"category_id": "10382", "country": "de", "page_size": 5, "sort": "price_asc"} returned IKEA Germany's bookcases category, "Bücherregale", 154 products cheapest first, starting with a BILLY extra shelf at €5 and a BILLY shelf board at €7.50 (was €10, cut from October 1). It takes the search sorts and filters and also accepts a category url. POST /api/v1/ikea/categories returns a market's whole menu tree, 1,570 categories with id, name, url and children on IKEA US, or one subtree with parent_id. 1 credit each.
Step 9: List a store's As-is offers
curl -s https://api.scavio.dev/api/v1/ikea/as-is \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "394", "country": "de", "page_size": 5}'Berlin-Spandau had 210 As-is offers: ex-display, returned and discontinued items at reduced prices. The first, with the condition text cut:
{
"store_id": "394",
"total": 210,
"total_pages": 42,
"offers": [
{
"title": "VINTERFINT",
"description": "Baumschmuck, 7 cm, versch. Farben",
"article_numbers": ["10604617"],
"currency": "EUR",
"original_price": 4.99,
"min_price": 2.49,
"max_price": 2.49,
"offers": [
{
"offer_id": "117400090311751354",
"price": 2.49,
"condition_code": "BRAND_NEW",
"condition": "Brandneu",
"in_box": false,
"reason_discount": "Auslaufmodell"
}
]
}
]
}As-is covers 13 countries (US, UK, Germany, France, Sweden, Japan, Netherlands, Spain, Italy, Poland, Australia, Switzerland, Austria), up to 48 per page. 1 credit.
Step 10: Build a weekly price table
import requests, datetime, json
API = "https://api.scavio.dev/api/v1/ikea"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
ITEMS = ["80275887", "00263850", "39407070", "89330691", "30373588"]
COUNTRIES = ["de", "at", "nl", "fr", "it", "es", "pt", "lt", "gb", "se"]
def regular(it):
# family_price: price is the member price, previous_price what everyone pays
if it["price_tag"] == "family_price" and it["previous_price"]:
return it["previous_price"]
return it["price"]
today = datetime.date.today().isoformat()
rows = []
for c in COUNTRIES: # one request at a time, 1 credit each
d = requests.post(f"{API}/items", headers=HEADERS, timeout=120,
json={"item_nos": ITEMS, "country": c}).json()["data"]
for it in d["items"]:
rows.append({"date": today, "country": c, "currency": d["currency"],
"item_no": it["item_no"], "price": regular(it),
"previous_price": it["previous_price"], "price_tag": it["price_tag"]})
for no in d["not_found"]:
rows.append({"date": today, "country": c, "item_no": no, "price": None})
with open(f"ikea-prices-{today}.json", "w") as f:
json.dump(rows, f, ensure_ascii=False)Ten countries is 10 credits a run, whether you track 5 article numbers or 100. Run it weekly and keep each file: IKEA's previous price only shows while a cut is current, so your own history is what tells you when a price moved. Retry a 502 after a pause; failed calls are not charged, and a not-found is.
Every IKEA endpoint
| Endpoint | What it returns | Credits | Cost per 1,000 calls on Growth |
|---|---|---|---|
/api/v1/ikea/search | Products for a keyword, 55 sites, sorts, filters, facets | 1 | $1.00 |
/api/v1/ikea/product | One product: price, measurements, packages, assembly PDFs, variants | 1 | $1.00 |
/api/v1/ikea/compare | One article number in 2 to 10 of 50 countries | 1 per country | $1.00 per country |
/api/v1/ikea/items | Up to 100 article numbers on one market | 1 | $1.00 |
/api/v1/ikea/deals | One of 10 deal lists: new lower price, Family price, last chance ... | 1 | $1.00 |
/api/v1/ikea/category | One category's products, with sorts and filters | 1 | $1.00 |
/api/v1/ikea/categories | The market's category tree or one subtree | 1 | $1.00 |
/api/v1/ikea/suggestions | Search-box suggestions for a partial query | 1 | $1.00 |
/api/v1/ikea/stores | Stores with hours, filtered by text or sorted by distance | 1 | $1.00 |
/api/v1/ikea/stock | Stock level of up to 100 article numbers at one store | 1 | $1.00 |
/api/v1/ikea/reviews | Rating, sub-ratings and the 20 newest reviews | 1 | $1.00 |
/api/v1/ikea/as-is | One store's As-is second-hand offers | 1 | $1.00 |
Failed upstream calls are not charged; a not-found is charged. A market outside an endpoint's list answers 400 before anything is charged.
What about an official IKEA API?
There is none to sign up for. IKEA publishes no developer portal or key program for its catalog, and its US Terms and Conditions have no developer section and allow copies of the site's materials "for non-commercial personal use only". IKEA's own stock checker is a consumer page with a store picker. The DIRIGERA and TRADFRI smart-home hubs have a local interface for devices, not product data, and the open-source vrslev/ikea-api-client library was archived by its owner on October 3, 2024.
Getting started
- Create a Scavio account: 50 free credits, no card, enough for 50 items calls of up to 100 article numbers each.
- Find the article numbers you care about with search, or take them from the IKEA product URLs.
- Price them with one items call per country, or one compare call per product.
- Store each run with its date, and read
price_tagandprevious_pricefor IKEA's own cuts. - Try any call first in the playground.
Reference: IKEA API overview · compare docs · items docs · product docs · stock docs · the best IKEA price comparison APIs · is IKEA cheaper in Germany? · how to get OLX listing data · how to get Allegro price data
Frequently asked questions
Does IKEA have an API?
IKEA does not publish a public developer API or key program for its product catalog, prices or store stock, and the IKEA smart-home hubs' local interface is for devices, not products. Scavio's IKEA API returns search results, products, prices by country, deals, store stock, reviews and As-is offers as JSON, 1 credit a call.
Is the IKEA article number the same in every country?
Across most of Europe, largely yes: 76 to 89 of 100 IKEA Germany best sellers were sold under the same 8-digit number in each of 15 other euro countries on November 13, 2026, and 75 in the UK. IKEA US sold 38 of them under the same number and IKEA Japan none, because some markets give the same product their own number. The API lists those numbers in not_found.
Which IKEA countries does the API cover?
Compare, stores, stock, reviews and categories cover the 50 countries on ikea.com. Items, category, deals and suggestions add ikea.cn, 51 in all. Search and product also cover Puerto Rico, the Dominican Republic, the Canary and Balearic islands and Iceland, 55 sites. As-is covers 13 countries. Ukraine, Greece, Cyprus, Bulgaria, Hong Kong, Taiwan, Indonesia and Turkey are not served.
Does the API convert IKEA prices to one currency?
No. Each answer carries the market's own currency and its price including that country's VAT, never converted. Compare euro countries directly, and apply your own exchange rate, with its date, for the others.
Do IKEA's terms allow automated data collection?
IKEA's US Terms and Conditions say users "may not use any robot, spider, other automatic device, or manual process to monitor, copy or scrape any of our web pages or the content contained herein, without the prior express written consent from an authorized executive of IKEA" (effective September 2, 2026). Each IKEA market publishes its own terms. This is not legal advice; check the current terms for your market and use case.