IKEA Product Scraper
Pull structured IKEA catalog data — product_sku, title, offer_price, list_price, discount, mpn, color, and image_url — as clean JSON. Built to self-heal when IKEA changes its site markup, so your price and stock monitoring keeps running.
Request flow
Send one authenticated request. The fleet handles routing, rendering, and parsing — then returns structured JSON.
Submit a target
Send a category URL like /us/en/cat/products-products/ or a specific product page.
Pages render and paginate
The scraper loads listing and product pages, walking pagination and category structure automatically.
Fields are extracted per product
product_sku, title, offer_price, list_price, discount, mpn, color, and image_url are parsed from each product entry.
Clean JSON is returned
Structured rows are delivered ready for storage, price-comparison, or alerting pipelines.
IKEA Product data: output fields & JSON sample
The exact fields this scraper returns as clean JSON, with a real sample pulled from a recent run.
| Field | Type | Example |
|---|---|---|
product_skuIKEA's item number, formatted like 806.194.51 |
number | 10455434 |
urlCanonical product page link |
url | https://www.ikea.com/us/en/p/mittled-led-kitche… |
titleProduct name as listed, often the IKEA item name in caps |
string | MITTLED |
image_urlDirect link to the primary product image |
url | https://www.ikea.com/us/en/images/products/mitt… |
offer_priceCurrent selling price; blank when item has no active price |
number | 22 |
list_priceReference price before any discount |
number | 22 |
discountDiscount amount or percentage; blank when item isn't discounted |
string | — |
mpnManufacturer part number, matches product_sku format |
number | 40353537 |
colorProduct color; blank when not specified for the item |
string | white |
[
{
"product_sku": "806.194.51",
"url": "https://www.ikea.com/us/en/p/myggspray-wireless-motion-…",
"title": "MYGGSPRAY Wireless motion sensor - smart",
"image_url": "https://www.ikea.com/us/en/images/products/myggspray-wi…",
"offer_price": "7.99",
"list_price": "7.99",
"discount": "",
"mpn": "806.194.51",
"color": "",
"brand": "IKEA"
},
{
"product_sku": "104.497.54",
"url": "https://www.ikea.com/us/en/p/braunit-battery-pack-10449…",
"title": "BRAUNIT Battery pack",
"image_url": "https://www.ikea.com/us/en/images/products/braunit-batt…",
"offer_price": "",
"list_price": "19.99",
"discount": "",
"mpn": "104.497.54",
"color": "black",
"brand": "IKEA"
},
{
"product_sku": "905.556.51",
"url": "https://www.ikea.com/us/en/p/varmfront-portable-charger…",
"title": "VARMFRONT Portable charger - blue 5200 mAh",
"image_url": "https://www.ikea.com/us/en/images/products/varmfront-po…",
"offer_price": "21.99",
"list_price": "21.99",
"discount": "",
"mpn": "905.556.51",
"color": "blue",
"brand": "IKEA"
}
]
Scrape IKEA Product data in Python, Node.js, or cURL
Authenticate with an X-API-Key. Trigger a fresh run (async) or read a maintained data sample instantly (sync) — swap in your key and go. The whole API ships as an OpenAPI spec for codegen and AI agents.
# 1. Submit a live run (async)
curl -X POST https://b.scrapefleet.ai/api/v1/scrapers/ikea/runs \
-H "X-API-Key: sk_live_••••"
# -> { "job_id": "…", "status": "queued" }
# 2. Poll until it finishes
curl https://b.scrapefleet.ai/api/v1/runs/JOB_ID -H "X-API-Key: sk_live_••••"
# 3. Fetch the rows
curl "https://b.scrapefleet.ai/api/v1/runs/JOB_ID/data?page=1&page_size=50" -H "X-API-Key: sk_live_••••"
# Or: read a maintained data sample instantly, no run (sync)
curl "https://b.scrapefleet.ai/api/v1/scrapers/ikea/data?page=1&page_size=50" -H "X-API-Key: sk_live_••••"
| Parameter | Type | Default | Description |
|---|---|---|---|
| All requests | |||
X-API-Key required | header | — | Your API key. Create one in account settings. |
Reading data GET …/data · GET /runs/{id}/dataGET /api/v1/scrapers/ikea/data?source=mine&page_size=100 | |||
source …/data only | string | sample | Which data to read: sample — a fresh sample our monitoring keeps up to date (not the full catalog); mine — results from runs you triggered yourself. (A run's own /runs/{id}/data is always that run's data.) |
page | int | 1 | Which page of results to return. |
page_size | int | 50 (1–200) | Rows per page. |
Starting runs POST …/runsPOST /api/v1/scrapers/ikea/runs?max_pages=5&wait=30 | |||
max_pages | int | full crawl | Limit how much gets fetched — perfect for a cheap test run (try 5). Omit to crawl everything. |
wait | int | 0 (async) | Wait up to N seconds (max 55) and get rows back in the same response instead of polling. Best with max_pages. |
force | bool | false | Start a new run even if one of yours is already running (repeat calls normally reuse the active run instead of billing twice). |
/data endpoint serves a maintained sample (or your own runs with source=mine) and is ideal for frequent, lightweight reads. Get an API key →What teams build with IKEA Product data
What teams build on IKEA product data
Retail and market research teams use offer_price, list_price, and discount together to track promotional activity and price changes across IKEA's catalog over time, comparing SKUs across categories or monitoring specific product_sku values for repricing events.
Shopping and comparison apps pull title, image_url, and color alongside product_sku and mpn to build catalog listings or product feeds, while stock-alert tools poll individual product pages via url to flag when a previously unpriced or unavailable item becomes purchasable again.
ScrapeFleet vs. IKEA's internal API and DIY reverse-engineering
IKEA has no public developer program — here's what teams use instead.
IKEA does not publish a documented, public developer API or data feed. What exists is an internal REST interface (sometimes referred to as IOWS) that IKEA's own website calls, discovered by developers inspecting network traffic, plus community-built clients that wrap endpoints for search, stock, cart, and purchases. None of this is sanctioned, versioned, or supported — there's no application process, published rate limits, or pricing from IKEA itself, and endpoints can change without notice since they were never meant for external use.
DIY scraping against IKEA's site or its internal endpoints means tracking undocumented URL patterns, handling per-market variations, and rebuilding parsers whenever markup or endpoint behavior shifts. ScrapeFleet handles that maintenance layer directly: you send a catalog or product URL and get back product_sku, offer_price, list_price, discount, mpn, color, and image_url as consistent JSON, without maintaining scraping logic or monitoring for breakage yourself.
IKEA Product scraping cost
Every ScrapeFleet plan gives you a monthly credit balance. Each request spends credits — the rate is per scraper, because some targets need heavier proxies than others.
IKEA product pages are JavaScript-rendered and vary by market, and pricing/discount fields shift independently of page markup, requiring rendering and periodic re-validation to keep extraction accurate.
Scraper reliability: test & change history
Automated tests run against the live target regularly. Every result — including the failures and self-heals — is published here, so you can see exactly how this scraper is performing before you build on it.
Common questions
Everything people ask before their first request.