IKEA Product Catalog Scraper avatar

IKEA Product Catalog Scraper

Pricing

Pay per event

Go to Apify Store
IKEA Product Catalog Scraper

IKEA Product Catalog Scraper

Search IKEA catalogs by keyword and locale, then export structured product, price, availability, image, category, and variant data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Search IKEA by keyword and export clean product and variant records for a selected country and language.

The Actor uses IKEA's anonymous catalog search data surface, so it does not require an IKEA account, browser, or proxy configuration.

Use it to monitor prices, compare assortments, enrich retail catalogs, or create scheduled product feeds.

What does IKEA Product Catalog Scraper do?

IKEA Product Catalog Scraper turns a normal product query such as chair, desk, or KALLAX into structured dataset rows.

Each row represents one unique IKEA item number.

Base search products and color or design variants can both be included.

The Actor extracts:

  • product and item identifiers;
  • range name, product type, design, and measurements;
  • localized current price and currency;
  • average rating and rating count;
  • badges and last-chance status;
  • online-sellable status;
  • colors and category breadcrumbs;
  • main, contextual, and other product images;
  • the canonical localized IKEA product URL;
  • query, locale, source URL, and scrape timestamp.

Results are deduplicated by IKEA item number and saved to the default Apify dataset.

Who is it for?

Retail market researchers can compare IKEA assortment and pricing across recurring keyword searches.

Furniture brands can observe competing designs, ratings, merchandising badges, and last-chance products.

Catalog enrichment teams can map IKEA item numbers to titles, images, product types, and canonical URLs.

Price monitoring teams can schedule the same query and compare timestamped dataset exports.

Data analysts can send records to spreadsheets, databases, BI tools, or warehouses through Apify integrations.

Developers and AI agents can call the Actor through the API or Apify MCP server without implementing IKEA response parsing.

Use IKEA Product Reviews Scraper when you need individual review text rather than catalog search records.

Why use this Actor?

  • No browser overhead: it uses a lightweight JSON request rather than rendering product pages.
  • Locale-aware: choose a two-letter IKEA market and language pair.
  • Variant-ready: optionally emit distinct color and design variants as separate rows.
  • Stable deduplication: every saved record has a unique IKEA item number.
  • Exact limits: the Actor stops when it reaches maxItems.
  • Typed output: prices, ratings, booleans, arrays, URLs, and timestamps keep useful data types.
  • Clear failures: unsupported market/language pairs fail instead of returning a misleading empty success.
  • Integration-friendly: output goes to the run's default dataset for standard Apify exports and automations.

Getting started

  1. Open the Actor in Apify Console.
  2. Enter a product keyword in Search query.
  3. Keep us and en, or select another supported IKEA market/language pair.
  4. Choose the maximum number of product and variant records.
  5. Leave Include product variants enabled for the broadest assortment view.
  6. Click Start.
  7. Open the IKEA products dataset view.
  8. Export the rows as JSON, CSV, Excel, XML, or another supported format.
  9. Add a schedule or integration if you need recurring monitoring.

A useful first run is:

{
"query": "chair",
"country": "us",
"language": "en",
"maxItems": 100,
"includeVariants": true
}

Input parameters

FieldTypeDefaultDescription
querystringrequiredProduct keyword, range name, or search phrase. Length: 1–200 characters.
countrystringusTwo-letter IKEA market code used in localized IKEA URLs, such as us, de, gb, or se.
languagestringenTwo-letter language code supported by that market, such as en, de, or sv.
maxItemsinteger100Maximum unique base product and variant records to save. Range: 1–1,000.
includeVariantsbooleantrueSave variants as separate rows in addition to base search products.

Country and language codes form a real IKEA locale path.

Not every language is available in every market.

If IKEA does not recognize the pair, the run fails with an actionable error.

The Actor has no proxy input and does not silently switch to a paid proxy.

Output fields

