# Ikea Product Scraper 🛋️ (`shahidirfan/ikea-product-scraper`) Actor

Extract detailed product data from IKEA instantly! Scrape prices, descriptions, images, SKUs, and categories for seamless e-commerce analysis. Perfect for price monitoring, catalog management, and market research. Unlock comprehensive furniture retail insights today.

- **URL**: https://apify.com/shahidirfan/ikea-product-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 31 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does IKEA Product Scraper do?

IKEA Product Scraper collects structured product data from IKEA search results in a chosen country. Enter a product keyword or an IKEA search, category, or new-product URL, select the country, and receive product records with names, prices, currencies, images, ratings, availability, categories, colors, and variants. Search by keyword in Germany, France, the United States, or any other supported market and get that market's products and prices.

The Actor is useful for ecommerce teams, furniture retailers, catalog managers, price-monitoring workflows, product researchers, and anyone building a current IKEA product dataset. Results are available in Apify datasets and can be downloaded as JSON, CSV, Excel, XML, or other supported formats.

### Why use IKEA Product Scraper?

- **Catalog research** - Build a structured view of IKEA products for furniture research, assortment analysis, and market reports.
- **Price monitoring** - Track prices, currencies, discount labels, ratings, and availability across scheduled runs.
- **Regional comparison** - Run the same search for different IKEA markets to compare local catalogs and pricing.
- **Product enrichment** - Combine product records with images, category paths, colors, quick facts, and related variants.
- **Automation-ready data** - Send datasets to Google Sheets, Airtable, Make, Zapier, webhooks, dashboards, or your own data workflow.
- **Controlled collection** - Set a maximum product count and page limit so each run fits your research or monitoring requirement.

### What data can you extract from IKEA?

Each dataset item represents one IKEA product or product family returned for the selected market. Fields are included when IKEA publishes the corresponding value.

| Field              | Type    | Description                                                           |
| ------------------ | ------- | --------------------------------------------------------------------- |
| `productId`        | String  | IKEA product or item number.                                          |
| `globalProductId`  | String  | Global IKEA item number when available.                               |
| `name`             | String  | Product name, including type information when available.              |
| `typeName`         | String  | IKEA product type or descriptive type name.                           |
| `itemType`         | String  | Product classification supplied by IKEA.                              |
| `price`            | Number  | Numeric current price in the selected market currency.                |
| `currency`         | String  | Currency code for the listed price.                                   |
| `priceText`        | String  | Price as displayed for the selected market.                           |
| `hasDiscount`      | Boolean | Indicates whether a discount value is present.                        |
| `discountTag`      | String  | Discount or promotional tag code when available.                      |
| `discountTagText`  | String  | Human-readable discount or promotional label.                         |
| `image`            | String  | Main product image URL.                                               |
| `images`           | Array   | Additional product images with URL, alt text, and image type.         |
| `url`              | String  | Direct IKEA product page URL.                                         |
| `rating`           | Number  | Average customer rating when available.                               |
| `reviewCount`      | Number  | Number of customer reviews when available.                            |
| `availability`     | String  | Availability or purchase-status text.                                 |
| `onlineSellable`   | Boolean | Indicates whether IKEA marks the item as sellable online.             |
| `lastChance`       | Boolean | Indicates whether IKEA marks the item as a last-chance product.       |
| `quickFacts`       | Array   | Short product facts published by IKEA.                                |
| `colors`           | Array   | Available color keys and color names.                                 |
| `categoryPath`     | Array   | IKEA category keys and names.                                         |
| `categoryPathText` | String  | Human-readable category path joined with `>`.                         |
| `variantsCount`    | Number  | Number of product variants when available.                            |
| `variants`         | Array   | Related variants with IDs, names, prices, images, ratings, and links. |
| `variations`       | Array   | Variation groups and their values, such as color or size options.     |
| `productAreaName`  | String  | IKEA product area name, such as Living room or Bedroom.               |
| `productType`      | String  | Product type label when available.                                    |
| `categoryOrQuery`  | String  | Search term or category used for the collection.                      |
| `sourceType`       | String  | Collection mode: `QUERY`, `CATEGORY`, or `SPECIAL`.                   |
| `scrapedAt`        | String  | ISO timestamp for when the record was collected.                      |

### How to scrape IKEA product data

1. Open IKEA Product Scraper in Apify Console.
2. Enter a product `keyword`, such as `chair`, and select the `country` to search.
3. Leave `language` empty to use the market's default language, or set it to override.
4. Optionally add IKEA search, category, or new-product URLs to `startUrls` instead of a keyword.
5. Set `maxProducts` and `maxPages` for the required dataset size.
6. Run the Actor and review the dataset preview.
7. Download the results or connect the dataset to your workflow.

A supplied `keyword` wins: the Actor searches that keyword in the selected `country` and ignores `startUrls`. With no keyword, the first usable `startUrls` entry determines the query, category, or new-product page. With neither, the run collects new products.

