# BMW Europe Price Tracker (`rastriq/bmw-europe-price-tracker`) Actor

Extract official BMW vehicle prices, trim lines, and catalog data across 14 European markets. ~4,100 structured records per run in under 30 seconds.

- **URL**: https://apify.com/rastriq/bmw-europe-price-tracker.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** Developer tools, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 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.

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## BMW Europe Price Tracker

Extract official BMW vehicle prices, trim lines, and catalog data across 14 European markets — updated daily from BMW's own configurator. **BMW Europe Price Tracker** returns structured records for every model × finish line combination, ready to export to JSON, CSV, or Excel.

> 🚀 **Try it free** — your first $5 of usage is on Apify. No credit card required.


### 📌 What is BMW Europe Price Tracker?

**BMW Europe Price Tracker** is an Apify Actor that collects official list prices and vehicle catalog data directly from BMW's European configurators. It covers all current BMW models — from Series 1 to M models and the full electric i range — across 14 markets simultaneously.

Unlike manual price checks or fragmented data sources, BMW Europe Price Tracker delivers a consistent, structured dataset in seconds. You can extract data for a single country or all 14 markets in a single run.

Use **BMW Europe Price Tracker** to:

- 💰 **Monitor BMW pricing across Europe** — track gross and net list prices, VAT rates, and emission taxes by market, updated on demand
- 📊 **Build competitive intelligence reports** — compare how BMW positions models and trims between Germany, the UK, Spain, France, and 10 more markets
- 🔄 **Power automotive analytics dashboards** — feed pricing data into your BI tools, spreadsheets, or data warehouse on a scheduled basis
- 🚗 **Catalog full BMW model lineups** — get every available derivative, body style, fuel type, and drivetrain variant per market in one structured dataset
- 📐 **Analyze net vs. gross price differentials** — VAT rates and emission taxes vary significantly by country; this actor surfaces them field by field


### 📋 What data does BMW Europe Price Tracker extract?

**BMW Europe Price Tracker** returns one record per vehicle model × finish line combination. A full 14-market run yields ~4,100 records.

|                                  |                                       |
| -------------------------------- | ------------------------------------- |
| 🏷️ Model range & name            | 🔢 Model code & derivative            |
| 🌍 Market (country)              | 💱 Currency (ISO 4217)                |
| ⛽ Fuel type                     | 🚗 Body style & number of doors       |
| ⚡ Electrification / hybrid flag | 🔧 Transmission & drive type          |
| 🏎️ Finish line name & code       | 🔩 Engine series                      |
| 💰 Gross list price (with taxes) | 📉 Net list price (ex-taxes)          |
| 🧾 VAT percentage                | 🏭 Emission tax rate                  |
| 📅 Effect date (model validity)  | 🔗 Direct BMW configurator URL        |

**Full field reference:**

| Field | Type | Description |
|-------|------|-------------|
| `market` | string | ISO 3166-1 alpha-2 country code (`es`, `de`, `gb`…) |
| `currency` | string | ISO 4217 currency code (`EUR`, `GBP`, `SEK`…) |
| `model_range` | string | BMW chassis/platform code (`F70`, `G20`, `NA5`…) |
| `model_range_name` | string | Commercial range name (`BMW Serie 1`, `BMW X5`…) |
| `model_code` | string | Market-specific variant code (`11GF`, `31GE`…) |
| `model_name` | string | Commercial model name (`BMW 118d`, `BMW 320i`…) |
| `series` | string | BMW series (`1`, `3`, `5`, `X`, `M`, `i`…) |
| `derivative` | string | Derivative identifier (`118D`, `320I`, `M3`…) |
| `line_code` | string | Finish line code (`S033C`, `BASIC_LINE`…) |
| `line_name` | string | Finish line name (`M Sport Design`, `M Sport Pro`…) |
| `fuel_type` | string | `O`=Petrol · `D`=Diesel · `E`=Electric · `H`=PHEV |
| `body_style` | string | `SH`=Hatchback · `SA`=Sedan · `SW`=Estate · `CP`=Coupé |
| `doors` | string | Number of doors (`3`, `5`…) |
| `drive_type` | string | `VR`=RWD · `VX`=AWD · `VF`=FWD |
| `hybrid_flag` | string | `NOHY` · `MHEV` · `PHEV` · `BEV` |
| `transmission` | string | `X`=Automatic · `M`=Manual |
| `engine_series` | string | Engine family (`B38`, `B47`, `B58`, `S63`…) |
| `effect_date` | string | Date from which this price/model is valid (ISO 8601) |
| `gross_list_price` | number | Total list price including all taxes |
| `net_list_price` | number | List price before taxes |
| `total_taxes` | number | Sum of all applicable taxes |
| `vat_percentage` | number | VAT rate (e.g. `0.21` for 21%) |
| `emission_tax_pct` | number | Emission tax rate where applicable |
| `configurator_url` | string | Direct link to BMW's online configurator for this model |
| `scraped_at` | string | UTC extraction timestamp (ISO 8601) |


