# IKEA Stock Checker: Store Inventory, Restock Dates & Alerts (`s_actors/ikea-stock-checker`) Actor

Check IKEA stock in every store of a country: exact units, planned restock dates and units, aisle and bin, price. Search by keyword, item number or link. Scheduled runs return back-in-stock alerts. US, UK, Canada, Australia, Germany and 46 more countries.

- **URL**: https://apify.com/s_actors/ikea-stock-checker.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.63 / 1,000 product in a stores

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

### IKEA Stock Checker: Store Inventory, Restock Dates & Back-in-Stock Alerts

**Check IKEA stock in every store of a country in one run**: the **exact number of units** on the shelf, the stock level (high, medium, low, out of stock), the **planned restock date window with the number of units coming**, the **aisle and bin** to pick it up, price and delivery. Search by keyword (`kallax`), IKEA item number (`206.316.63`) or ikea.com link. Works for the **US, UK, Canada, Australia, Germany and 46 more countries**.

Scheduled runs with **Only report changes** become **IKEA back-in-stock alerts**: you get a row only when an item is back in a store, sells out, gets a new restock date or changes price.

Use cases: track products & prices, get deal & restock alerts, build market datasets of IKEA inventory and prices. No login, no browser: an **IKEA stock API** that returns clean JSON, CSV or Excel.

#### What makes it different

| | |
| --- | --- |
| 🔢 **Exact units per store** | Not just "in stock": the number IKEA has on hand in each store, e.g. `65` KALLAX shelf units in Brooklyn |
| 📅 **Restock dates** | When a sold-out item comes back: earliest and latest date, units in the delivery and IKEA's reliability of the forecast |
| 📍 **Aisle and bin** | Where to pick the flat pack in the self-serve area (`Aisle 01, bin 04`) or "Ask staff" for warehouse items |
| 🌍 **Every store, 51 countries** | One request covers all stores of a country: 61 in the US, 30 in the UK, 55 in Germany, 20 in Canada, 10 in Australia |
| 🔔 **Back-in-stock alerts** | `back_in_stock`, `out_of_stock`, `low_stock`, `restock_planned`, `price_drop`, with the restock history and the usual restock weekday of each store |
| 📦 **One row per product** | Optional summary: total units in the chosen stores, how many stores have it, which ones, and the next restock |

#### Example

Input: keyword `kallax`, stores `Brooklyn` and `Paramus`, United States. Real run, 10 Oct 2026:

| Product | Store | Units | Stock | Restock | Aisle / bin | Price |
| --- | --- | --- | --- | --- | --- | --- |
| KALLAX Shelf unit, white, 30 1/8x57 5/8" | Brooklyn, NY | 65 | high | | Aisle 01, bin 04 | $79.99 |
| KALLAX Shelf unit, white, 16 3/8x57 5/8" | Brooklyn, NY | 100 | high | | Aisle 01, bin 03 | $59.99 |
| KALLAX Shelf unit, white, 16 3/8x57 5/8" | Paramus, NJ | 0 | out of stock | Oct 11: 14 units (high) | Aisle 01, bin 21 | $59.99 |
| KALLAX Shelf unit, white, 43 7/8x43 7/8" | Paramus, NJ | 1 | low | Oct 15-22: 48 units (high) | Aisle 03, bin 05 | $99.99 |

The same search in Germany with **One row per product**: STORKLINTA chest of 4 drawers, €119, in stock in 54 of 55 stores, 10 818 units in total, next restock Oct 11 in Karlsruhe.

#### Input

| Field | What it does |
| --- | --- |
| **What to do** | *Search products* (keywords), *Check products* (item numbers or links), *List IKEA stores of the country* |
| **Country** | IKEA country site: stores, prices and currency (51 countries) |
| **Keywords** | e.g. `kallax`, `billy bookcase`, `malm dresser`; the country's language works best (`malm kommode` in Germany) |
| **Item numbers or links** | 8 digits as on the product page (`206.316.63` or `20631663`) or ikea.com product links |
| **Stores** | Store names, cities, US states (`CA`) or store numbers. Empty = every store of the country |
| **Max products per search** | Up to 1 000 products per keyword |
| **One row per product** | Totals per product instead of a row per product and store |
| **Only in stock**, **Minimum units**, **Maximum price** | Filters: you pay only for returned rows |
| **Only report changes**, **Monitor name** | Back-in-stock alerts for scheduled runs |

#### Output

