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
}
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
}
I'm the author of the scraper. The index uses only IKEA's public online prices.

Top comments (2)
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.
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.