FieldMeaning
productIdProduct identifier supplied by IKEA.
itemNumberStable item number used to deduplicate rows.
parentProductIdBase product ID for variant rows; otherwise null.
isVariantWhether the row is a variant.
nameIKEA product range name.
productTypeLocalized product type.
designLocalized color or design text.
measureCatalog measurement reference when present.
priceCurrent numeric catalog price.
currencyISO currency code.
ratingAverage rating when available.
ratingCountNumber of ratings when available.
badgeLocalized badge text, such as a bestseller label.
badgeTypeSource badge classification.
onlineSellableWhether IKEA marks the item as sellable online.
lastChanceWhether IKEA marks the item as last chance.
colorsColor names attached to the product.
categoryPathLocalized category breadcrumb.
mainImageUrlMain image URL.
mainImageAltMain image alternative text.
imagesProduct images with type, URL, and alternative text.
productUrlCanonical localized IKEA product URL.
querySearch phrase that produced the row.
countryMarket code used for the request.
languageLanguage code used for the request.
sourceUrlPublic IKEA search endpoint used by the run.
scrapedAtISO 8601 extraction timestamp.

Source fields can be absent for some products, so optional values may be null or empty arrays.

Output example

The following abbreviated record reflects the current US chair output shape:

{
"productId": "10605424",
"itemNumber": "10605424",
"parentProductId": null,
"isVariant": false,
"name": "SANDSBERG",
"productType": "Chair",
"design": "white",
"measure": null,
"price": 15,
"currency": "USD",
"rating": 4.5,
"ratingCount": 263,
"badge": null,
"badgeType": null,
"onlineSellable": true,
"lastChance": false,
"colors": ["white"],
"categoryPath": ["Tables & chairs", "Dining furniture", "Dining chairs"],
"mainImageUrl": "https://www.ikea.com/us/en/images/products/sandsberg-chair-white__1390727_pe965548_s5.jpg",
"productUrl": "https://www.ikea.com/us/en/p/sandsberg-chair-white-10605424/",
"query": "chair",
"country": "us",
"language": "en",
"sourceUrl": "https://sik.search.blue.cdtapps.com/us/en/search-result-page?q=chair&size=100&c=sr",
"scrapedAt": "2026-07-28T00:00:00.000Z"
}

A variant has isVariant: true and its base product ID in parentProductId.

Variants are normal dataset rows and use the same item charge; there is no separate variant event.

How much does it cost to scrape IKEA products?

The Actor uses pay-per-event pricing.

Each run has a $0.001 start fee and each saved dataset row triggers one item event.

The current six item tiers are:

TierPrice per saved product or variant
FREE$0.000041071
BRONZE$0.000035714
SILVER$0.000027857
GOLD$0.000021429
PLATINUM$0.000014286
DIAMOND$0.000010000

Apify applies the tier associated with the user's platform plan.

At the highest listed item price, approximate totals are:

  • 10 rows: $0.00141 including the start fee;
  • 100 rows: $0.00511 including the start fee;
  • 500 rows: $0.02154 including the start fee;
  • 1,000 rows: $0.04207 including the start fee.

Only normalized, deduplicated rows count as item events.

Rejected records, duplicate item numbers, and empty results do not trigger item events.

Apify platform usage may still apply according to your account agreement.

No proxy transfer is used by this Actor.

Monitoring and data workflows

Price and assortment monitoring

Schedule the same keyword daily or weekly.

Export each run and compare itemNumber, price, currency, onlineSellable, and lastChance over time.

Cross-market research

Run the same query with different valid country/language pairs.

Keep currencies and localized product names in mind when comparing the datasets.

Catalog enrichment

Join rows to internal records by itemNumber or productUrl.

Use name, productType, design, image fields, and category paths to enrich a product database.

Review enrichment

Pass a product URL or item number from this Actor into IKEA Product Reviews Scraper for review-level analysis.

Spreadsheet and warehouse export

Connect the default dataset to Google Sheets, Make, Zapier, webhooks, or a database ingestion job.

API usage with cURL

Start a run and wait for its dataset items:

curl "https://api.apify.com/v2/acts/automation-lab~ikea-product-catalog-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"query": "desk",
"country": "us",
"language": "en",
"maxItems": 50,
"includeVariants": true
}'

Keep your Apify token in an environment variable or secret manager.

Do not commit tokens to source control.

API usage with JavaScript

Install the client:

$npm install apify-client

Run the Actor:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/ikea-product-catalog-scraper').call({
query: 'lamp',
country: 'us',
language: 'en',
maxItems: 100,
includeVariants: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

Install the client:

$pip install apify-client

