# Bol Product Scraper (`agentx/bol-product-scraper`) Actor

Search Bol.com product listings for the Netherlands and Belgium marketplace. Designed for Benelux retail and sales-partner assortment analysis, returning normalized titles, prices, currency, images, seller signals, availability, URLs, query, and rank.

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

## Pricing

from $4.86 / 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/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

## Bol Product Scraper - Bol.com Product Data Extraction API for Netherlands and Belgium Ecommerce Intelligence

**Bol Product Scraper is a Benelux marketplace data API for tracking Bol.com product search results in the Netherlands and Belgium.** Search Bol.com by keyword and country, then receive a normalized 58-field shopping dataset with titles, prices, currency, images, seller or partner signals, availability text, source URLs, query, rank, and Apify processing metadata. Pay-per-result pricing is $0.01 per Actor start plus $0.0054 per product result on the FREE tier.

[![Product Data](https://img.shields.io/badge/Product_Data-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/bol-product-scraper) [![Price Intelligence](https://img.shields.io/badge/Price_Intelligence-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/bol-product-scraper) [![1 platform route](https://img.shields.io/badge/1_platform_route-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/bol-product-scraper) [![2 countries](https://img.shields.io/badge/2_countries-ffd700?style=for-the-badge&color=ffd700)](https://apify.com/agentx/bol-product-scraper)

---

### Why Choose This API

#### Bol.com Data for Benelux Marketplace Analysis

**🎯 Product Search in One API Call**
Search Bol.com with `keyword`, `country`, and `max_results` to compare public search results across the Netherlands and Belgium without manually parsing localized marketplace pages.

**💰 Price Intelligence When Sources Disclose It**
Capture EUR prices, availability text, offer context, seller or partner signals, product URLs, and rank signals when Bol.com exposes them in public search and listing pages.

**🌍 Country-Aware Product Coverage**
Bol Product Scraper supports 2 countries: Belgium, Netherlands. Country routing follows source marketplace behavior instead of applying a fake post-search filter.

**🤖 AI-Ready JSON Output**
Structured records support Benelux price monitoring, local assortment audits, catalog matching, RAG pipelines, marketplace dashboards, and product intelligence workflows.

**⚡ Managed Processing and Platform-Aware Collection**
Request up to `max_results` records while preserving the selected Bol.com market. Netherlands and Belgium results can differ by localization, availability, partner offer mix, and source ranking.

**📊 58 Data Fields Per Product**
Extract product intelligence including:

- Product metadata (title, brand, category, description, images)
- Pricing data (price, currency, price text, discount, promotion text)
- Seller and fulfillment data (seller, shipping, delivery, return signals)
- Availability, rating, review, rank, source URL, and processing metadata

---

### Quick Start Guide

#### How to Extract Product Data in 3 Steps

##### Step 1: Configure Your Search

[Open Actor Input](https://apify.com/agentx/bol-product-scraper)

##### Step 2: Run the Actor

Click **Start** and the scraper will extract product data from the supported shopping source for your selected country.

##### Step 3: Download Your Data

Export results in JSON format or access via API. Data includes the 58-field product dataset schema, with optional fields populated only when the source platform exposes them.

---

### Input Parameters

#### Required Inputs

| Parameter | Type | Description | Example Values |
| --------- | ---- | ----------- | -------------- |
| `keyword` | string | Product name, model, brand, or search phrase | `"Smart TV"`, `"wireless earbuds"` |
| `country` | string | Target country or source market for product search | `"Belgium"` |
| `max_results` | integer | Maximum products to request per selected platform or route | `10`, `100`, `10000` |

#### Optional Filters and Output Settings

| Parameter | Type | Description | Example Values |
| --------- | ---- | ----------- | -------------- |
| `platforms` | not exposed | Single-platform Actor; the source platform is fixed by the Actor | Not applicable |
| Source optional fields | mixed | Optional output fields such as seller, rating, discount, shipping, and variants are populated only when the source exposes them | `seller`, `rating`, `shipping_text` |

#### Platform Filter Support Matrix

`✅` means the current actor applies the input as a source-side request filter or route selector.
`❌` means the input is not exposed for that source.

| Platform | `keyword` | `country` | `max_results` | `platforms` | Detail fields |
| -------- | --------- | --------- | ------------- | ----------- | ------------- |
| Bol.com | ✅ | ✅ | ✅ | ❌ | Platform-dependent |

#### `platforms` Format Options

This single-platform Actor does not expose a `platforms` input. The source platform is fixed by the Actor, so users should provide only `keyword`, `country`, and `max_results`.

**Single-platform behavior**:

- Platform selection is not required.
- Passing `platforms` is not part of the public input schema.
- Use All Shopping Scraper when a multi-platform allowlist is needed.

#### Search Formatting Best Practices

**Product Name or Category**:

- `"wireless mouse"`
- `"Smart TV"`
- `"PlayStation 5"`

**Brand and Model**:

- `"Sony WH-1000XM5"`
- `"iPhone case"`
- `"Lenovo laptop"`

**Country Selection**:

- Use the separate `country` parameter for marketplace routing.
- Do not append the country name to `keyword` unless the source marketplace expects it as part of the product phrase.

> **Important**: Product search ranking is controlled by the source platform. The Actor preserves `query`, `source_url`, and `rank` so users can compare the dataset with the original source behavior.

#### Supported Countries for Product Scraping

Belgium, Netherlands

#### Country-Aware Platform Routing

The runtime selects product routes from the Actor input and the selected country. Country-specific platforms are used only when the selected `country` matches the coverage listed below.

| Platform route | Country / market routing |
| -------------- | ------------------------ |
| Bol.com | Belgium, Netherlands |

##### Example Input Configuration

```json
{
  "keyword": "Smart TV",
  "country": "Belgium",
  "max_results": 100
}
````

***

### Output Data Schema

#### Complete Product Listing Data Structure

Each extracted product record uses the shared AgentX shopping dataset structure with 58 normalized fields. Fields are populated only when the source listing, source API, or detail page exposes them reliably.

#### Product Metadata Fields

| Field | Type | Description |
| ----- | ---- | ----------- |
| `main_image` | string/null | Primary product image URL |
| `image_urls` | array/null | Deduplicated product image URLs |
| `title` | string/null | Product title |
| `brand` | string/null | Product brand |
| `category`, `breadcrumbs` | string/array/null | Product category and breadcrumb path |
| `description`, `features`, `specifications` | string/array/object/null | Product content and detail-page fields |

#### Offer & Availability Details

| Field | Type | Description |
| ----- | ---- | ----------- |
| `stock_status`, `stock_text` | string/null | Normalized and original availability text |
| `sales_text`, `buy_limit` | string/integer/null | Demand or purchase-limit signals |
| `rating`, `review_count` | number/integer/null | Public rating and review signals |
| `sponsored` | boolean/null | Whether the source marks the result as sponsored |

#### Pricing Information

| Field | Type | Description |
| ----- | ---- | ----------- |
| `price` | number/null | Current numeric price |
| `was_price` | number/null | Original or strikethrough price |
| `currency` | string/null | ISO currency code or source currency signal |
| `price_text` | string/null | Original price text for verification |
| `discount_pct`, `discount_text`, `promo_text`, `installment_text` | mixed/null | Discount, promotion, coupon, and installment signals |

#### Seller Data

| Field | Type | Description |
| ----- | ---- | ----------- |
| `seller`, `seller_url`, `seller_score` | string/number/null | Seller, shop, or marketplace signals |
| `shipping_text`, `shipping_cost` | string/number/null | Shipping text and numeric shipping cost when available |
| `delivery_text`, `pickup_text`, `return_text`, `return_days`, `warranty_text` | mixed/null | Delivery, pickup, return, and warranty signals |
| `platform`, `site`, `country`, `product_url`, `source_url`, `query`, `rank` | mixed/null | Source traceability fields for query-to-result audits |

#### Example JSON Output

```json
{
  "main_image": "https://media.s-bol.com/example.jpg",
  "image_urls": [
    "https://media.s-bol.com/example.jpg"
  ],
  "title": "Samsung 55 Inch 4K Smart TV",
  "brand": "Samsung",
  "category": "Electronics",
  "description": "Example Bol.com product record for README documentation.",
  "features": [
    "Source-linked product row",
    "Normalized AgentX shopping schema"
  ],
  "product_id": "EXAMPLE-001",
  "price": 499.0,
  "currency": "EUR",
  "price_text": "EUR 499.00",
  "stock_status": "in_stock",
  "stock_text": "In stock",
  "rating": 4.6,
  "review_count": 1248,
  "seller": "bol.com",
  "platform": "Bol.com",
  "site": "bol.com",
  "country": "Belgium",
  "product_url": "https://www.bol.com/nl/nl/p/example/9300000000000000/",
  "source_url": "https://www.bol.com/nl/nl/s/?searchtext=Smart+TV",
  "query": "Smart TV",
  "rank": 1,
  "sponsored": false,
  "processor": "https://apify.com/agentx/bol-product-scraper",
  "processed_at": "2026-06-29T00:00:00+00:00"
}
```

#### Export Formats

Export results as JSON, JSONL, CSV, Excel, XML, RSS, or access records programmatically through the Apify dataset API.

***

### Integration Examples

#### Actor ID for Platform Integration

- Actor ID: `agentx/bol-product-scraper`
- REST API path: `agentx~bol-product-scraper`
- Actor URL: `https://apify.com/agentx/bol-product-scraper`

#### Ⓜ️ [Make.com Setup:](https://www.make.com/en/register?pc=marketingme)

Use the Apify module, select `agentx/bol-product-scraper`, pass the JSON input, then map dataset items into your spreadsheet, pricing database, product feed, or alert workflow.

#### 🎱 [N8N.io Setup:](https://n8n.io/)

Use the Apify node or HTTP Request node to run the Actor, then fetch `defaultDatasetId` items for downstream automation.

#### Python Integration Example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

## Prepare Actor input
run_input = {"keyword": "Smart TV", "country": "Belgium", "max_results": 100}

## Run the Actor and wait for completion
run = client.actor("agentx/bol-product-scraper").call(run_input=run_input)

## Fetch results from dataset
items = client.dataset(run["defaultDatasetId"]).list_items().items
for item in items:
    print(item.get("title"), item.get("price"), item.get("currency"))
```

#### JavaScript/Node.js Integration

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

const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("agentx/bol-product-scraper").call({"keyword": "Smart TV", "country": "Belgium", "max_results": 100});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(item.title, item.price, item.currency));
```

#### JSON-LD Metadata

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Bol Product Scraper",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Cloud",
  "url": "https://apify.com/agentx/bol-product-scraper",
  "provider": {
    "@type": "Organization",
    "name": "AgentX",
    "url": "https://apify.com/agentx"
  },
  "offers": {
    "@type": "Offer",
    "price": 0.0054,
    "priceCurrency": "USD",
    "description": "Pay-per-result event pricing"
  }
}
```

***

### Pricing & Cost Calculator

#### Transparent Pay-Per-Use Model

Bol Product Scraper uses pay-per-event pricing. `apify-actor-start` is charged at $0.01 when the Actor starts. The dataset billing event is `result`: FREE tier $0.0054 per delivered product record, and GOLD/PLATINUM/DIAMOND $0.00486 per delivered product record.

#### Cost Examples

| Delivered product records | FREE-tier result cost | Notes |
| ------------------------- | --------------------- | ----- |
| 100 | $0.54 | Small validation run |
| 1,000 | $5.40 | Standard category or keyword run |
| 10,000 | $54.00 | Large export before account-tier discounts |

#### Pricing Scope

Pricing applies to delivered dataset records. The final result count can be lower than `max_results` when the source platform returns fewer public products, reaches a source-side boundary, or omits usable product rows.

***

### Use Cases & Applications

#### Ecommerce & Marketplace Intelligence

Track Bol.com product prices, availability, images, partner/seller signals, source URLs, and search rank for Benelux ecommerce analysis.

#### Market Research & Business Intelligence

Compare Netherlands and Belgium assortment differences, EUR price bands, offer visibility, partner mix, and keyword ranking changes across repeated runs.

#### AI & Machine Learning Applications

Feed Bol.com product rows into Benelux retail dashboards, product matching, RAG systems, recommendation workflows, and localized catalog classification.

#### Pricing & Assortment Analytics

Schedule repeated Netherlands and Belgium runs for the same keyword to monitor price changes, stock text, rank movement, and partner-offer shifts.

#### Product Feed & Catalog Enrichment

Use Bol.com titles, images, URLs, price fields, availability text, seller signals, and query/rank metadata to enrich Benelux product catalogs.

***

### FAQ

#### What product platforms does Bol Product Scraper support?

Bol Product Scraper supports the Bol.com route for the Netherlands and Belgium. The selected country controls the localized Bol.com search path and market context.

#### How many products can Bol Product Scraper extract per selected platform?

`max_results` is the requested upper bound for Bol.com rows. The final count can be lower when Bol.com returns fewer public listings, changes pagination, or exposes fewer usable product cards.

#### Which countries are supported?

Supported countries are defined by the Actor input schema: Belgium, Netherlands.

#### How fresh is the product data?

The Actor reads current public search/listing responses at run time. Marketplace ranking, availability, price, and seller signals can change between runs.

#### What data format does the scraper output?

The default Apify dataset can be exported as JSON, JSONL, CSV, Excel, XML, RSS, or consumed through the dataset API.

#### Can I integrate this with my existing tools?

Yes. Use the Apify Client SDK, REST API, Make, n8n, Zapier-style workflows, webhooks, or direct dataset exports.

#### Is the scraper compatible with AI frameworks?

Yes. The normalized JSON dataset is suitable for LangChain, CrewAI, AutoGPT, RAG pipelines, and custom shopping agents.

#### How do I handle limited source availability?

Use `query`, `source_url`, `platform`, `site`, `country`, `rank`, and `processed_at` to verify what the source returned for that run.

#### Why do some search results seem unrelated to my search terms?

Bol.com search can differ between the Netherlands and Belgium because of localization, availability, partner offers, and ranking behavior. The Actor preserves the source ranking instead of rewriting it.

#### Why are some price fields empty?

Some source listings hide prices, require selection, show unavailable products, or expose price only on detail pages. Optional fields remain empty when the source does not expose them reliably.

#### What if no products are found?

Try a broader keyword, confirm the selected country is supported, and check whether the same query returns public results on the source marketplace.

#### Can I get seller or shop information?

Seller, partner, or shop fields are populated when Bol.com exposes them. Some product cards may show limited offer context or only a retailer-owned listing.

#### How accurate is rating data?

Rating and review fields reflect the public values exposed by the source at run time. They should be treated as marketplace-provided signals.

#### How are platform-specific failures handled?

The Actor keeps source-specific failures isolated where possible. Use run logs, `source_url`, and dataset counts to diagnose source-side blocks or empty responses.

#### Why do different platforms show different product counts?

Bol.com product counts can differ by country, keyword, partner availability, and source pagination. The Actor preserves those differences so users see realistic Benelux marketplace data.

***

### SEO Keywords & Search Terms

#### Primary Keywords

`Bol Product Scraper`, `Bol.com scraper`, `Bol.com product data API`, `Benelux marketplace scraper`

#### Long-Tail Keywords

`scrape Bol.com Netherlands products`, `scrape Bol.com Belgium products`, `Bol.com price monitoring dataset`, `Bol Product Scraper Apify API`

#### Industry Terms

`Benelux marketplace intelligence`, `partner assortment analysis`, `EUR price monitoring`, `product feed enrichment`, `retail catalog analytics`

#### Location-Based Keywords

`Bol.com Netherlands product data`, `Bol.com Belgium product data`, `Benelux ecommerce scraper`, `Dutch marketplace data`, `Belgian marketplace data`

#### Use Case Keywords

`Benelux competitor price tracking`, `Bol.com partner monitoring`, `marketplace assortment analytics`, `localized product catalog enrichment`, `retail market research`

***

### Trust & Certifications

Bol Product Scraper is maintained by AgentX and runs on Apify infrastructure. The output keeps source URLs, query values, platform names, country, rank, and processing timestamps so users can audit the relationship between input and dataset rows.

***

### Legal & Compliance

#### Data Rights & Usage

Use exported product data according to applicable laws, marketplace terms, and your own compliance requirements. The Actor returns public product/search information and does not grant resale or intellectual-property rights.

#### Privacy Compliance

The Actor is built for product and listing data, not private account data, checkout data, or personal shopper profiles.

#### Platform Terms of Service

Bol Product Scraper respects source-platform public responses. Platform ranking, availability, pricing, and result limits can change independently of the Actor.

#### Enterprise Support

For high-volume usage, dedicated workflows, or compliance review, contact AgentX through the Apify Actor page or publisher profile.

***

### Related Tools

#### Shopping & Ecommerce

- [All Shopping Scraper](https://apify.com/agentx/all-shopping-scraper)
- [AliExpress Product Scraper](https://apify.com/agentx/aliexpress-product-scraper)
- [Bol Product Scraper](https://apify.com/agentx/bol-product-scraper)
- [Hepsiburada Product Scraper](https://apify.com/agentx/hepsiburada-product-scraper)
- [Kakaku Product Scraper](https://apify.com/agentx/kakaku-product-scraper)
- [Rakuten Product Scraper](https://apify.com/agentx/rakuten-product-scraper)

***

### Support & Community

- Actor page: <https://apify.com/agentx/bol-product-scraper>
- Publisher page: <https://apify.com/agentx>
- Use Apify run logs and dataset previews to verify `query`, `country`, `source_url`, and `rank` when diagnosing result differences.

*Last updated: 2026-06-29. Maintained by AgentX.*

# Actor input Schema

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

Product, brand, category, or search phrase to extract Bol.com product data

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

Bol.com country/site setting to query.

## `max_results` (type: `integer`):

Maximum number of Bol.com product records to return

## Actor input object example

```json
{
  "keyword": "Smart TV",
  "country": "Belgium",
  "max_results": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Product records returned by this actor with normalized fields and source URLs.

# 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 = {
    "keyword": "Smart TV",
    "country": "Belgium",
    "max_results": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentx/bol-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 = {
    "keyword": "Smart TV",
    "country": "Belgium",
    "max_results": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("agentx/bol-product-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 '{
  "keyword": "Smart TV",
  "country": "Belgium",
  "max_results": 10
}' |
apify call agentx/bol-product-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bol Product Scraper",
        "description": "Search Bol.com product listings for the Netherlands and Belgium marketplace. Designed for Benelux retail and sales-partner assortment analysis, returning normalized titles, prices, currency, images, seller signals, availability, URLs, query, and rank.",
        "version": "1.0",
        "x-build-id": "mdOeo8Q2gmSFjDdfu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/agentx~bol-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-agentx-bol-product-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/agentx~bol-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-agentx-bol-product-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/agentx~bol-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-agentx-bol-product-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": [
                    "keyword",
                    "country",
                    "max_results"
                ],
                "properties": {
                    "keyword": {
                        "title": "🔍 Keyword",
                        "type": "string",
                        "description": "Product, brand, category, or search phrase to extract Bol.com product data"
                    },
                    "country": {
                        "title": "🌍 Country",
                        "enum": [
                            "Belgium",
                            "Netherlands"
                        ],
                        "type": "string",
                        "description": "Bol.com country/site setting to query."
                    },
                    "max_results": {
                        "title": "📊 Max Results",
                        "minimum": 10,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of Bol.com product records to return"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
