Real-time access to IKEA product data: 8,000+ products with full specifications, pricing, category trees, store locations, and availability across eight countries. Clean JSON over a normal REST API, so there is no scraping, no proxy rotation, and no HTML parsing to maintain.
Countries covered: US, Canada, UK, Germany, France, Italy, Sweden, Switzerland.
Built and maintained by Happy Endpoint. Not affiliated with, endorsed by, or connected to IKEA.
- Subscribe on RapidAPI: https://rapidapi.com/happyendpoint/api/ikea-api-pro
- Product page: https://happyendpoint.com/library/ikea-pro
- Hosted docs: https://happyendpointhq.github.io/ikea-api/
- Product search by keyword or category
- Filter metadata for both search modes, so you can build faceted UIs
- Full product records with specifications and pricing
- Category tree
- Store locations
- Country list, for switching regional catalogues
- Real-time availability
Subscribe on RapidAPI. There is a free tier: https://rapidapi.com/happyendpoint/api/ikea-api-pro
curl "https://ikea-api-pro.p.rapidapi.com/product-search-by-keyword?keyword=desk&countryCode=us" \
-H "x-rapidapi-host: ikea-api-pro.p.rapidapi.com" \
-H "x-rapidapi-key: YOUR_RAPIDAPI_KEY"import os
import requests
HOST = "ikea-api-pro.p.rapidapi.com"
HEADERS = {
"x-rapidapi-host": HOST,
"x-rapidapi-key": os.environ["RAPIDAPI_KEY"],
}
def get(path, **params):
r = requests.get(
f"https://{HOST}{path}",
params={k: v for k, v in params.items() if v is not None},
headers=HEADERS,
timeout=30,
)
r.raise_for_status()
return r.json()
desks = get("/product-search-by-keyword", keyword="desk", countryCode="us")
countries = get("/countries")const HOST = 'ikea-api-pro.p.rapidapi.com';
async function get(path, params = {}) {
const url = new URL(`https://${HOST}${path}`);
for (const [k, v] of Object.entries(params)) {
if (v != null) url.searchParams.set(k, v);
}
const res = await fetch(url, {
headers: {
'x-rapidapi-host': HOST,
'x-rapidapi-key': process.env.RAPIDAPI_KEY,
},
});
if (!res.ok) throw new Error(`IKEA API ${res.status}`);
return res.json();
}
const desks = await get('/product-search-by-keyword', { keyword: 'desk', countryCode: 'us' });Base URL: https://ikea-api-pro.p.rapidapi.com
| Endpoint | Returns |
|---|---|
GET /product-search-by-keyword |
Products matching a search term |
GET /product-search-by-keyword-filters |
Available filters for a keyword search |
GET /product-search-by-category |
Products within a category |
GET /product-search-by-category-filters |
Available filters for a category search |
GET /product-details |
Full record for a single product |
| Endpoint | Returns |
|---|---|
GET /categories |
Category tree |
GET /countries |
Supported countries and their codes |
GET /stores |
Store locations |
GET /health |
Service health |
The two -filters endpoints matter more than they look. They return the facets
available for a given search, which is what lets you build a filter sidebar that
matches the real catalogue rather than a hardcoded guess.
RapidAPI hosts an MCP server, so you can query this API from an AI assistant without writing any code:
{
"mcpServers": {
"IKEA": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.rapidapi.com",
"--header",
"x-api-host: ikea-api-pro.p.rapidapi.com",
"--header",
"x-api-key: YOUR_RAPIDAPI_KEY"
]
}
}
}| Client | Config path |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | ~/.cursor/mcp.json |
| Claude Code | .mcp.json in your project root |
- Furniture and home decor storefronts, including affiliate sites
- Interior design tools: room planners, mood boards, virtual staging, AR apps
- Price monitoring, including cross-country price comparison
- Stock availability dashboards
- Market research on assortment and category depth
- Shopping assistants and recommendation engines
Cross-country price comparison is the use case people underestimate. The same
product carries different prices across the eight supported countries, and
/countries plus countryCode makes that comparison a couple of requests.
No. IKEA does not publish a public product API. This API is built and maintained by Happy Endpoint and is not affiliated with IKEA.
Yes. RapidAPI hosts a free plan with a monthly request quota, enough to prototype against.
Scraping a retailer means maintaining selectors that break on every redesign, rotating proxies, handling bot challenges, and accepting that it may breach the site's terms. This is a REST API returning JSON with a stable contract.
US, Canada, UK, Germany, France, Italy, Sweden, and Switzerland. Call
/countries for the current list and the country codes to pass.
Yes. Query the same product with different countryCode values. Prices,
availability, and sometimes the assortment itself differ by market.
Use /product-search-by-keyword-filters or
/product-search-by-category-filters. They return the facets that actually exist
for that query, rather than making you hardcode them.
Yes. Happy Endpoint sells an IKEA US products dataset of 10,564 products across 933 categories as a one-off CSV. See happyendpoint.com/datasets or email happyendpointhq@gmail.com.
- sephora-api - beauty product data
- priceline-api - hotel, flight, and car rental data
- bayut-api-python-examples - runnable Python patterns that transfer to this API
- bayut-api-postman-collection - our Postman collection format
Happy Endpoint builds and maintains real-time data APIs for property portals, retailers, and marketplaces. All APIs are available on RapidAPI with a free tier.
- Catalogue: happyendpoint.com/library
- Datasets: happyendpoint.com/datasets
- Documentation: docs.happyendpoint.com
- Contact: happyendpointhq@gmail.com
MIT. See LICENSE.