14 KiB
IKEA Furniture Data Import — Research Report
Task: t-05dd7 Date: 2026-02-07 Researcher: researcher role
Executive Summary
There is no official public IKEA API for furniture data. However, there are multiple viable paths to get IKEA product dimensions and 3D models into our room planner. The recommended approach is a tiered strategy: start with a curated hand-built catalog of common IKEA items using known dimensions, with optional GLB model loading for enhanced visuals later.
1. IKEA APIs (Official)
IKEA Has No Public Developer API
IKEA does not offer a public REST/GraphQL API for developers. There is no developer portal, no API keys, no official documentation.
Undocumented Internal Endpoints
IKEA's website uses internal APIs that have been partially reverse-engineered:
| Endpoint | Purpose | Format |
|---|---|---|
sik.search.blue.cdtapps.com/{country}/{lang}/search-result-page?q={query}&size=24&types=PRODUCT |
Product search | JSON |
www.ikea.com/{country}/{lang}/products/{itemNo[5:]}/{itemNo}.json |
Product detail (PIP) | JSON |
api.ingka.ikea.com/cia/availabilities/{country}/{lang}?itemNos={itemNo} |
Stock/availability | JSON |
www.ikea.com/{region}/{country}/iows/catalog/availability/{itemNo} |
Legacy availability (deprecated Dec 2021) | XML |
web-api.ikea.com/{country}/{lang}/rotera/data/exists/{itemNo}/ |
3D model existence check | JSON |
web-api.ikea.com/{country}/{lang}/rotera/data/model/{itemNo}/ |
3D model metadata + CDN URL | JSON |
The Rotera API is most relevant for us — it returns a modelUrl field pointing to the actual GLB file on IKEA's CDN. This is what the Blender IKEA Browser add-on uses internally.
IKEA Kreativ: Their AI-powered room planner at ikea.com/us/en/home-design/ uses AWS infrastructure (API Gateway at ddh79d7xh5.execute-api.us-east-1.amazonaws.com). No public API.
Status: All endpoints are undocumented, unsupported, and may break at any time. Rate limiting and anti-bot measures exist. The IOWS endpoints are deprecated.
Sources: https://sbmueller.github.io/posts/ikea/ | Postman workspace: https://www.postman.com/galactic-shuttle-566922/ikea/overview
Archived Python Client
vrslev/ikea-api-client (GitHub, 1k+ stars) — Python client for IKEA internal APIs supporting cart, search, stock, item info, and 3D models. Archived October 2024 — no longer maintained. MIT license.
- Supported: stock lookup, product search, item specs, 3D model retrieval (
RoteraItemendpoint) - Install:
pip install ikea-api[httpx] - Not recommended for new projects since archived
Source: https://github.com/vrslev/ikea-api-client
npm: ikea-availability-checker (Active)
Ephigenia/ikea-availability-checker — Node.js package for checking IKEA stock across 40+ countries and 400+ stores. Actively maintained.
npm install ikea-availability-checker
# CLI: ikea-availability-checker stock --country us 30457903
Not directly useful for dimensions/models but proves Node.js access to IKEA endpoints is feasible.
Source: https://github.com/Ephigenia/ikea-availability-checker
2. Open Datasets with Dimensions
Best: Hugging Face — IKEA US CommerceTXT (30,511 products)
- Records: 30,511 products across 632 categories
- Fields: Name, SKU, Price, Dimensions (Width/Height/Depth), Materials, Category, Images, URLs
- Format: CommerceTXT v1.0.1 (text-based, parseable) + Parquet (56.5 MB)
- License: CC0 1.0 (Public Domain) — fully usable
- Date: July 15, 2025
- Dimensions: Yes, in the
@SPECSsection (e.g.,Width: 12", Height: 16")
from datasets import load_dataset
dataset = load_dataset("tsazan/ikea-us-commercetxt")
Source: https://huggingface.co/datasets/tsazan/ikea-us-commercetxt
Good: Kaggle — IKEA SA Furniture (2,962 items)
- Records: 2,962 items
- Fields: name, category, price, width (cm), height (cm), depth (cm), designer, description
- Format: CSV
- License: Kaggle dataset terms
- Date: April 2020 (somewhat dated)
- Dimensions: Yes — width, height, depth in centimeters
Source: https://www.kaggle.com/datasets/ahmedkallam/ikea-sa-furniture-web-scraping
Good: GitHub — IKEA Dataset (12,600+ items)
- Records: 12,600+ images with furniture dimensions
- Fields: Name, dimensions (width/length/height cm), material
- Format: ZIP archives + Python scraping script
- Organization: By room (bedroom, bathroom, kitchen, living room, etc.)
- Date: January 2020
Source: https://github.com/valexande/IKEA-Dataset
Reference: Dimensions.com — IKEA Collection
- Content: Dozens of IKEA products with precise dimensions + technical drawings
- Formats: DWG, SVG, JPG (2D) + 3DM, OBJ, SKP (3D models)
- Coverage: KALLAX, HEMNES, BESTÅ, BEKANT, and many more series
- Dual units: Both inches and centimeters
- Includes: Weight capacities
- Note: Good for manual reference but not easily machine-parseable without scraping
Source: https://www.dimensions.com/collection/ikea-furniture
3. IKEA 3D Models
Web-Sourced GLB Models (Best Path for Three.js)
IKEA product pages with a "View in 3D" button serve simplified, Draco-compressed GLB (binary glTF) files. These are:
- Format: GLB (binary glTF 2.0) — native Three.js format
- Quality: "Lowest quality versions" — simplified from manufacturing models for web delivery
- Properties: Scaled in metric, basic materials applied, KHR_Texture_Transform extension
- Compatibility: Direct import into Three.js via
GLTFLoader+DRACOLoader
Tools to Download IKEA GLB Models
| Tool | Type | Stars | Status | License |
|---|---|---|---|---|
| IKEA 3D Model Download Button | Tampermonkey userscript | 941 | Active (Jan 2026) | — |
| IKEA 3D Model Batch Downloader | Python (Selenium+BS4) | — | Active | GPL-3.0 |
| IKEA Browser for Blender | Blender addon | 95k downloads | Active (v0.4.0, Oct 2025) | GPL-3.0 |
| Chrome Extension | Chrome extension | — | Active | — |
The batch downloader workflow:
- Give it an IKEA category URL (e.g.,
https://www.ikea.com/fi/fi/cat/chairs-fu002/) - Scrapes product links → extracts 3D model URLs → downloads GLB files
- Stores metadata in SQLite database
- Deduplication built-in
Note: Not all IKEA products have 3D models. Only items with the "View in 3D" button are available.
Official IKEA 3D Assembly Dataset (GitHub)
- Source: https://github.com/IKEA/IKEA3DAssemblyDataset
- Items: Only 5 products (LACK, EKET, BEKVÄM, DALFRED)
- Formats: GLB/glTF + OBJ + PDF assembly instructions
- License: CC BY-NC-SA 4.0 — non-commercial only, research purposes
- Verdict: Too few items and restrictive license. Not suitable for our use.
Sweet Home 3D IKEA Libraries
- 180 models: https://3deshop.blogscopia.com/180-ikea-models-for-sweethome3d/
- 342 models (bundle): https://3deshop.blogscopia.com/ikea-bundle-342-models/
- Format: SH3F (Sweet Home 3D format) — would need conversion
- Quality: Community-created, based on real IKEA products
- Note: Format is proprietary to Sweet Home 3D, would require extraction/conversion
Third-Party Model Sources
- Sketchfab: Search "IKEA" — many free community models, various licenses
- TurboSquid: Free IKEA models available
- Clara.io: Some IKEA models
- Trimble 3D Warehouse: IKEA models available (SketchUp format)
4. Web Scraping Feasibility
Existing Scrapers
| Project | Stack | Notes |
|---|---|---|
| IKEA Scraper | Python | Full scraper for ikea.com |
| ikea-webscraper | Selenium | Product info extraction |
| IKEA-project | Selenium | Product scraping |
| ikea-scraper | — | IKEA data extraction |
Technical Challenges
- IKEA uses heavy client-side rendering (React/Next.js) requiring browser automation (Selenium)
- Anti-bot protections: CAPTCHAs, rate limiting, IP blocking
- Dimension data is embedded in product pages in varying formats
- Product IDs are 8-digit numbers but URL structure varies by locale
Legal Considerations
- IKEA's Terms of Service prohibit automated scraping
- IKEA actively protects trademarks and trade dress under US Trademark Act
- For personal/non-commercial home planning use, tools like the Blender extension operate in a gray area
- The HuggingFace CommerceTXT dataset (CC0) is the safest legal path for product data
5. Standard IKEA Dimensions Reference
Manually verified dimensions for the most common IKEA product lines:
Storage
| Product | Width (cm) | Depth (cm) | Height (cm) |
|---|---|---|---|
| KALLAX 1×4 | 42 | 39 | 147 |
| KALLAX 2×2 | 77 | 39 | 77 |
| KALLAX 2×4 | 77 | 39 | 147 |
| KALLAX 4×4 | 147 | 39 | 147 |
| BILLY bookcase (standard) | 80 | 28 | 202 |
| BILLY bookcase (narrow) | 40 | 28 | 202 |
| BILLY bookcase (short) | 80 | 28 | 106 |
| HEMNES 6-drawer dresser | 108 | 50 | 131 |
| HEMNES 3-drawer dresser | 108 | 50 | 96 |
| HEMNES bookcase | 90 | 37 | 197 |
| BESTÅ TV bench | 120/180 | 42 | 38 |
| MALM 6-drawer dresser | 80 | 48 | 123 |
| MALM 4-drawer dresser | 80 | 48 | 100 |
| PAX wardrobe (standard) | 100/150/200 | 58 | 201/236 |
Tables
| Product | Width (cm) | Depth (cm) | Height (cm) |
|---|---|---|---|
| LACK side table | 55 | 55 | 45 |
| LACK coffee table | 90 | 55 | 45 |
| LACK TV bench | 90 | 26 | 45 |
| LISABO desk | 118 | 45 | 74 |
| BEKANT desk (rect) | 120/140/160 | 80 | 65-85 |
| LINNMON/ALEX desk | 150 | 75 | 73 |
| MELLTORP dining table | 125 | 75 | 74 |
| EKEDALEN ext. table | 120-180 | 80 | 75 |
Seating
| Product | Width (cm) | Depth (cm) | Height (cm) |
|---|---|---|---|
| POÄNG armchair | 68 | 82 | 100 |
| STRANDMON wing chair | 82 | 96 | 101 |
| KLIPPAN 2-seat sofa | 180 | 88 | 66 |
| EKTORP 3-seat sofa | 218 | 88 | 88 |
| KIVIK 3-seat sofa | 228 | 95 | 83 |
| MARKUS office chair | 62 | 60 | 129-140 |
Beds
| Product | Width (cm) | Depth (cm) | Height (cm) |
|---|---|---|---|
| MALM bed (queen, 160) | 160 | 209 | 92 (headboard) |
| MALM bed (king, 180) | 180 | 209 | 92 (headboard) |
| MALM bed (single, 90) | 90 | 209 | 92 (headboard) |
| HEMNES bed (queen) | 163 | 211 | 66 (headboard 112) |
| KURA reversible bed | 99 | 209 | 116 |
| SUNDVIK child bed | 80 | 167 | 83 |
Kitchen
| Product | Standard Width (cm) | Depth (cm) | Height (cm) |
|---|---|---|---|
| METOD base cabinet | 60/80 | 60 | 80 |
| METOD wall cabinet | 60/80 | 37 | 60/80/100 |
| METOD tall cabinet | 60 | 60 | 200/220 |
| KNOXHULT base cabinet | 120/180 | 61 | 85 |
| VADHOLMA kitchen island | 126 | 79 | 90 |
6. Recommendations for Our Project
Recommended Approach: Tiered Strategy
Tier 1: Curated IKEA Catalog (Immediate)
Extend data/furniture-catalog.json with IKEA-specific items:
- Add 30-50 most popular IKEA products with verified dimensions
- Use our existing procedural mesh format (box geometry parts)
- Add
ikeaIdfield (8-digit product number) for future linking - Add
ikeaSeriesfield (KALLAX, BILLY, MALM, etc.) - Add
ikeaUrlfield for reference
Schema extension:
{
"id": "ikea-kallax-2x4",
"name": "KALLAX Regal 2×4",
"ikeaId": "80275887",
"ikeaSeries": "KALLAX",
"ikeaUrl": "https://www.ikea.com/de/de/p/kallax-regal-weiss-80275887/",
"category": "storage",
"rooms": ["wohnzimmer", "arbeitszimmer", "kinderzimmer"],
"dimensions": { "width": 0.77, "depth": 0.39, "height": 1.47 },
"variants": [
{ "color": "white", "hex": "#ffffff" },
{ "color": "black-brown", "hex": "#3c3028" },
{ "color": "white-stained-oak", "hex": "#d4c4a8" }
],
"mesh": { ... }
}
Effort: ~2-3 hours to add 30 items manually from IKEA website Risk: None — uses verified public dimensions
Tier 2: GLB Model Import (Enhancement)
Add optional GLB model loading to the renderer:
- Use Three.js
GLTFLoader+DRACOLoaderto load IKEA GLB files - Users download GLB files themselves (personal use) via browser extension
- Store in local
models/directory - Fall back to procedural mesh if GLB not available
// In catalog entry:
{
"id": "ikea-kallax-2x4",
"model3d": "models/ikea/kallax-2x4.glb", // optional
"mesh": { ... } // fallback procedural geometry
}
Effort: ~4-6 hours for GLTFLoader integration Risk: Low — GLB loading is standard Three.js functionality
Tier 3: Dataset Import Tool (Future)
Build a converter that parses the HuggingFace CommerceTXT dataset:
- Extract product dimensions from
@SPECSsection - Map categories to our catalog format
- Auto-generate procedural meshes from dimensions
- Run offline as a data pipeline
Effort: ~1-2 days Risk: Medium — dimension parsing from free-text specs varies in reliability
What NOT to Do
- Don't scrape IKEA live — Legal risk, fragile, unnecessary when datasets exist
- Don't depend on undocumented APIs — They change without notice
- Don't bundle IKEA 3D models — Trademark/IP issues. Let users provide their own
- Don't use the IKEA 3D Assembly Dataset for the app — License is NC-SA research only
7. Key Sources
| Resource | URL | Best For |
|---|---|---|
| HuggingFace IKEA US | https://huggingface.co/datasets/tsazan/ikea-us-commercetxt | Dimension data (CC0) |
| Kaggle IKEA SA | https://www.kaggle.com/datasets/ahmedkallam/ikea-sa-furniture-web-scraping | Structured CSV with dims |
| Dimensions.com IKEA | https://www.dimensions.com/collection/ikea-furniture | Reference dimensions + drawings |
| 3D Batch Downloader | https://github.com/apinanaivot/IKEA-3d-model-batch-downloader | Downloading GLB models |
| Blender IKEA Browser | https://extensions.blender.org/add-ons/ikea-browser/ | Model inspection/conversion |
| IKEA API Blog | https://sbmueller.github.io/posts/ikea/ | Understanding IKEA endpoints |
| Sweet Home 3D IKEA | https://3deshop.blogscopia.com/ikea-bundle-342-models/ | Pre-made 3D models (needs conversion) |