# Bol.com Scraper (`unfenced-group/bol-com-scraper`) Actor

Scrape bol.com (NL/BE) products: prices, EAN-13, ratings, sellers, variants, full specifications, complete reviews and every seller offer.

- **URL**: https://apify.com/unfenced-group/bol-com-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 product listings

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.com Scraper

Extract structured product data from **bol.com** — the largest online retailer in the Netherlands and Belgium. Search by keyword, crawl category/brand/series pages, or pass product URLs directly. Get prices, EAN-13 barcodes, ratings, sellers, stock, and full per-variant data in clean JSON.

Works on both the Dutch shop (`bol.com/nl`) and the Belgian shop (`bol.com/be`).

![Bol.com Scraper](https://api.apify.com/v2/key-value-stores/lJlifu6C8YQfZMPKE/records/bol-com-scraper-banner.png)

### What it does

- **Search** any keyword and collect every product on the results pages
- **Crawl** category (`/l/`), brand (`/pb/`), and series (`/serie/`) listing pages
- **Enrich** each product with detail-page data: EAN-13, brand, weight, condition, buy-box price range, and full specifications
- **Collect full reviews** per product — every review with rating, title, body, date and helpful count, plus the rating distribution
- **Collect all seller offers** — every seller competing on a product, not just the buy-box winner
- **Track prices** across variants and sellers for repricing and competitive analysis
- **Monitor** ratings, review counts, stock, and sponsored placement

### Input

| Field | Type | Description |
|---|---|---|
| `searchQuery` | string | A single keyword to search (e.g. `koffie`, `lego`, `airpods`). |
| `searchQueries` | array | Several keywords in one run. Each becomes its own search. |
| `startUrls` | array | Bol.com URLs to crawl: search (`/s/`), category (`/l/`), brand (`/pb/`), series (`/serie/`) or product (`/p/`) pages. |
| `country` | string | `nl` (default) or `be`. Sets the shop for keyword searches. |
| `maxResults` | integer | Overall ceiling on items returned across all sources. `0` = unlimited. Default `50`. |
| `maxResultsPerUrl` | integer | Optional per-source cap. Each search query and each start URL stops after this many items, while `maxResults` stays the overall ceiling. `0` = no per-source limit. Default `0`. |
| `fetchDetails` | boolean | Visit each product detail page for per-variant EAN-13, brand, weight, buy-box, specifications and a review sample. Default `false`. |
| `includeVariantPrices` | boolean | Add the per-variant list (each variant's EAN-13, price, condition, availability) without the full detail enrichment. Visits the detail page. Ignored when `fetchDetails` is on. Default `false`. |
| `fetchReviews` | boolean | Collect the full review list and rating distribution per product. Visits the detail page. Default `false`. |
| `fetchOffers` | boolean | Collect every seller's offer per product, not just the buy-box. Visits the detail page. Default `false`. |
| `maxReviewsPerProduct` | integer | Cap on reviews collected per product when `fetchReviews` is on. Default `50`. |
| `proxyConfiguration` | object | Optional. Leave empty to run without a proxy — the scraper escalates to residential automatically only if bol.com blocks a request. |

#### Example — search the Dutch shop

```json
{
  "searchQuery": "koffiebonen",
  "country": "nl",
  "maxResults": 100,
  "fetchDetails": false
}
````

#### Example — multiple keywords with full detail enrichment

```json
{
  "searchQueries": ["nespresso cups", "dolce gusto", "senseo pads"],
  "country": "nl",
  "maxResults": 200,
  "fetchDetails": true
}
```

#### Example — crawl a category page on the Belgian shop

```json
{
  "startUrls": [
    { "url": "https://www.bol.com/be/nl/l/koffie/13302/" }
  ],
  "maxResults": 300
}
```

#### Example — scrape specific products by URL

```json
{
  "startUrls": [
    { "url": "https://www.bol.com/nl/nl/p/nescafe-dolce-gusto-lungo-48-koffiecups/9200000131373794/" }
  ],
  "fetchDetails": true
}
```

#### Example — full competitive intelligence (specs, reviews, all sellers)

```json
{
  "searchQuery": "nespresso machine",
  "country": "nl",
  "maxResults": 50,
  "fetchDetails": true,
  "fetchReviews": true,
  "fetchOffers": true
}
```

### Output

Every run writes one record per product to the dataset.

#### Listing fields (always present)

| Field | Type | Description |
|---|---|---|
| `type` | string | `"listing"` or `"detail"`. |
| `productId` | string | Bol.com product ID. |
| `title` | string | Product title. |
| `url` | string | Full product URL. |
| `price` | number | Current selling price in EUR. |
| `priceCurrency` | string | Always `"EUR"`. |
| `selectPrice` | number|null | Select-deal price, if any. |
| `unitPrice` | number|null | Price per unit (per kg/litre/piece). `null` for items not sold by measure. |
| `referencePrice` | number|null | The "was" price (bol's most-shown price over 90 days), when discounted. |
| `discountPercentage` | number|null | Discount vs the reference or Select price, when discounted. |
| `rating` | number|null | Average review rating (0–5). |
| `reviewCount` | number|null | Number of reviews. |
| `seller` | string|null | Seller / retailer name (e.g. `bol`). |
| `condition` | string|null | `New`, `Refurbished`, `Secondhand`. |
| `availability` | string|null | Stock and delivery note. |
| `deliveredWithin48h` | boolean|null | Whether 48h delivery applies. |
| `sponsored` | boolean | Whether the placement is sponsored. |
| `sustainable` | boolean | Whether the product carries a sustainability label. |
| `imageUrl` | string|null | Largest available product image. |
| `description` | string|null | Product description text. |
| `category` | array | Category path, broadest first. |
| `sourcePage` | number | Result page the item came from. |
| `sourceUrl` | string | The listing URL it was found on. |
| `domain` | string | `www.bol.com`. |
| `scrapedAt` | string | ISO timestamp. |

#### Detail fields (added when `fetchDetails: true`)

| Field | Type | Description |
|---|---|---|
| `gtin13` | string|null | EAN-13 / GTIN-13 barcode. |
| `brand` | string|null | Brand name. |
| `bestRating` | number|null | Aggregate rating from the detail page. |
| `lowPrice` | number|null | Lowest buy-box price across offers. |
| `highPrice` | number|null | Highest buy-box price across offers. |
| `offerCount` | number|null | Number of offers. |
| `images` | array | All product images. |
| `variants` | array | Per-variant objects (see below). |
| `specifications` | array | Structured product specs as `{ name, value }` pairs. |
| `reviewSample` | array | Up to 10 reviews: `rating`, `title`, `body`, `date`. |
| `reviews` | array | Full review list (when `fetchReviews` is on): `rating`, `title`, `body`, `date`, `helpfulCount`. |
| `ratingDistribution` | object | Per-star review counts (when `fetchReviews` is on). |
| `offers` | array | Every seller's offer (when `fetchOffers` is on): `seller`, `price`, `condition`, `availability`, `offerType`. |

Each entry in `variants` contains: `productId`, `name`, `url`, `gtin13`, `brand`, `weightGrams`, `price`, `priceCurrency`, `availability`, `condition`, `seller`, `imageUrl`.

#### Example output (listing)

```json
{
  "type": "listing",
  "productId": "9200000074456102",
  "title": "Douwe Egberts Aroma Rood Filterkoffie - 6 x 500 gram",
  "url": "https://www.bol.com/nl/nl/p/douwe-egberts-aroma-rood-filterkoffie-6-x-500-gram/9200000074456102/",
  "price": 59.94,
  "priceCurrency": "EUR",
  "unitPrice": 9.99,
  "rating": 4.7,
  "reviewCount": 437,
  "seller": "bol",
  "condition": "New",
  "availability": "Op voorraad. Voor 23:59 uur besteld, morgen in huis",
  "sponsored": false,
  "imageUrl": "https://media.s-bol.com/gLoBQyJ92Zqk/550x504.jpg",
  "category": ["Eten & Drinken", "Frisdrank, sap, koffie en thee", "Koffie", "Filterkoffie"],
  "sourcePage": 1,
  "domain": "www.bol.com",
  "scrapedAt": "2026-06-19T09:32:17.548Z"
}
```

#### Example output (detail variant)

```json
{
  "gtin13": "8445290872197",
  "brand": "NESCAFÉ Dolce Gusto",
  "weightGrams": 1070,
  "price": 29.97,
  "priceCurrency": "EUR",
  "availability": "InStock",
  "condition": "NewCondition",
  "seller": "bol"
}
```

#### Example output (specifications, reviews, offers)

```json
{
  "specifications": [
    { "name": "Soort koffie", "value": "Cups" },
    { "name": "Branding", "value": "Medium gebrand" }
  ],
  "ratingDistribution": { "5": 180, "4": 32, "3": 9, "2": 4, "1": 3 },
  "reviews": [
    { "rating": 5, "title": "Goede koffie", "body": "Zoals altijd een goede keuze.", "date": "2025-08-26", "helpfulCount": 3 }
  ],
  "offers": [
    { "seller": "bol", "price": 19.47, "condition": "New", "availability": "Op voorraad", "offerType": "STANDARD" },
    { "seller": "CoffeeStore", "price": 16.47, "condition": "New", "availability": "Op voorraad", "offerType": "STANDARD" }
  ]
}
```

### Pricing

This actor uses pay-per-result pricing. You only pay for the results you receive.

- **$0.002** per product listing (`fetchDetails: false`)
- **$0.008** per product detail (`fetchDetails: true` — adds EAN-13, variants, specifications, buy-box range)
- **$0.003** per product with full reviews (`fetchReviews: true`)
- **$0.003** per product with all seller offers (`fetchOffers: true`)

Higher subscription tiers receive an automatic volume discount on every event.

### Notes

- Bol.com applies bot protection that is tied to IP reputation. Small runs work without a proxy. For larger runs the actor automatically switches to a country-matched residential proxy when it detects a block — no configuration needed.
- Personal data is not collected. Review author names are excluded; only the rating, title, body, and date of a review are returned. Seller names are company names, not individuals.

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `searchQuery` (type: `string`):

A single keyword to search on bol.com (e.g. 'koffie', 'lego', 'airpods'). Becomes a /s/?searchtext= URL on the selected shop.

## `searchQueries` (type: `array`):

Several keywords to search in one run. Each becomes its own search.

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

Bol.com URLs to crawl. Supported: search (/s/), category (/l/), brand (/pb/), series (/serie/) and product detail (/p/) pages, on either www.bol.com/nl/nl/ or www.bol.com/be/nl/.

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

Which bol.com shop to use for keyword searches. Also pins the residential proxy country when fallback is needed. Start URLs keep their own /nl/ or /be/ path.

## `maxResults` (type: `integer`):

Overall ceiling on items pushed across all sources (search queries + start URLs combined). Use 0 for unlimited.

## `maxResultsPerUrl` (type: `integer`):

Optional per-source cap. Each search query and each start URL stops after this many items, while 'Max results' still applies as the overall ceiling. Use 0 to apply no per-source limit. Useful when crawling several URLs in one run so the first source does not consume the whole budget.

## `includeVariantPrices` (type: `boolean`):

Add the per-variant list (each variant's EAN-13, price, condition and availability) to every product, without pulling the full detail enrichment. Visits the product detail page. Ignored when 'Fetch product detail pages' is already on, since variants are included there.

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

Visit each product's detail page to add per-variant EAN-13, brand, weight, condition, buy-box price range, full image set, specifications and a review sample. Slower and billed at the higher detail rate.

## `fetchReviews` (type: `boolean`):

Collect the full customer review list per product (rating, title, body, date, helpful count) plus the rating distribution. Visits the detail page; billed per product that returns reviews.

## `fetchOffers` (type: `boolean`):

Collect every seller's offer for each product (seller, price, condition, delivery), not just the buy-box winner. Visits the detail page; billed per product that returns offers.

## `maxReviewsPerProduct` (type: `integer`):

Cap on reviews collected per product when 'Fetch full reviews' is on.

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

Optional. Leave empty to start without a proxy — the scraper escalates to Apify Residential (country-pinned) automatically only if bol.com blocks the request. Set this to force a proxy from the start.

## Actor input object example

```json
{
  "searchQuery": "koffie",
  "searchQueries": [],
  "startUrls": [],
  "country": "nl",
  "maxResults": 50,
  "maxResultsPerUrl": 0,
  "includeVariantPrices": false,
  "fetchDetails": false,
  "fetchReviews": false,
  "fetchOffers": false,
  "maxReviewsPerProduct": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "searchQuery": "koffie"
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/bol-com-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 = { "searchQuery": "koffie" }

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/bol-com-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 '{
  "searchQuery": "koffie"
}' |
apify call unfenced-group/bol-com-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Bol.com Scraper",
        "description": "Scrape bol.com (NL/BE) products: prices, EAN-13, ratings, sellers, variants, full specifications, complete reviews and every seller offer.",
        "version": "0.0",
        "x-build-id": "uAYE5s12YDVnQQzQ5"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/unfenced-group~bol-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-unfenced-group-bol-com-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/unfenced-group~bol-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-unfenced-group-bol-com-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/unfenced-group~bol-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-unfenced-group-bol-com-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",
                "properties": {
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "A single keyword to search on bol.com (e.g. 'koffie', 'lego', 'airpods'). Becomes a /s/?searchtext= URL on the selected shop."
                    },
                    "searchQueries": {
                        "title": "Search queries (multiple)",
                        "type": "array",
                        "description": "Several keywords to search in one run. Each becomes its own search.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Bol.com URLs to crawl. Supported: search (/s/), category (/l/), brand (/pb/), series (/serie/) and product detail (/p/) pages, on either www.bol.com/nl/nl/ or www.bol.com/be/nl/.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "country": {
                        "title": "Country shop",
                        "enum": [
                            "nl",
                            "be"
                        ],
                        "type": "string",
                        "description": "Which bol.com shop to use for keyword searches. Also pins the residential proxy country when fallback is needed. Start URLs keep their own /nl/ or /be/ path.",
                        "default": "nl"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Overall ceiling on items pushed across all sources (search queries + start URLs combined). Use 0 for unlimited.",
                        "default": 50
                    },
                    "maxResultsPerUrl": {
                        "title": "Max results per source",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional per-source cap. Each search query and each start URL stops after this many items, while 'Max results' still applies as the overall ceiling. Use 0 to apply no per-source limit. Useful when crawling several URLs in one run so the first source does not consume the whole budget.",
                        "default": 0
                    },
                    "includeVariantPrices": {
                        "title": "Include variant prices",
                        "type": "boolean",
                        "description": "Add the per-variant list (each variant's EAN-13, price, condition and availability) to every product, without pulling the full detail enrichment. Visits the product detail page. Ignored when 'Fetch product detail pages' is already on, since variants are included there.",
                        "default": false
                    },
                    "fetchDetails": {
                        "title": "Fetch product detail pages",
                        "type": "boolean",
                        "description": "Visit each product's detail page to add per-variant EAN-13, brand, weight, condition, buy-box price range, full image set, specifications and a review sample. Slower and billed at the higher detail rate.",
                        "default": false
                    },
                    "fetchReviews": {
                        "title": "Fetch full reviews",
                        "type": "boolean",
                        "description": "Collect the full customer review list per product (rating, title, body, date, helpful count) plus the rating distribution. Visits the detail page; billed per product that returns reviews.",
                        "default": false
                    },
                    "fetchOffers": {
                        "title": "Fetch all seller offers",
                        "type": "boolean",
                        "description": "Collect every seller's offer for each product (seller, price, condition, delivery), not just the buy-box winner. Visits the detail page; billed per product that returns offers.",
                        "default": false
                    },
                    "maxReviewsPerProduct": {
                        "title": "Max reviews per product",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Cap on reviews collected per product when 'Fetch full reviews' is on.",
                        "default": 50
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional. Leave empty to start without a proxy — the scraper escalates to Apify Residential (country-pinned) automatically only if bol.com blocks the request. Set this to force a proxy from the start.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