| Field | Example |
| --- | --- |
| `title`, `name`, `productType`, `design`, `size` | KALLAX Shelf unit, white, 30 1/8x57 5/8", KALLAX, Shelf unit, white |
| `itemNo`, `itemType` | 20631663, ART (`SPR` = a combination of several articles) |
| `price`, `regularPrice`, `discountPercent`, `currency` | 199, 299, 33, USD (regular price only on discounted items) |
| `storeId`, `storeName`, `storeCity`, `storeState`, `storeType` | 921, Brooklyn, NY, Brooklyn, NY, store |
| `inStock`, `quantity`, `stockLevel` | true, 65, high |
| `restockFrom`, `restockTo`, `restockQuantity`, `restockReliability` | 2026-10-15, 2026-10-22, 48, high |
| `aisle`, `bin`, `location` | 01, 04, Aisle 01, bin 04 |
| `clickCollect`, `homeDelivery`, `stockUpdatedAt` | true, true, 2026-10-10T07:58:47Z |
| `discontinued`, `badge`, `rating`, `reviewsCount`, `category`, `image`, `url` | false, Best seller, 4.7, 10527 |
| `totalQuantity`, `storesInStock`, `storesChecked`, `storesWithStock`, `nextRestockFrom` | One row per product: 10818, 54, 55, "Wallau: 530; Frankfurt: 508; …", 2026-10-11 |
| `change`, `changes`, `previousQuantity`, `previousPrice` | back_in_stock (monitoring) |
| `restocksSeen`, `lastRestockAt`, `usualRestockDay` | 3, 2026-10-09T06:10:00Z, Thursday (2 of 3) (monitoring) |

Stores that do not sell an item at all get no row for it. An item number IKEA does not sell in the chosen country returns a row with `error`.

#### Pricing

Pay per event: **$0.001** per run and **$0.00079** per returned row (a product in a store, or a product with totals), **$0.00079** per store in *List stores*. Apify Scale plan: 10% less on rows, Business plan and above: 20% less.

| Example | Cost |
| --- | --- |
| 50 KALLAX products in 2 stores (~96 rows) | ~$0.08 |
| 20 products in all 61 US stores, one row per product | ~$0.017 |
| Back-in-stock alert: 10 items in 3 stores every 30 minutes, nothing changed | $0.001 per run (~$1.44 a month) |

#### FAQ

**How do I check IKEA stock at a store near me?** Run *Search products* with the item name, or *Check products* with the item number, and put your store's name or city into **Stores** (e.g. `Wembley`, `Brooklyn`, `Tempe`). Every row shows the units on hand in that store, the stock level and the aisle and bin.

**When will IKEA restock an item?** IKEA plans deliveries to each store: `restockFrom` and `restockTo` give the date window, `restockQuantity` the units coming and `restockReliability` how sure IKEA is. Only sold-out or low items usually have a planned restock.

**How accurate is the IKEA stock number?** It is IKEA's own store inventory, the same number the product page shows; `stockUpdatedAt` tells when IKEA last updated it (usually within the last hours). Units can sell between the update and your visit, so for the last few units, call the store.

