# IKEA Products & Reviews Scraper (`abotapi/ikea-scraper`) Actor

Scrape IKEA products across 50+ markets. Extract names, prices, currencies, ratings, full reviews, colours, dimensions, images, categories, variants, badges and store availability. Supports search, category, item-number and URL inputs with filters and sorting.

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

## Pricing

from $1.00 / 1,000 product 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## IKEA Scraper

Extract products, prices, availability and reviews from **ikea.com** across 50+
country markets. Search by keyword, list a category, look up exact item numbers,
or paste product / category / search links. Every product comes back as one flat
record with pricing, ratings, colours, measurements, images, category path,
variants, and (optionally) the full marketing description, individual customer
reviews, and per-store stock.

### What you get

- **Product identity** - name, product type, item number(s), product URL, market
- **Pricing** - current price, formatted price, currency, discount, on-sale flag
- **Specials** - was/original price, savings amount, discount %, IKEA's own
  specials label (e.g. "IKEA Family price"), and the price's valid-from/to dates,
  whenever the product actually carries a markdown
- **Ratings & reviews** - average rating and review count on every product, plus
  each individual review's title, text, author, date and rating when detail
  enrichment is on
- **Attributes** - colours (name + hex), width / depth / height, material,
  category path, business area, quick facts, badges (e.g. best seller)
- **Media** - main image and the full product image gallery
- **Variants** - sibling colour/finish options with their own price, image, rating
- **Availability** (optional) - national and per-store stock: quantity, click &
  collect, home delivery, and stock status

### Markets

Pick your market from the **Market and language** dropdown, e.g. United States
(`us/en`), United Kingdom (`gb/en`), Germany (`de/de`), Switzerland – French
(`ch/fr`), Sweden (`se/sv`). Prices, currency, product range and site language
follow the chosen market. In URL mode the market is read straight from each link.

### Modes

- **Search** - keywords + sort + filters
- **Category** - category listing links (`.../cat/<slug>-<id>/`) or bare ids
- **Product item numbers** - exact IKEA item numbers, one full record each
- **Paste URLs** - product, category or search links, walked forward

### Example input