Run the Actor:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/ikea-product-catalog-scraper').call(run_input={
'query': 'KALLAX',
'country': 'de',
'language': 'de',
'maxItems': 50,
'includeVariants': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use IKEA catalog data with MCP

Connect Claude Code to this Actor through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/ikea-product-catalog-scraper"

Claude Desktop, Cursor, and VS Code

For Claude Desktop, Cursor, VS Code, and other MCP-capable desktop or editor clients, use this HTTP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/ikea-product-catalog-scraper"
}
}
}

Example prompts:

  • "Search IKEA US for standing desks and return the first 100 products with prices."
  • "Find KALLAX products in IKEA Germany and group the records by design."
  • "Create a CSV-ready feed of IKEA US lamps with item number, price, rating, and URL."

The MCP client still needs authorization to use your Apify account.

Tips for reliable runs

  • Start with the exact prefilled chair query to verify your setup.
  • Use a market and language combination that exists on IKEA's localized website.
  • Enable variants for assortment analysis; disable them when you need only base search products.
  • Use item numbers rather than product names as durable join keys.
  • Keep country and currency in downstream tables when comparing markets.
  • Schedule separate runs per query and locale for simpler change tracking.
  • Inspect run logs when a locale fails before retrying.
  • Do not add a proxy URL; direct public JSON access is the supported v1 route.

Limits and failure behavior

The Actor accepts at most 1,000 saved rows per run.

IKEA search can use fuzzy matches and related results, so a very unusual query may still return suggestions rather than an empty list.

Search relevance and the available assortment are controlled by IKEA and can change.

Localized fields, ratings, images, badges, and availability flags are not present on every item.

The Actor does not visit every product detail page and does not promise store-level inventory.

It retries transient network failures, HTTP 429 responses, and temporary server errors up to three attempts with backoff.

It does not repeatedly retry deterministic invalid-market errors.

If IKEA changes the response shape, the Actor fails clearly instead of saving malformed records.

The v1 route is HTTP-only and has no automatic proxy fallback.

This Actor extracts publicly accessible IKEA catalog information.

Public availability does not remove your responsibility to follow applicable laws, IKEA terms, contractual restrictions, and data-use requirements.

Use reasonable schedules and item limits.

Do not attempt to overload the source or use the output for deceptive activity.

Product descriptions, images, trademarks, and other materials may be protected by intellectual-property rights.

Ensure that your storage, republication, analysis, and commercial use have an appropriate legal basis.

This Actor is not affiliated with or endorsed by IKEA.

Troubleshooting

The run says the market or language is invalid

Confirm that the same country/language path exists on IKEA's website.

For example, the United States uses us/en and Germany uses de/de.

Both values must contain exactly two letters.

I received fewer rows than maxItems

maxItems is a ceiling, not a promise.

The query may have fewer unique products after item-number deduplication.

Disabling variants can also reduce the row count.

My unusual query returned apparently unrelated products

IKEA search can return fuzzy matches and related catalog suggestions.

Try a product type, named IKEA range, or a more specific phrase.

A price, rating, badge, or image is null

IKEA did not include that field for the item in the current search response.

The Actor preserves the row and uses nullable output fields rather than inventing values.

Should I enable an Apify proxy?

No.

The Actor currently uses direct anonymous access and exposes no proxy option.

If the source route changes, inspect the run log and report the failure rather than repeatedly rerunning it.

Frequently asked questions

Does it scrape individual customer reviews?

No.

Use IKEA Product Reviews Scraper for review text and reviewer-level records.

Does it include variants?

Yes.

With includeVariants: true, variants are normalized as separate rows and linked to their base product through parentProductId.

Can it search multiple countries in one run?

No.

Run one locale per Actor run so prices, currency, language, and monitoring history stay unambiguous.

Does it require an IKEA login?

No.

The supported catalog search route is anonymous.

Does it download image files?

No.

It returns image URLs and alternative text, which avoids unnecessary transfer and storage costs.

Can I schedule it?

Yes.

Use Apify schedules to repeat stable query and locale inputs, then connect the resulting dataset to your monitoring workflow.

Choose related Actors only when their source and output fit your intended workflow.

Support

If a run fails on a valid IKEA locale, include the exact input, run URL, and relevant log message in your report.

Do not include your Apify token or other secrets.

Source behavior can change, and a reproducible run helps distinguish input errors from upstream changes.