**Can I get an alert when an IKEA item is back in stock?** Yes. Turn on **Only report changes**, save the run as a task and schedule it (every 15-60 minutes). Each later run returns only the changes; connect email, Slack or [Google Sheets](https://apify.com/s_actors/google-sheets-import-export) in Integrations.

**Why does my item number show no stock in another country?** IKEA item numbers differ between countries: the US KALLAX 2x4 is `206.316.63`, the UK one has another number. Take the number from the product page of the country you check.

**Does it work in the UK, Canada and Australia?** Yes, and in 48 more countries: the store list, prices and currency follow the **Country** field.

#### Tips

- One request returns up to 50 items in every store of the country, so checking all stores costs no more requests than one store; filters cut the rows you pay for.
- Use **Minimum units** when you need several pieces (four chairs, six wardrobe doors).
- Use a separate **Monitor name** for each scheduled task.
- Store numbers and addresses: run *List IKEA stores of the country* once.

#### Limits

- Stock is per store (cash & carry); online delivery is reported as available or not (`homeDelivery`), without units.
- Countries where IKEA is run by a franchise on its own website (Greece, Turkey, Taiwan, Hong Kong, Indonesia, Iceland and a few others) are not covered.
- Items sold only online or only as a custom order have no store rows.

#### Ready-made tasks

| Task | What it does |
| --- | --- |
| [IKEA Stock Checker: Units in Every Store & Restock Dates](https://apify.com/s_actors/ikea-stock-checker/examples/ikea-stock-checker-every-store) | Your items in every IKEA store, with units, restock dates and aisle |

#### Related

- [Home Depot inventory and clearance](https://apify.com/s_actors/home-depot-scraper)
- [Target Scraper: store stock with units](https://apify.com/s_actors/target-scraper)
- [Best Buy Stock Checker: in-store inventory by ZIP](https://apify.com/s_actors/best-buy-stock-checker)
- [Walmart Restock Tracker](https://apify.com/s_actors/walmart-restock-tracker)
- [GameStop Inventory Checker](https://apify.com/s_actors/gamestop-inventory-checker)
- [Barnes & Noble Stock Checker: books, LEGO and Funko by store](https://apify.com/s_actors/barnes-noble-stock-checker)
- [Dollar General Stock Checker: exact units by store](https://apify.com/s_actors/dollar-general-stock-checker)

#### For AI agents and API

```json
{
    "mode": "products",
    "country": "us",
    "products": ["20631663", "40631638"],
    "stores": ["Brooklyn", "Paramus"],
    "onlyChanges": true,
    "monitorName": "kallax-restock"
}
```

Each row is one product in one store with `quantity`, `stockLevel`, `restockFrom`, `restockTo` and `location`; with `"onePerProduct": true` each row is one product with `totalQuantity` and `storesWithStock`.

# Actor input Schema

## `mode` (type: `string`):

Search: keywords as on ikea.com, every product found with its stock in your stores. Check products: exact items by item number or link (best for a back-in-stock watchlist). List stores: IKEA stores of the country with their numbers.

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

IKEA country site: its stores, prices and currency. 51 countries.

## `keywords` (type: `array`):

Search mode: what to search on IKEA, one per line (e.g. "kallax", "billy bookcase", "malm dresser"). Use the language of the country site for best results.

## `products` (type: `array`):

Check products mode: IKEA item numbers (8 digits, shown on every product page as 206.316.63; dots optional) or ikea.com product links, one per line.

## `stores` (type: `array`):

Which stores to check: store names, cities, US states (e.g. "CA") or store numbers, one per line. Empty = every IKEA store of the country (one row per product and store). A name that matches no store stops the run with the list of stores.

## `maxProductsPerSearch` (type: `integer`):

Search mode: how many products to take from each keyword, in IKEA's order.

## `onePerProduct` (type: `boolean`):

Instead of a row per product and store: one row per product with total units, the number of stores that have it, the stores with their units, and the nearest planned restock.

## `onlyInStock` (type: `boolean`):

Return only rows where the store has the product.

## `minQuantity` (type: `integer`):

Return only rows with at least this many units (e.g. 4 when you need four chairs). With "One row per product": units in all chosen stores together.

## `maxPrice` (type: `integer`):

Return only products at or below this price, in the country's currency. Empty = any price.

## `onlyChanges` (type: `boolean`):

For scheduled runs. The first run saves stock and prices; later runs return only what changed: back in stock at a store, sold out, low stock, a new restock date, price drops and increases, new products. Each row also carries the restocks this monitor has seen and the usual restock weekday. You pay only for the changes returned.

## `monitorName` (type: `string`):

Separate monitors keep separate memory. Use a different name for each scheduled task.

## `maxConcurrency` (type: `integer`):

How many requests run at the same time.

## Actor input object example

```json
{
  "mode": "search",
  "country": "us",
  "keywords": [
    "kallax"
  ],
  "products": [
    "20631663"
  ],
  "stores": [
    "Brooklyn",
    "Paramus"
  ],
  "maxProductsPerSearch": 50,
  "onePerProduct": false,
  "onlyInStock": false,
  "onlyChanges": false,
  "monitorName": "default",
  "maxConcurrency": 4
}
```

# Actor output Schema

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

One row per product and store: units, stock level, planned restock, aisle.

## `products` (type: `string`):

One row per product ("One row per product"): total units, stores with stock, nearest restock.

## `changes` (type: `string`):

Monitoring: back in stock, sold out, low stock, new restock dates, price changes.

## `details` (type: `string`):

Price, discount, category, rating and delivery of each row's product.

## `stores` (type: `string`):

List stores mode: IKEA stores of the country with their numbers.

## `all` (type: `string`):

Every field of every row.

# 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 = {
    "keywords": [
        "kallax"
    ],
    "products": [
        "20631663"
    ],
    "stores": [
        "Brooklyn",
        "Paramus"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/ikea-stock-checker").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 = {
    "keywords": ["kallax"],
    "products": ["20631663"],
    "stores": [
        "Brooklyn",
        "Paramus",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("s_actors/ikea-stock-checker").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 '{
  "keywords": [
    "kallax"
  ],
  "products": [
    "20631663"
  ],
  "stores": [
    "Brooklyn",
    "Paramus"
  ]
}' |
apify call s_actors/ikea-stock-checker --silent --output-dataset

```

## MCP server setup

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

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/ueuLWamgiqpvem8wQ/builds/VCstQB5we8lu3wydE/openapi.json
