ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Ikea11 min readNov 13, 2026

How to Get IKEA Prices by Country With an API (Same Article Number, Every Market)

Use Scavio's IKEA API: one compare call prices an IKEA article number in up to 10 countries, and one items call prices 100 article numbers in a country.

Scavio Team

Nov 13, 2026

Try the IKEA API free
scavio
Furniture / Price comparison
Ikea

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:

Bash
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:

JSON
{
  "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

Bash
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:

JSON
{
  "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:

Bash
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:

JSON
{
  "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.

CountryOf 100 German article numbers soldCurrency
Germany100EUR
Austria, Netherlands89EUR
Sweden, Poland83SEK, PLN
Belgium, Estonia, Finland82EUR
France, Latvia, Slovakia81EUR
Portugal, Spain80EUR
Croatia, Italy, Lithuania, Slovenia79EUR
Ireland76EUR
United Kingdom75GBP
United States38USD
Japan0JPY

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:

Bash
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:

JSON
{
  "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

Bash
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:

JSON
{
  "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

Bash
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:

JSON
{
  "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:

Bash
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"}'
JSON
{
  "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

Bash
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"}'
JSON
{
  "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

Bash
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:

JSON
{
  "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

Python
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

EndpointWhat it returnsCreditsCost per 1,000 calls on Growth
/api/v1/ikea/searchProducts for a keyword, 55 sites, sorts, filters, facets1$1.00
/api/v1/ikea/productOne product: price, measurements, packages, assembly PDFs, variants1$1.00
/api/v1/ikea/compareOne article number in 2 to 10 of 50 countries1 per country$1.00 per country
/api/v1/ikea/itemsUp to 100 article numbers on one market1$1.00
/api/v1/ikea/dealsOne of 10 deal lists: new lower price, Family price, last chance ...1$1.00
/api/v1/ikea/categoryOne category's products, with sorts and filters1$1.00
/api/v1/ikea/categoriesThe market's category tree or one subtree1$1.00
/api/v1/ikea/suggestionsSearch-box suggestions for a partial query1$1.00
/api/v1/ikea/storesStores with hours, filtered by text or sorted by distance1$1.00
/api/v1/ikea/stockStock level of up to 100 article numbers at one store1$1.00
/api/v1/ikea/reviewsRating, sub-ratings and the 20 newest reviews1$1.00
/api/v1/ikea/as-isOne store's As-is second-hand offers1$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

  1. Create a Scavio account: 50 free credits, no card, enough for 50 items calls of up to 100 article numbers each.
  2. Find the article numbers you care about with search, or take them from the IKEA product URLs.
  3. Price them with one items call per country, or one compare call per product.
  4. Store each run with its date, and read price_tag and previous_price for IKEA's own cuts.
  5. 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.

IKEA prices by country

  • One article number in up to 10 countries per call
  • 100 article numbers per country for 1 credit
  • Stock by store, reviews, deals and As-is, 1 credit each
Try the IKEA API free

50 free credits, no credit card

On this page

  1. Step 1: Find the article number
  2. Step 2: Price one article number in up to 10 countries
  3. Step 3: Price 100 article numbers in one country
  4. Step 4: Read the previous price and the price tags

Related articles

View all
  • scavio
    Furniture / Price comparison
    Ikea
    7 Best IKEA Price Comparison APIs in 2026: Scavio Prices One Article Number Across 50 IKEA Countries, With the Pre-Cut Price Where IKEA Shows It
  • scavio
    Furniture / Price comparison
    Ikea
    Is IKEA Cheaper in Germany? Than Austria Yes, Than Lithuania No: We Priced 100 IKEA Best Sellers in 4 Countries
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

Ask AI about Scavio

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy