DEV Community

Colton
Colton

Posted on

The IKEA Price Index: the same BILLY costs up to 3x more depending on where you live

Identical IKEA products, priced in 41 countries, October 2026.

IKEA sells the same products, with the same item numbers, almost everywhere in the world. That makes it a natural price index, a furniture version of The Economist's Big Mac Index. I collected IKEA's own online prices in 41 countries for 35 of its best-known products (BILLY, KALLAX, POÄNG, MALM, LACK, HEMNES, ALEX…), converted them to US dollars and compared each country with the median.

The results

Cheapest: Germany (index 86), the Philippines (86), Romania (89), China (90) and the Netherlands (90).

Most expensive: Mexico (172), Saudi Arabia (159), the United States (128), Norway (126) and the UAE (114).

The United States comes out as the third most expensive of 41 countries, and that understates it: US prices are shown before sales tax, while European prices include VAT of 19–27%.

Same product, very different prices

Product Cheapest Most expensive US
KALLAX shelf unit, white Romania $54 Mexico $150 $80
POÄNG armchair, birch/Knisa beige Romania $63 Mexico $161 $149
ALEX drawer unit, white Poland $61 Saudi Arabia $172 $95
HEMNES daybed with 3 drawers Norway $257 Mexico $803 $449
FRIHETEN sleeper sectional Thailand $355 United States $999 $999
LACK wall shelf, white Germany $4.47 Australia $11.24 $7.99

Method

  • Products: 35 items sold in at least 30 of the 41 countries, matched by IKEA's global item number. Matching by item number means the same size and color, not just the same product family.
  • Prices: the price shown on IKEA's website in each country on 25 October 2026, converted to USD at that day's exchange rates.
  • Index: for each item, every country's price divided by the median price across countries. A country's index is the median of those ratios × 100, so 100 means "typical", 128 means 28% above typical.
  • Caveats: prices include VAT in Europe and most of Asia but exclude sales tax in the US and Canada; delivery costs, promotions and in-store prices aren't included; exchange rates move daily.

Reproduce it

The data was collected with the IKEA Products & Prices Scraper, which I built on Apify. Pick countries and products, and it returns every product's local price plus a cross-country comparison in USD:

{
  "queries": ["billy", "kallax", "poang"],
  "countries": ["US", "DE", "GB", "MX", "JP", "SE"],
  "comparePrices": true
}
Enter fullscreen mode Exit fullscreen mode

Each comparison row lists the cheapest and most expensive country and the spread:

{
  "type": "price-comparison",
  "name": "KALLAX",
  "productType": "Shelf unit",
  "cheapestCountry": "RO",
  "cheapestPriceUsd": 54.24,
  "mostExpensiveCountry": "MX",
  "mostExpensivePriceUsd": 149.82,
  "spreadPct": 176.2
}
Enter fullscreen mode Exit fullscreen mode

I'm the author of the scraper. The index uses only IKEA's public online prices.

Top comments (2)

Collapse
 
lucas_him_f7e05624dd9cc96 profile image
Lucas Him •

Matching global item numbers avoids the family-name trap. For repeat snapshots, I would retain local currency prices and the exact FX date as separate columns, then recompute a constant-FX version of the index. That would distinguish an IKEA price change from a currency move without rewriting the original observations.

Collapse
 
devcolton profile image
Colton •

Good point, and it's in now: each row carries the local price and currency as before, plus two new fields, fxRate (units of local currency per USD) and fxDate (the date of that rate). So you can keep the raw local prices from every snapshot and recompute the index at a constant rate later, which separates an IKEA price change from a currency move. This snapshot used the 25 Oct rates.