### 🚀 How to use BMW Europe Price Tracker

Extracting BMW pricing data takes under two minutes:

1. **Create a free Apify account** at [apify.com](https://apify.com) — your first $5 is free
2. **Open BMW Europe Price Tracker** in Apify Console or click **Try for free** on this page
3. **Select markets** — pick one or more of the 14 supported countries from the dropdown (leave empty for all 14)
4. **Filter by model range** (optional) — choose specific BMW ranges like `G20` (Series 3) or `NA5` (iX) to narrow the dataset
5. **Click Save & Start** — a full 14-market run completes in under 30 seconds
6. **Download your results** in JSON, CSV, Excel, or XML from the Output tab, or access them programmatically via the Apify API


### ⚙️ Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `markets` | array | ❌ | all 14 | European markets to scrape. Select from dropdown (🇪🇸 🇩🇪 🇫🇷 🇮🇹 🇬🇧 🇳🇱 🇧🇪 🇵🇹 🇵🇱 🇸🇪 🇳🇴 🇦🇹 🇨🇭 🇨🇿). Empty = all |
| `seriesFilter` | array | ❌ | all | BMW chassis codes to include (e.g. `F70`, `G20`, `NA5`). Empty = all ranges |
| `requestDelay` | number | ❌ | `0.5` | Pause between requests in seconds |
| `debugMode` | boolean | ❌ | `false` | Verbose logging for troubleshooting |

**Example input — Series 3 only in Germany and the UK:**

```json
{
  "markets": ["de", "co.uk"],
  "seriesFilter": ["G20", "G21"],
  "requestDelay": 0.5
}
````

### 📦 Output example

Each record is a flat JSON object. Here's a real sample:

```json
{
  "market": "es",
  "currency": "EUR",
  "model_range": "F70",
  "model_range_name": "BMW Serie 1",
  "model_code": "11GF",
  "model_name": "BMW 118d",
  "series": "1",
  "derivative": "118D",
  "line_code": "S033C",
  "line_name": "M Sport Design",
  "fuel_type": "D",
  "body_style": "SH",
  "doors": "5",
  "drive_type": "VR",
  "hybrid_flag": "NOHY",
  "transmission": "X",
  "engine_series": "B47",
  "effect_date": "2026-09-08",
  "gross_list_price": 36673.70,
  "net_list_price": 29164.01,
  "total_taxes": 7509.73,
  "vat_percentage": 0.21,
  "emission_tax_pct": 0.0475,
  "configurator_url": "https://configure.bmw.es/es_ES/configure/F70/11GF",
  "scraped_at": "2026-07-07T21:04:22Z"
}
```

Download results in **JSON, CSV, Excel, XML, or HTML** from the Output tab, or pull them programmatically using the Apify API.

### 💰 How much does it cost to use BMW Europe Price Tracker?

**BMW Europe Price Tracker** is one of the most cost-efficient data actors on the platform. It uses Apify's standard **Compute Unit (CU)** pricing. A complete run extracting all ~4,100 records across all 14 markets consumes approximately **0.013 CUs** — less than $0.01.

| Scenario | Records | Approx. cost |
|----------|---------|--------------|
| 1 market (e.g. Spain) | ~300 records | < $0.001 |
| 5 markets | ~1,500 records | ~$0.003 |
| All 14 markets | ~4,100 records | ~$0.005 |
| Daily runs, all markets, 1 year | ~1.5M records | ~$2 |

**Is BMW pricing data free to extract?** Your Apify free plan includes $5 in credits — enough to run **BMW Europe Price Tracker** hundreds of times at no cost.

> 💡 **Tip**: Save your preferred market and range selection as an Apify Task, then schedule it daily or weekly to keep your pricing dataset fresh automatically.

### 🔄 Setting up recurring price monitoring

**BMW Europe Price Tracker** is designed for ongoing monitoring, not just one-off extractions:

1. **Save your input as a Task** in Apify Console after your first successful run
2. **Go to Schedules** and set the frequency — daily at 6am, every Monday, or any custom cron
3. **Add a webhook** to receive fresh data in Slack, email, or your own endpoint
4. **Connect to Google Sheets or your data warehouse** via Apify's native integrations or the API

This makes BMW Europe Price Tracker ideal for automotive intelligence teams that need to track how BMW adjusts prices across European markets over time.

### 🌍 Supported markets

BMW Europe Price Tracker covers the following 14 markets:

🇪🇸 Spain · 🇩🇪 Germany · 🇫🇷 France · 🇮🇹 Italy · 🇬🇧 United Kingdom · 🇳🇱 Netherlands · 🇧🇪 Belgium · 🇵🇹 Portugal · 🇵🇱 Poland · 🇸🇪 Sweden · 🇳🇴 Norway · 🇦🇹 Austria · 🇨🇭 Switzerland · 🇨🇿 Czech Republic

### ❓ Frequently Asked Questions

#### Is extracting BMW pricing data legal?

**BMW Europe Price Tracker** only accesses **publicly available pricing data** from BMW's official configurator — the same prices visible to any visitor on [configure.bmw.de](https://configure.bmw.de), [configure.bmw.es](https://configure.bmw.es), and other BMW national sites. No authentication, no private data, no personal information.

As with any data collection, you are responsible for ensuring your use complies with applicable laws and BMW's Terms of Service. For general guidance, see [Apify's blog on the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

#### Does BMW Europe Price Tracker require a BMW account or API key?

No. The actor accesses only public pricing data and does not require any BMW credentials or third-party API key.

#### How many records does a full run return?

A full 14-market run returns approximately **4,100 records** — one per model × finish line combination per market. Individual markets typically return 150–380 records depending on the size of BMW's local catalog.

#### How fresh is the pricing data?

Data is extracted in real time at the moment you run the actor — it reflects BMW's current published prices at that instant. For ongoing freshness, schedule the actor to run daily or weekly.

#### Can I filter by specific BMW models or ranges?

Yes. Use the **Model ranges** input field to select one or more chassis codes (e.g. `G20` for Series 3, `NA5` for iX, `G87` for M2). Leave it empty to extract all available models.

#### How do I integrate BMW Europe Price Tracker with my workflow?

The actor integrates natively with:

- **Google Sheets** — export directly to a spreadsheet via Apify's integration
- **Make (formerly Integromat)** and **Zapier** — trigger runs and receive data automatically
- **Webhooks** — get notified when a run finishes with fresh data
- **Apify API** — call from Python, Node.js, or any language with ready-to-use code snippets in the API tab

#### I found an issue. Where do I report it?

Please open an issue in the **Issues tab** on this page. Include your input configuration and the run ID so we can investigate quickly.

# Actor input Schema

## `markets` (type: `array`):

European markets to scrape. Leave empty to scrape all 14 markets (~4,000 records, ~30 s).<br><br>Each market makes one API call to BMW's UCP endpoint.

## `seriesFilter` (type: `array`):

Limit extraction to specific BMW ranges. Leave empty to extract all ranges.<br><br>Use BMW platform/chassis codes. Common ones:<br>• <b>F70</b> — Series 1 (new)   <b>G20</b> — Series 3   <b>G42</b> — Series 2 Coupé<br>• <b>G60</b> — Series 5   <b>G70</b> — Series 7   <b>G87</b> — M2<br>• <b>U11</b> — iX1   <b>NA5</b> — iX   <b>U06</b> — X2

## `requestDelay` (type: `number`):

Pause between requests in seconds. Increase to 1–2 s if you see HTTP 429 errors.

## `debugMode` (type: `boolean`):

Enables verbose logging: prints every request URL and HTTP status. Not recommended for production runs — it significantly increases log size.

## Actor input object example

```json
{
  "markets": [
    "es"
  ],
  "seriesFilter": [
    "F70"
  ],
  "requestDelay": 0.5,
  "debugMode": false
}
```

# Actor output Schema

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

Dataset with one item per vehicle model × finish line. Fields: market, model\_range, derivative, line, gross/net prices, fuel, body style, taxes.

# 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 = {
    "markets": [
        "es"
    ],
    "seriesFilter": [
        "F70"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/bmw-europe-price-tracker").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 = {
    "markets": ["es"],
    "seriesFilter": ["F70"],
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/bmw-europe-price-tracker").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 '{
  "markets": [
    "es"
  ],
  "seriesFilter": [
    "F70"
  ]
}' |
apify call rastriq/bmw-europe-price-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rastriq/bmw-europe-price-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "BMW Europe Price Tracker",
        "description": "Extract official BMW vehicle prices, trim lines, and catalog data across 14 European markets. ~4,100 structured records per run in under 30 seconds.",
        "version": "0.1",
        "x-build-id": "nLBV5kGdyL0V6V13E"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rastriq~bmw-europe-price-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rastriq-bmw-europe-price-tracker",
                "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/rastriq~bmw-europe-price-tracker/runs": {
            "post": {
                "operationId": "runs-sync-rastriq-bmw-europe-price-tracker",
                "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/rastriq~bmw-europe-price-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-rastriq-bmw-europe-price-tracker",
                "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": {
                    "markets": {
                        "title": "🌍 Markets",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "European markets to scrape. Leave empty to scrape all 14 markets (~4,000 records, ~30 s).<br><br>Each market makes one API call to BMW's UCP endpoint.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "es",
                                "de",
                                "fr",
                                "it",
                                "co.uk",
                                "nl",
                                "be",
                                "pt",
                                "pl",
                                "se",
                                "no",
                                "at",
                                "ch",
                                "cz",
                                "sa"
                            ],
                            "enumTitles": [
                                "🇪🇸 Spain (es)",
                                "🇩🇪 Germany (de)",
                                "🇫🇷 France (fr)",
                                "🇮🇹 Italy (it)",
                                "🇬🇧 United Kingdom (co.uk)",
                                "🇳🇱 Netherlands (nl)",
                                "🇧🇪 Belgium (be)",
                                "🇵🇹 Portugal (pt)",
                                "🇵🇱 Poland (pl)",
                                "🇸🇪 Sweden (se)",
                                "🇳🇴 Norway (no)",
                                "🇦🇹 Austria (at)",
                                "🇨🇭 Switzerland (ch)",
                                "🇨🇿 Czech Republic (cz)",
                                "🇸🇦 Saudi Arabia (sa)"
                            ]
                        }
                    },
                    "seriesFilter": {
                        "title": "🚗 Model ranges (optional)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Limit extraction to specific BMW ranges. Leave empty to extract all ranges.<br><br>Use BMW platform/chassis codes. Common ones:<br>• <b>F70</b> — Series 1 (new) &nbsp; <b>G20</b> — Series 3 &nbsp; <b>G42</b> — Series 2 Coupé<br>• <b>G60</b> — Series 5 &nbsp; <b>G70</b> — Series 7 &nbsp; <b>G87</b> — M2<br>• <b>U11</b> — iX1 &nbsp; <b>NA5</b> — iX &nbsp; <b>U06</b> — X2",
                        "items": {
                            "type": "string",
                            "enumSuggestedValues": [
                                "F70",
                                "F74",
                                "G20",
                                "G21",
                                "G42",
                                "G22",
                                "G23",
                                "G26",
                                "G60",
                                "G61",
                                "G70",
                                "G87",
                                "G80",
                                "G81",
                                "G82",
                                "G83",
                                "G90",
                                "G99",
                                "G09",
                                "G45",
                                "G65",
                                "G05",
                                "G06",
                                "G07",
                                "U10",
                                "U11",
                                "NA5",
                                "U06"
                            ],
                            "enumTitles": [
                                "F70 — Series 1 5-door",
                                "F74 — Series 1 3-door",
                                "G20 — Series 3 Sedan",
                                "G21 — Series 3 Touring",
                                "G42 — Series 2 Coupé",
                                "G22 — Series 4 Coupé",
                                "G23 — Series 4 Cabriolet",
                                "G26 — Series 4 Gran Coupé",
                                "G60 — Series 5 Sedan",
                                "G61 — Series 5 Touring",
                                "G70 — Series 7",
                                "G87 — M2",
                                "G80 — M3",
                                "G81 — M3 Touring",
                                "G82 — M4 Coupé",
                                "G83 — M4 Cabriolet",
                                "G90 — M5",
                                "G99 — M5 Touring",
                                "G09 — XM",
                                "G45 — X3",
                                "G65 — X5",
                                "G05 — X5 (prev)",
                                "G06 — X6",
                                "G07 — X7",
                                "U10 — iX1",
                                "U11 — iX2",
                                "NA5 — iX",
                                "U06 — X2 / iX2 (prev)"
                            ]
                        }
                    },
                    "requestDelay": {
                        "title": "Request delay (s)",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Pause between requests in seconds. Increase to 1–2 s if you see HTTP 429 errors.",
                        "default": 0.5
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Enables verbose logging: prints every request URL and HTTP status. Not recommended for production runs — it significantly increases log size.",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