### Input Parameters

| Parameter            | Type                 | Required | Default                      | Description                                                                                                                                                                                                                                                |
| -------------------- | -------------------- | -------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`          | Array of URL objects | No       | `[{"url":"https://www.ikea.com/gb/en/search/?q=chair"}]` | IKEA search, category, or new-product URLs. Ignored when `keyword` is set.                                                                                                                                                                                 |
| `keyword`            | String               | No       | `""`                         | Product search term, such as `chair`. Searches in the selected `country` and takes precedence over `startUrls`.                                                                                                                                            |
| `country`            | String               | No       | `"gb"`                       | IKEA market code. Supported values include `gb`, `us`, `de`, `fr`, `se`, `no`, `dk`, `fi`, `nl`, `be`, `ch`, `at`, `it`, `es`, `pt`, `pl`, `cz`, `sk`, `hu`, `ro`, `hr`, `si`, `ie`, `ca`, `au`, `jp`, `kr`, `cn`, `tw`, `hk`, `sg`, `my`, `th`, and `ae`. |
| `language`           | String               | No       | market default               | Optional language override, such as `en`, `de`, or `fr`. Leave empty to use the selected country's default language.                                                                                                                                       |
| `maxProducts`        | Integer              | No       | `20`                         | Maximum number of products to save. Use `0` for no product-count limit.                                                                                                                                                                                    |
| `maxPages`           | Integer              | No       | `2`                          | Maximum pagination windows to process. Minimum value is `1`.                                                                                                                                                                                               |
| `proxyConfiguration` | Object               | No       | `{ "useApifyProxy": false }` | Optional Apify Proxy configuration for larger or repeated runs.                                                                                                                                                                                            |

### Usage Examples

#### Basic Product Search

Collect products for a keyword in one market:

```json
{
    "keyword": "dining chair",
    "country": "gb",
    "maxProducts": 20
}
```

#### New Products Collection

Collect newly listed IKEA products with a new-product URL instead of a keyword:

```json
{
    "startUrls": [
        {
            "url": "https://www.ikea.com/us/en/new/new-products/"
        }
    ],
    "country": "us",
    "maxProducts": 100,
    "maxPages": 5
}
```

#### Regional Price Monitoring

Run a focused keyword search in a selected IKEA market, with the market language applied automatically, and enable a residential proxy group for a larger recurring collection:

```json
{
    "keyword": "sofa",
    "country": "de",
    "maxProducts": 100,
    "maxPages": 8,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

### Sample Output

The following example shows one product record. Some optional fields may be absent when IKEA does not publish them for a product or market.

```json
{
    "productId": "70301537",
    "globalProductId": "70301537",
    "name": "KALLAX Shelf unit",
    "typeName": "Shelf unit",
    "itemType": "ART",
    "price": 39.99,
    "currency": "GBP",
    "priceText": "£39.99",
    "hasDiscount": false,
    "image": "https://www.ikea.com/gb/en/images/products/kallax-shelf-unit-white__0644758_pe702151_s5.jpg",
    "images": [
        {
            "url": "https://www.ikea.com/gb/en/images/products/kallax-shelf-unit-white__0644758_pe702151_s5.jpg",
            "alt": "KALLAX shelf unit white",
            "type": "MAIN"
        }
    ],
    "url": "https://www.ikea.com/gb/en/p/kallax-shelf-unit-white-70301537/",
    "rating": 4.7,
    "reviewCount": 842,
    "availability": "Buyable",
    "onlineSellable": true,
    "lastChance": false,
    "quickFacts": ["Easy to assemble", "Can be used vertically or horizontally"],
    "colors": [
        {
            "key": "white",
            "name": "White"
        }
    ],
    "categoryPath": [
        {
            "key": "living-room",
            "name": "Living room"
        },
        {
            "key": "shelving-units",
            "name": "Shelving units"
        }
    ],
    "categoryPathText": "Living room > Shelving units",
    "variantsCount": 0,
    "variants": [],
    "variations": [],
    "productAreaName": "Living room",
    "productType": "Shelving unit",
    "categoryOrQuery": "shelving",
    "sourceType": "QUERY",
    "scrapedAt": "2026-08-05T08:30:00.000Z"
}
```

### Tips for Best Results

- Use a complete public IKEA URL from the same country and language selected in the input.
- Use specific search phrases such as `dining chair`, `storage cabinet`, or `desk lamp` for more focused results.
- Start with `maxProducts` set to `20` while checking the dataset, then increase it for production runs.
- Use `maxPages` as a safety limit for scheduled or large collections.
- Run the same query separately for each market when comparing regional prices or availability.
- Review `currency`, `priceText`, and `availability` together because price and stock information can vary by market.
- Some products do not publish ratings, reviews, variants, or detailed category information. Missing values usually reflect the source listing.

### Integrations and Export Formats

- **Google Sheets** - Review prices, availability, and product changes in a familiar table.
- **Airtable** - Maintain a searchable furniture catalog with images and links.
- **Make or Zapier** - Start workflows after a run completes or a dataset is updated.
- **Webhooks** - Send run notifications and dataset links to downstream systems.
- **Apify API** - Retrieve datasets programmatically for catalog, monitoring, and enrichment workflows.

| Format | Useful for                                                    |
| ------ | ------------------------------------------------------------- |
| JSON   | Applications, data pipelines, and machine-readable workflows. |
| CSV    | Spreadsheet analysis and reporting.                           |
| Excel  | Business analysis and catalog reviews.                        |
| XML    | Systems that require XML-based data exchange.                 |

### Frequently Asked Questions

#### Can I collect IKEA products from different countries?

Yes. Select `country` and run the Actor separately for each IKEA market. The market's language is applied automatically unless you set `language`. Prices, currencies, availability, and product coverage can differ between markets. IKEA returned `404` for Taiwan (`tw`) and Hong Kong (`hk`) when last tested.

#### Can I search by keyword?

Yes. Enter a `keyword` and select `country`. No URL is needed, and the keyword search takes precedence over `startUrls`.

#### Can I collect new or discounted IKEA products?

Yes. Use a new-product URL such as `https://www.ikea.com/gb/en/new/new-products/` in `startUrls`, or another IKEA special page such as `family-offers`, `lower-price`, `last-chance`, `best-sellers`, or `limited-time-offers`.

#### Can I monitor IKEA prices over time?

Yes. Schedule recurring runs and compare `productId`, `price`, `currency`, `priceText`, `hasDiscount`, and `availability` between datasets.

#### What happens when `maxProducts` is set to `0`?

The Actor treats `0` as unlimited product count and continues until the available results or `maxPages` limit is reached.

#### Can I export the results to CSV or Excel?

Yes. Apify datasets can be downloaded as CSV, Excel, JSON, XML, and other supported formats.

#### Why is a field missing from a product record?

Some IKEA listings do not provide every attribute in every market. Check several records and confirm the information on the relevant IKEA product page when a field is important to your workflow.

#### Is it legal to collect IKEA product data?

Public product data collection may be permitted in some situations, but you are responsible for following IKEA's terms, applicable laws, privacy requirements, and any restrictions that apply to your use case.

### Related Actors

- [IKEA Reviews Scraper ⭐](https://apify.com/shahidirfan/ikea-reviews-scraper) - Collect customer reviews and ratings for IKEA products.
- [Target Product Scraper](https://apify.com/shahidirfan/target-product-scraper) - Collect comparable product, price, rating, image, and availability data from Target.com.
- [Nike Product Scraper 👟](https://apify.com/shahidirfan/nike-product-scraper) - Collect product prices, ratings, inventory, sizes, colors, and images from Nike.
- [Tokopedia Search Scraper](https://apify.com/shahidirfan/tokopedia-search-scraper) - Collect marketplace product listings, prices, ratings, and reviews from Tokopedia.

### Support

For issues, public-page changes, or feature requests, use the Issues tab on the Actor page in Apify Console. Include the input used, the IKEA market, and an example URL so the issue can be reproduced.

### Legal Notice

This Actor is intended for legitimate collection of publicly available IKEA product information. Users are responsible for complying with IKEA's terms of use, applicable laws, privacy rules, and any restrictions on storing, sharing, or using the collected data.

# Actor input Schema

## `startUrls` (type: `array`):

IKEA search, category, or new-product URLs. Ignored when a keyword is supplied. For search pages like https://www.ikea.com/gb/en/search/?q=chair, the query is extracted and fetched through the internal API.

## `keyword` (type: `string`):

Product search term, for example chair. Takes precedence over Start URLs and searches in the selected country.

## `country` (type: `string`):

IKEA market to search (e.g., 'gb' for United Kingdom, 'de' for Germany). Products and prices come from this country.

## `language` (type: `string`):

Optional language override. Leave empty to use the selected country's default language (e.g., de for Germany, fr for France).

## `maxProducts` (type: `integer`):

Maximum number of products to scrape. Set to 0 for unlimited.

## `maxPages` (type: `integer`):

Maximum API pagination windows to process (safety limit).

## `proxyConfiguration` (type: `object`):

Proxy settings to avoid rate limiting and blocking. Residential proxies recommended for best results.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ikea.com/gb/en/search/?q=chair"
    }
  ],
  "country": "gb",
  "maxProducts": 20,
  "maxPages": 2,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

View API-first listing/search products with key fields

## `allProducts` (type: `string`):

Download all product data in JSON format

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.ikea.com/gb/en/search/?q=chair"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/ikea-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.ikea.com/gb/en/search/?q=chair" }] }

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/ikea-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.ikea.com/gb/en/search/?q=chair"
    }
  ]
}' |
apify call shahidirfan/ikea-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/ikea-product-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YDYf0oiGTOBb879tU/builds/0gcaemH7g3c6NKL30/openapi.json
