IKEA
IKEA's public price (the Family member price separately), list price, rating and review count, online availability and image, by item number, about 750,000 products per credit. Search and category browsing too. No store stock, no brand.
IKEA's public price (the Family member price separately), list price, rating and review count, online availability and image, by item number, about 750,000 products per credit. Search and category browsing too. No store stock, no brand.
At a glance
Property | Value |
|---|---|
|
|
Item id | The 8-digit item number at the end of an IKEA product link, |
Marketplaces | Live: |
Tier |
|
Ids per call | 50 |
Typical call | 5–20 s for 50 ids |
Search |
|
`price` is the public price, not the Family price
While IKEA shows a product at its IKEA Family price (a free membership's price, lower than the public one), that member price is ikea.familyPrice and price is the public price everyone pays. A Family row that gives no public price has price null, with the member price in ikea.familyPrice. Prices change during the day; ask again for a current one.
Stock is online availability, not a store
availability.inStock says whether IKEA can deliver the product to a home in the country (Online: high stock, medium stock, low stock or Online: out of stock). It does not say a store has it on its shelves, and no store stock is given. It is left out of a result when it could not be read; a missing availability is never "out of stock".
Example
- cURL
- Python
- Node.js
curl -X POST "https://api.scrapelyserp.com/v1/products" \
-H "Authorization: Bearer $SCRAPELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "ikea",
"ids": [
"10514155",
"19384116",
"https://www.ikea.com/us/en/p/lagkapten-tabletop-white-00460836/"
]
}'import os
import requests
HEADERS = {"Authorization": f"Bearer {os.environ['SCRAPELY_API_KEY']}"}
r = requests.post(
"https://api.scrapelyserp.com/v1/products",
headers=HEADERS,
json={
"platform": "ikea",
"ids": [
"10514155",
"19384116",
"https://www.ikea.com/us/en/p/lagkapten-tabletop-white-00460836/",
],
},
timeout=30,
)
r.raise_for_status()
data = r.json()
for p in data["results"]:
print(p["id"], p["status"], (p.get("price") or {}).get("amount"), p["ikea"]["familyPrice"])const res = await fetch('https://api.scrapelyserp.com/v1/products', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SCRAPELY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
platform: 'ikea',
ids: [
'10514155',
'19384116',
'https://www.ikea.com/us/en/p/lagkapten-tabletop-white-00460836/',
],
}),
signal: AbortSignal.timeout(30_000),
});
if (!res.ok) throw new Error((await res.json()).error.code);
const data = await res.json();
for (const p of data.results) console.log(p.id, p.status, p.price?.amount, p.ikea?.familyPrice);Full reference → POST /v1/products
IKEA fields
Besides the common fields, each result carries an ikea object.
Field | Description |
|---|---|
| IKEA's public price. |
| The IKEA Family member price, while the product has one. |
| IKEA's earlier or regular price, when the product is marked down. |
| Online availability for the country (home delivery). Left out when it could not be read. No store stock. |
| IKEA's own review average (0 to 5) and the number of reviews. Both are |
| The name, type and design ( |
Not given | Brand (IKEA data has none) and store stock. |
A product that comes in several designs or sizes has an item number for each one; ask for each. ikea/search also lists a category: send category with an IKEA category key such as fu003 (sofas & sectionals), with or without a query.
Statuses on IKEA
partial: IKEA answered without a name. Ask again later.not_found: IKEA has no such item number.unavailable: no usable answer after retries. Not charged; ask again.