IKEA · Product Data · v1.0.0

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.

Last tested 15d ago Updated 20d ago Success 100%
How it works

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.

Output

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.

Output fields
FieldTypeExample
product_sku
IKEA's item number, formatted like 806.194.51
number 10455434
url
Canonical product page link
url https://www.ikea.com/us/en/p/mittled-led-kitche…
title
Product name as listed, often the IKEA item name in caps
string MITTLED
image_url
Direct link to the primary product image
url https://www.ikea.com/us/en/images/products/mitt…
offer_price
Current selling price; blank when item has no active price
number 22
list_price
Reference price before any discount
number 22
discount
Discount amount or percentage; blank when item isn't discounted
string
mpn
Manufacturer part number, matches product_sku format
number 40353537
color
Product color; blank when not specified for the item
string white
Sample output · live
[
    {
        "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"
    }
]
API

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_••••"
Request parameters
ParameterTypeDefaultDescription
All requests
X-API-Key requiredheaderYour 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 onlystringsampleWhich 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.)
pageint1Which page of results to return.
page_sizeint50 (1–200)Rows per page.
Starting runs POST …/runsPOST /api/v1/scrapers/ikea/runs?max_pages=5&wait=30
max_pagesintfull crawlLimit how much gets fetched — perfect for a cheap test run (try 5). Omit to crawl everything.
waitint0 (async)Wait up to N seconds (max 55) and get rows back in the same response instead of polling. Best with max_pages.
forceboolfalseStart a new run even if one of yours is already running (repeat calls normally reuse the active run instead of billing twice).
A live run scrapes fresh data and spends credits; the /data endpoint serves a maintained sample (or your own runs with source=mine) and is ideal for frequent, lightweight reads. Get an API key →
Use cases

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.

Comparison

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.

Pricing

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.

1 credit / request
Why this rate

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.

StarterFree 100 credits / mo ≈ 100 requests · no card
Personal$29/mo 5,000 credits / mo ≈ 5,000 requests
Business$99/mo 25,000 credits / mo ≈ 25,000 requests
Enterprise$500+/mo Custom credits Custom volume
Credits are shared across every scraper on your account — mix and match freely. See full plans on the pricing page.
Reliability

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.

15d agoProbe: source 217 items · 2/2 fields · list 48 items · 8/9 fields · details 5 items · 8/8 fieldsPASS
15d agoProbe: source 217 items · 2/2 fields · list 48 items · 8/9 fields · details 5 items · 8/8 fieldsPASS
15d agoProbe: source 217 items · 2/2 fields · list 24 items · 8/9 fields · details 5 items · 8/8 fieldsPASS
16d agoProbe: source 217 items · 2/2 fields · list 48 items · 8/9 fields · details 5 items · 8/8 fieldsPASS
16d agoProbe: source 217 items · 2/2 fields · list 48 items · 8/9 fields · details 5 items · 8/8 fields — details: field `offer_price` fill 40% vs baseline 100%DEGRADED
16d agoProbe: source 217 items · 2/2 fields · list 48 items · 8/9 fields · details 5 items · 8/8 fields — details: field `offer_price` fill 40% vs baseline 100%DEGRADED
16d agoProbe: source 217 items · 2/2 fields · list 24 items · 8/9 fields · details 4 items · 8/8 fields — baseline capturedPASS
20d agoPublished v1.0.0RELEASE
FAQ

Common questions

Everything people ask before their first request.

Does IKEA have an official product API?
No. IKEA has no publicly documented developer API or data feed. An internal interface (sometimes called IOWS) exists for IKEA's own site, and developers have reverse-engineered it, but it's undocumented, unsupported, and not intended for external integrations.
Is scraping IKEA product pages legal?
Publicly accessible product data is commonly collected for research and monitoring, but you should review IKEA's Terms of Service and applicable laws in your jurisdiction, and avoid scraping personal data or bypassing access controls.
How fresh is the returned data?
Data reflects the state of the IKEA page at the time of the request. offer_price, list_price, and discount can change frequently, so schedule repeat requests if you need ongoing price tracking.
What happens when IKEA changes its site layout?
The scraper is built to self-heal against markup and structural changes, so extraction of product_sku, title, offer_price, list_price, discount, mpn, color, and image_url keeps working without manual reconfiguration on your end.
Can I get this data with a Python script instead?
You can write a Python scraper against IKEA's HTML or its internal endpoints, but you'll need to handle rendering, pagination, per-market URL differences, and ongoing maintenance as IKEA changes its site — the same problems ScrapeFleet is built to absorb.
Why is offer_price sometimes blank?
offer_price is blank when a product has no active sale price returned by IKEA at request time; list_price is the reference price shown in that case.

Start scraping IKEA Product Scraper

Free tier included. No card required.

Get your API key