```json
{
  "mode": "search",
  "market": "us/en",
  "searchTerms": ["bookcase"],
  "sortBy": "PRICE_LOW_TO_HIGH",
  "maxItems": 50,
  "fetchDetails": true,
  "maxReviews": 20,
  "includeAvailability": true
}
````

### Example output

> The record below is illustrative sample data.

```json
{
  "kind": "product",
  "id": "00000000",
  "itemNo": "00000000",
  "itemType": "ART",
  "name": "SAMPLE",
  "typeName": "Bookcase",
  "description": "A simple sample bookcase with adjustable shelves.",
  "url": "https://www.ikea.com/us/en/p/sample-bookcase-white-00000000/",
  "price": 79.0,
  "currency": "USD",
  "priceFormatted": "$79.00",
  "onSale": false,
  "isOnSpecial": false,
  "wasPrice": null,
  "wasPriceFormatted": null,
  "savingsAmount": null,
  "discountPercent": null,
  "specialsLabel": null,
  "ratingValue": 4.6,
  "ratingCount": 3091,
  "averageRating": 4.6,
  "reviewCount": 3091,
  "color": "white",
  "colors": [{ "name": "white", "id": "10156", "hex": "ffffff" }],
  "measurementText": "31 1/2x11x79 1/2 \"",
  "width": 31.5,
  "depth": 11.0,
  "height": 79.5,
  "measurementUnit": "in",
  "material": "Particleboard, Paper foil",
  "categoryPath": ["Storage & organization", "Bookshelves & bookcases"],
  "badge": "Best seller",
  "isBestseller": true,
  "onlineSellable": true,
  "mainImage": "https://www.ikea.com/us/en/images/products/sample__0000001.jpg",
  "images": ["https://www.ikea.com/us/en/images/products/sample__0000001.jpg"],
  "numberOfVariants": 4,
  "variants": [
    { "id": "11111111", "name": "SAMPLE", "color": "black", "price": 89.0, "currency": "USD" }
  ],
  "market": "us",
  "language": "en",
  "reviewsCollected": 1,
  "reviews": [
    {
      "author": "Sample Reviewer",
      "date": "2026-06-30",
      "title": "Great shelf for the money",
      "body": "Easy to assemble and very sturdy.",
      "rating": 5
    }
  ],
  "availability": {
    "national": { "country": "US", "homeDelivery": true, "clickCollect": true, "stockStatus": "HIGH_IN_STOCK" },
    "storesWithStock": 42,
    "stores": [
      { "code": "445", "cashCarry": true, "quantity": 62, "stockStatus": "HIGH_IN_STOCK" }
    ]
  }
}
```

### Ratings & reviews

Every product carries its **average rating** and **review count**. Turn on
**Fetch full details and reviews** to also attach the full description and each
individual customer review (title, text, author, date, rating). Products with no
reviews leave the review list empty - nothing is faked. Review photos are not
included.

### Filters & sorting

- **Sort:** relevance, price (low→high / high→low), newest, rating, most reviewed,
  name A-Z, width, height, depth
- **Filters:** min price, max price, min rating, in-stock only, contains keyword,
  specials (search and category modes only)

### Specials

Every product already carries its markdown info (if any) straight from the
search/category card, at no extra request cost: `isOnSpecial`, `wasPrice` /
`wasPriceFormatted`, `savingsAmount`, `discountPercent`, `specialsLabel`,
`isBreathTaking` (IKEA's own "hot deal" flag), and `priceValidFrom` /
`priceValidTo`. Full-price products simply carry `isOnSpecial: false` and
`null` for the rest.

The **Specials** input narrows a search or category run to one of IKEA's real
browse facets - it adds a filter to the same listing request already being
made, so it never costs an extra fetch:

- **IKEA Family price** - the loyalty-program markdown IKEA shows as
  "IKEA Family price"
- **Last chance** - clearance / limited-stock items (IKEA's own `lastChance`
  flag)

These are the only two specials categories IKEA itself offers as a browse
filter. Off by default.

### Connection

Runs on Apify Proxy - keep it enabled for reliable results across products,
prices, ratings and stock. Attaching the full description and individual review
texts works best on a residential connection and may be skipped on limited
plans; a residential connection is recommended for full coverage.

### Export to your apps (optional)

Pipe results straight into Notion, Linear, Airtable, or Apify via Model Context
Protocol (MCP) connectors. Authorize a connector under **Settings → API &
Integrations**, then select it in the input. This is a side-channel; it never
changes the dataset.

### Notes

- One dataset row per product; reviews and availability are nested under it.
- Prices and currency follow the selected market.
- Use **Max products** to bound a run; leave **Max pages** empty for no page limit.

# Actor input Schema

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

search = keywords + filters. category = category listing links or ids. productIds = exact item numbers. url = paste product, category or search links and walk them.

## `market` (type: `string`):

The IKEA market (and its language) to scrape. Sets prices, currency, product range and the site language. In URL mode the market is taken from each link instead.

## `searchTerms` (type: `array`):

One or more keywords to search, e.g. sofa, bookcase, desk lamp.

## `sortBy` (type: `string`):

Order of results within each search or category. Ignored for productIds and single product URLs.

## `categories` (type: `array`):

Category listing URLs (e.g. ikea.com/us/en/cat/bookcases-10382/) or bare numeric category ids.

## `productIds` (type: `array`):

Exact IKEA item numbers, e.g. 20522046. Each is resolved to a full product record.

## `urls` (type: `array`):

Paste product, category or search links from ikea.com. The market is read from each link. Filters apply to search and category links; a single product link returns that exact item.

## `minPrice` (type: `integer`):

Only keep products at or above this price (market currency). Applies to search and category results only — not productIds or single product URLs.

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

Only keep products at or below this price (market currency). Applies to search and category results only.

## `minRating` (type: `integer`):

Only keep products with an average rating at or above this value (1-5). Applies to search and category results only.

## `inStockOnly` (type: `boolean`):

Keep only products currently sellable online. Applies to search and category results only.

## `containsKeyword` (type: `string`):

Keep only products whose name, type or description contains this text. Applies to search and category results only.

## `specialsCategory` (type: `string`):

Show only products in one of IKEA's specials categories: IKEA Family price (loyalty-program markdown) or Last chance (clearance / limited-stock items). Off by default. Applies to search and category results only.

## `fetchDetails` (type: `boolean`):

Attach the full description and individual customer reviews (title, text, author, date, rating) to each product. Uses a residential connection.

## `maxReviews` (type: `integer`):

Cap on individual reviews captured per product. 0 disables review text (ratings are still attached).

## `includeAvailability` (type: `boolean`):

Attach national and per-store stock (quantity, click & collect, home delivery) to each product.

## `maxItems` (type: `integer`):

Total products to return across all inputs. This is the run cap.

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

Optional safety cap on result pages walked per search or category. Leave empty or 0 for no page limit - the run stops at Max products.

## `proxy` (type: `object`):

Apify Proxy configuration. Keeping Apify Proxy enabled is recommended for reliable results. Attaching the full description and individual review texts works best on a residential connection and may be skipped on limited plans.

## `mcpConnectors` (type: `array`):

Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify then Settings then API & Integrations, then select it here. Notion gets a page-per-item export; other connectors get a best-effort write. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify.

## `notionParentPageUrl` (type: `string`):

URL or id of the Notion page under which item pages are created. Required only for the Notion export.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "market": "us/en",
  "searchTerms": [
    "bookcase"
  ],
  "sortBy": "RELEVANCE",
  "categories": [
    "https://www.ikea.com/us/en/cat/bookcases-10382/"
  ],
  "productIds": [
    "20522046"
  ],
  "urls": [
    "https://www.ikea.com/us/en/search/products/?q=bookcase"
  ],
  "inStockOnly": false,
  "specialsCategory": "none",
  "fetchDetails": true,
  "maxReviews": 20,
  "includeAvailability": false,
  "maxItems": 20,
  "maxPages": 0,
  "proxy": {
    "useApifyProxy": true
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

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

No description

# 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 = {
    "searchTerms": [
        "bookcase"
    ],
    "categories": [
        "https://www.ikea.com/us/en/cat/bookcases-10382/"
    ],
    "productIds": [
        "20522046"
    ],
    "urls": [
        "https://www.ikea.com/us/en/search/products/?q=bookcase"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/ikea-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 = {
    "searchTerms": ["bookcase"],
    "categories": ["https://www.ikea.com/us/en/cat/bookcases-10382/"],
    "productIds": ["20522046"],
    "urls": ["https://www.ikea.com/us/en/search/products/?q=bookcase"],
    "proxy": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "bookcase"
  ],
  "categories": [
    "https://www.ikea.com/us/en/cat/bookcases-10382/"
  ],
  "productIds": [
    "20522046"
  ],
  "urls": [
    "https://www.ikea.com/us/en/search/products/?q=bookcase"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/ikea-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=abotapi/ikea-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "IKEA Products & Reviews Scraper",
        "description": "Scrape IKEA products across 50+ markets. Extract names, prices, currencies, ratings, full reviews, colours, dimensions, images, categories, variants, badges and store availability. Supports search, category, item-number and URL inputs with filters and sorting.",
        "version": "1.0",
        "x-build-id": "xXgNfSnCCNnOknhuw"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~ikea-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-ikea-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~ikea-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-ikea-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~ikea-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-ikea-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "category",
                            "productIds",
                            "url"
                        ],
                        "type": "string",
                        "description": "search = keywords + filters. category = category listing links or ids. productIds = exact item numbers. url = paste product, category or search links and walk them.",
                        "default": "search"
                    },
                    "market": {
                        "title": "Market and language",
                        "enum": [
                            "us/en",
                            "au/en",
                            "at/de",
                            "bh/ar",
                            "bh/en",
                            "be/nl",
                            "be/fr",
                            "ca/en",
                            "ca/fr",
                            "cl/es",
                            "cn/zh",
                            "co/es",
                            "hr/hr",
                            "cz/cs",
                            "dk/da",
                            "eg/ar",
                            "eg/en",
                            "ee/et",
                            "fi/fi",
                            "fi/sv",
                            "fr/fr",
                            "de/de",
                            "hu/hu",
                            "in/en",
                            "ie/en",
                            "il/he",
                            "it/it",
                            "jp/en",
                            "jp/ja",
                            "jo/ar",
                            "jo/en",
                            "kw/ar",
                            "kw/en",
                            "lv/lv",
                            "lt/lt",
                            "my/en",
                            "mx/es",
                            "ma/ar",
                            "ma/fr",
                            "nl/nl",
                            "no/no",
                            "om/ar",
                            "om/en",
                            "ph/en",
                            "pl/pl",
                            "pt/pt",
                            "qa/ar",
                            "qa/en",
                            "ro/ro",
                            "sa/ar",
                            "sa/en",
                            "rs/sr",
                            "sg/en",
                            "sk/sk",
                            "si/sl",
                            "kr/ko",
                            "es/es",
                            "se/sv",
                            "ch/fr",
                            "ch/de",
                            "ch/it",
                            "th/en",
                            "th/th",
                            "ae/ar",
                            "ae/en",
                            "gb/en"
                        ],
                        "type": "string",
                        "description": "The IKEA market (and its language) to scrape. Sets prices, currency, product range and the site language. In URL mode the market is taken from each link instead.",
                        "default": "us/en"
                    },
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "One or more keywords to search, e.g. sofa, bookcase, desk lamp.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "RELEVANCE",
                            "PRICE_LOW_TO_HIGH",
                            "PRICE_HIGH_TO_LOW",
                            "NEWEST",
                            "RATING",
                            "MOST_POPULAR",
                            "NAME_ASCENDING",
                            "WIDTH",
                            "HEIGHT",
                            "DEPTH"
                        ],
                        "type": "string",
                        "description": "Order of results within each search or category. Ignored for productIds and single product URLs.",
                        "default": "RELEVANCE"
                    },
                    "categories": {
                        "title": "Category links or ids",
                        "type": "array",
                        "description": "Category listing URLs (e.g. ikea.com/us/en/cat/bookcases-10382/) or bare numeric category ids.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "productIds": {
                        "title": "Item numbers",
                        "type": "array",
                        "description": "Exact IKEA item numbers, e.g. 20522046. Each is resolved to a full product record.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "URLs",
                        "type": "array",
                        "description": "Paste product, category or search links from ikea.com. The market is read from each link. Filters apply to search and category links; a single product link returns that exact item.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep products at or above this price (market currency). Applies to search and category results only — not productIds or single product URLs."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep products at or below this price (market currency). Applies to search and category results only."
                    },
                    "minRating": {
                        "title": "Min rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only keep products with an average rating at or above this value (1-5). Applies to search and category results only."
                    },
                    "inStockOnly": {
                        "title": "In stock only",
                        "type": "boolean",
                        "description": "Keep only products currently sellable online. Applies to search and category results only.",
                        "default": false
                    },
                    "containsKeyword": {
                        "title": "Contains keyword",
                        "type": "string",
                        "description": "Keep only products whose name, type or description contains this text. Applies to search and category results only."
                    },
                    "specialsCategory": {
                        "title": "Specials",
                        "enum": [
                            "none",
                            "family_price",
                            "last_chance"
                        ],
                        "type": "string",
                        "description": "Show only products in one of IKEA's specials categories: IKEA Family price (loyalty-program markdown) or Last chance (clearance / limited-stock items). Off by default. Applies to search and category results only.",
                        "default": "none"
                    },
                    "fetchDetails": {
                        "title": "Fetch full details and reviews",
                        "type": "boolean",
                        "description": "Attach the full description and individual customer reviews (title, text, author, date, rating) to each product. Uses a residential connection.",
                        "default": true
                    },
                    "maxReviews": {
                        "title": "Max reviews per product",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap on individual reviews captured per product. 0 disables review text (ratings are still attached).",
                        "default": 20
                    },
                    "includeAvailability": {
                        "title": "Include store availability",
                        "type": "boolean",
                        "description": "Attach national and per-store stock (quantity, click & collect, home delivery) to each product.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max products",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Total products to return across all inputs. This is the run cap.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Max pages per input",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional safety cap on result pages walked per search or category. Leave empty or 0 for no page limit - the run stops at Max products.",
                        "default": 0
                    },
                    "proxy": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Apify Proxy configuration. Keeping Apify Proxy enabled is recommended for reliable results. Attaching the full description and individual review texts works best on a residential connection and may be skipped on limited plans.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "mcpConnectors": {
                        "title": "Pipe results into your apps (optional)",
                        "type": "array",
                        "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify then Settings then API & Integrations, then select it here. Notion gets a page-per-item export; other connectors get a best-effort write. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify."
                    },
                    "notionParentPageUrl": {
                        "title": "Notion parent page (Notion connector only)",
                        "type": "string",
                        "description": "URL or id of the Notion page under which item pages are created. Required only for the Notion export."
                    },
                    "maxNotifyListings": {
                        "title": "Max items to export per connector",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Cap on items written to each connector per run. Does not affect the dataset.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
