# MINI Configurator Data — Prices & Options for 22 Markets (`rastriq/mini-configurator-scraper`) Actor

Extract MINI configurator data — prices, colors, rims, upholstery and option packages — from 22 national markets (ES, DE, FR, IT, GB + 17 more). No proxies needed.

- **URL**: https://apify.com/rastriq/mini-configurator-scraper.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (community)
- **Categories:** 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

## MINI Configurator Data — Prices & Options for 22 Markets

Extract prices, colors, rims, upholstery, and option packages from **MINI configurators** across 22 national markets — Spain, Germany, France, UK, Italy, and 17 more. Get complete pricing and configuration data for every model and trim level available in each country. No proxies, no API key, no login required.

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

---

### 📌 What is MINI Configurator Data?

**MINI Configurator Data** extracts complete pricing and configuration data from the MINI national configurator network across 22 countries. It retrieves the same information a customer sees when building their MINI online — model pricing, available colors, rims, upholstery, optional packages, and individual option costs — structured and ready for analysis.

Use **MINI Configurator Data** to:

- 💰 **Monitor MINI pricing across Europe** — detect when Germany prices a trim €800 cheaper than Spain
- 🎨 **Audit option availability by market** — find out which colors and rim options exist per country
- 📊 **Feed automotive intelligence dashboards** — pricing benchmarks, OEM competitive tracking, fleet analysis
- 🔄 **Track configurator changes over time** — schedule weekly runs to detect new models, removed trims, or price updates

The Apify platform gives MINI Configurator Data superpowers: **scheduling**, **webhooks**, **API access**, and **integrations** with Make, Zapier, and Google Sheets — all without writing a line of code.

---

### 🌍 Supported markets

MINI Configurator Data covers **22 national markets** with a single run:

| Region | Markets |
|---|---|
| 🇪🇺 Western Europe | 🇪🇸 Spain · 🇩🇪 Germany · 🇫🇷 France · 🇮🇹 Italy · 🇬🇧 UK · 🇵🇹 Portugal · 🇳🇱 Netherlands · 🇧🇪 Belgium · 🇦🇹 Austria · 🇨🇭 Switzerland · 🇮🇪 Ireland |
| 🇪🇺 Northern & Eastern Europe | 🇸🇪 Sweden · 🇩🇰 Denmark · 🇫🇮 Finland · 🇨🇿 Czechia · 🇭🇺 Hungary · 🇷🇴 Romania · 🇸🇰 Slovakia |
| 🌎 Americas | 🇲🇽 Mexico · 🇧🇷 Brazil |
| 🌏 Asia-Pacific | 🇦🇺 Australia · 🇯🇵 Japan |

Each market returns data with the correct locale, so option names and trim descriptions appear in the local language.

---

### 📋 What data does MINI Configurator Data extract?

One dataset item = one **model / trim combination per market**. For the F65 range in Spain, the actor produces one item per available trim level (Classic, Essential, Sport…).

|  |  |
|---|---|
| 🌍 `country` / `countryName` | Market code and full name |
| 🚗 `modelRange` / `modelCode` | Range code (e.g. `F65`) and model variant code |
| 🏷️ `trimCode` | Trim/finish level code (e.g. `S07EA` = Classic) |
| 💰 `pvpTotal` | Base PVP in local market currency |
| 💶 `pvpGrossListPrice` / `pvpNetListPrice` | Gross and net list prices |
| 🎨 `availableColors` | Available exterior colors with family code |
| 🛞 `availableRims` | Available rim options with family code |
| 🪑 `availableUpholstery` | Available upholstery options |
| 📦 `availablePackages` | Optional packages (Sport Pack, Premium Pack…) |
| ⚙️ `availableOptions` | Individual options (stripes, mirror caps, connectivity…) |
| 💵 `optionPrices` | Price per option code `{code: {grossListPrice, netListPrice}}` |
| 💵 `packagePrices` | Price per package/trim upgrade code |
| 🔑 `baseElementCodes` | Full list of mandatory option codes in this configuration |
| 🖼️ `imageUrl` | Walkaround image URL (when available) |
| 📅 `effectDate` | Price validity date |

---

### 🚀 How to use MINI Configurator Data

Getting started takes under two minutes:

1. **Open MINI Configurator Data** in Apify Console or click **Try for free** on this page
2. **Select markets** — pick one or more countries from the dropdown (flags included)
3. **Set model ranges** (optional) — enter `F65`, `J01`, or leave empty for all models
4. **Set Max models to `1`** for a quick test run before committing to a full extraction
5. **Click Start** and wait — a single market, single model run finishes in ~5 minutes
6. **Download results** in JSON, CSV, Excel, or XML — or pull via the Apify API

For automated monitoring, save your configuration as a **Task** and add a Schedule to run weekly. Add a webhook to push data to your Slack, Google Sheets, or data warehouse automatically.

---

### ⚙️ Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `countries` | array | `["es"]` | Market codes to extract. Select from 22 supported countries. |
| `modelRanges` | array | `[]` (all) | Filter by range: `F65`, `F66`, `J01`, `U25`, etc. Empty = all. |
| `maxModels` | integer | `0` (no limit) | Max model variants per market. Set `1` for testing. |
| `includeImages` | boolean | `true` | Include walkaround image URLs for each configuration. |
| `concurrency` | integer | `2` | Parallel requests per market (max 3). |

**Example — quick test, Spain only:**

```json
{
  "countries": ["es"],
  "modelRanges": ["F65"],
  "maxModels": 1
}
````

**Example — full European price comparison:**

```json
{
  "countries": ["es", "de", "fr", "it", "gb", "pt", "nl"],
  "modelRanges": ["F65", "J01"],
  "maxModels": 0,
  "concurrency": 2
}
```

***

### 📦 Output example

Each result is a structured JSON object. Here's a real item from a run on Spain / F65 / Classic trim:

```json
{
  "country": "es",
  "countryName": "Spain",
  "modelRange": "F65",
  "modelRangeName": "MINI Hatch 5p",
  "modelCode": "41KL",
  "modelName": "Cooper 5p ONE",
  "trimCode": "S07EA",
  "pvpTotal": 28020,
  "pvpGrossListPrice": 28020,
  "pvpNetListPrice": 22059.65,
  "availableColors": [
    { "code": "P0C3B", "available": true, "familyCode": "MET", "name": "Midnight Black" },
    { "code": "P0C4R", "available": true, "familyCode": "MET", "name": "Chili Red II" },
    { "code": "P0C74", "available": true, "familyCode": "MET", "name": "Island Blue" }
  ],
  "availableRims": [
    { "code": "S01KB", "available": true, "familyCode": "FELGE" },
    { "code": "S01KG", "available": true, "familyCode": "FELGE" },
    { "code": "S01QP", "available": true, "familyCode": "FELGE" }
  ],
  "availableUpholstery": [
    { "code": "FTCJ1", "available": true, "familyCode": "KUNST" }
  ],
  "availablePackages": [
    { "code": "S07YD", "available": true },
    { "code": "S07YE", "available": true }
  ],
  "packagePrices": {
    "S07EA": 9.9,
    "S07YD": 12.9,
    "S07YE": 24.9
  },
  "optionPrices": {
    "P0C3B": { "grossListPrice": 710.0, "netListPrice": 550.0 },
    "P0C4R": { "grossListPrice": 710.0, "netListPrice": 550.0 }
  },
  "effectDate": "2026-07-08",
  "market": "es",
  "brand": "mini"
}
```

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

***

### 🔄 Setting up recurring price monitoring

MINI Configurator Data is designed for both one-time extractions and continuous monitoring:

1. **Save your input as a Task** — click "Save as Task" in the Console after configuring your input
2. **Open Schedules** — set frequency: daily, weekly, or custom cron (e.g. `0 6 * * 1` for every Monday at 6am)
3. **Add a webhook** — receive data in Slack, email, or push to a Google Sheet when each run finishes
4. **Compare runs** — use the dataset API to diff prices between two runs and detect changes

***

### 💰 How much does it cost to use MINI Configurator Data?

MINI Configurator Data runs on Apify's standard **Compute Unit (CU)** pricing.

| Scope | Items | Estimated cost |
|---|---|---|
| 1 market · 1 model · all trims | ~6 items | < $0.05 |
| 1 market · all models (F65 range) | ~12–18 items | < $0.15 |
| 3 markets · all models | ~40–55 items | $0.30–$0.60 |
| All 22 markets · all models | ~300–500 items | $3–$6 |

> 💡 **Tip**: Start with `"maxModels": 1` and one market to validate the output format before scaling to a full run. Your first $5 is free on Apify.

***

### 🔗 Related Rastriq actors

Part of the **Rastriq OEM Configurator Intelligence** suite — covering BMW Group, Stellantis, Ford, and more:

| Actor | Description |
|---|---|
| [BMW Europe Price Tracker](https://console.apify.com/actors/lxRencaJRbs98syzi) | BMW configurator pricing across European markets |
| [MG Motor EU Configurator Data](https://console.apify.com/actors/n8S1RdGaINVFcY271) | MG Motor configurator data for European markets |
| [CUPRA Configurator Data](https://console.apify.com/actors/jHJmBAVAK5j082opl) | CUPRA Spain configurator prices and options |
| [Stellantis Configurator Data](https://console.apify.com/actors/CA2xhGycn8AaSc5Ow) | Opel, Peugeot, Citroën, Fiat configurator data |
| [Dacia / Renault Configurator](https://console.apify.com/actors/82yeYsne9FPr2wFmO) | Dacia and Renault Spain configurator pricing |

Explore the full portfolio at [apify.com/Rastriq](https://apify.com/Rastriq).

***

### ❓ Frequently Asked Questions

#### Does MINI Configurator Data require an API key or login?

No. The actor works with publicly available configurator data. No account, login, or credentials are required.

#### Why does `pvpTotal` not match the price I see on the MINI website?

`pvpTotal` is the **base price** for the model with standard mandatory equipment only — before optional extras (metallic paint, premium rims, sport packages) are added. The final price shown on the MINI website reflects a fully configured car. Use `optionPrices` to calculate the delta cost of each individual option on top of the base price.

#### Do prices include taxes?

`pvpGrossListPrice` is the gross price including local VAT. `pvpNetListPrice` is the pre-tax net price. Tax rates vary by market (21% IVA in Spain, 19% MwSt in Germany, 20% TVA in France, 20% VAT in the UK…).

#### How often should I run MINI Configurator Data?

MINI typically updates configurator prices quarterly, aligned with European homologation cycles. Weekly runs are sufficient for price monitoring. If tracking a specific model launch (e.g. the new MINI Aceman `U25`), run daily for the first 2–3 weeks.

#### What model range codes are available?

Common codes for European markets: `F65` (Hatch 5-door), `F66` (Convertible), `J01` (Cooper Electric), `U25` (Aceman). Available ranges vary by market — leave `modelRanges` empty on the first run to auto-discover all active models in your target country.

#### I found a bug or my run failed. 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.

***

### 🇪🇸 Versión en español

> Resumen en español del actor.

#### ¿Qué es MINI Configurator Data?

**MINI Configurator Data** extrae precios, acabados, colores, llantas y paquetes opcionales de los configuradores MINI de 22 mercados nacionales — España, Alemania, Francia, Reino Unido, Italia y 17 más. No requiere proxies, credenciales ni login.

#### ¿Qué datos extrae?

Un item del dataset = un modelo / acabado por mercado. Los campos principales incluyen: código de mercado y país, gama y código de modelo, código de acabado (trim), PVP base en moneda local, lista de colores disponibles con familyCode, llantas, tapizados, paquetes opcionales, precios individuales por opción, y metadatos de la extracción.

#### ¿Cómo usar MINI Configurator Data?

1. Abre el actor en la consola de Apify y haz clic en **Try for free**
2. Selecciona uno o varios **mercados** (Spain, Germany, France…)
3. Opcionalmente, filtra por **gama** (`F65`, `J01`, etc.)
4. Establece **Max models** a `1` para un test rápido
5. Haz clic en **Start** — un run de prueba termina en ~5 minutos
6. Descarga los resultados en JSON, CSV o Excel desde la pestaña Output

#### ¿Cuánto cuesta usar MINI Configurator Data?

El actor usa Compute Units estándar de Apify. Un run completo de un solo mercado con todos los modelos (~12–18 items) cuesta menos de $0,15. Los primeros $5 de crédito son gratuitos en Apify.

***

*Actor ID: `PBLr1SKsiiAgTnc7O` · Built by [Rastriq](https://apify.com/Rastriq) · Part of the Rastriq OEM Configurator Intelligence suite*

# Actor input Schema

## `countries` (type: `array`):

Select one or more MINI national markets. Each market returns <b>local pricing in the local currency context</b>.<br><br>💡 <b>Tip:</b> Start with 1–2 markets for a quick test. Add more once you've validated the output.

## `modelRanges` (type: `array`):

Filter by MINI model range. Leave empty to extract <b>all models available in each market</b>.<br><br>Common codes:<br>• <code>F65</code> — MINI Hatch 5-door<br>• <code>F66</code> — MINI Convertible<br>• <code>J01</code> — MINI Cooper Electric<br>• <code>U25</code> — MINI Aceman<br><br>💡 Leave empty on first run to discover all available ranges in your target market.

## `maxModels` (type: `integer`):

Maximum number of model variants to process <b>per market</b>. Set to <code>1</code> for a quick test run.<br><br>• <b>0</b> — no limit (full run, all models)<br>• <b>1</b> — single model, ideal for testing<br>• <b>3–5</b> — representative sample<br><br>A full market run (all models, all trims) typically produces 15–30 items.

## `includeImages` (type: `boolean`):

Include walkaround image URLs for each configuration. No extra processing time required.

## `concurrency` (type: `integer`):

Number of parallel requests <b>per market</b>. Keep at 2 or below for optimal performance.<br><br>• <b>1</b> — slowest, safest<br>• <b>2</b> — recommended default<br>• <b>3</b> — fastest (may cause timeouts on large runs)

## Actor input object example

```json
{
  "countries": [
    "es"
  ],
  "modelRanges": [
    "F65"
  ],
  "maxModels": 1,
  "includeImages": true,
  "concurrency": 2
}
```

# Actor output Schema

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

Dataset of MINI model configurations with prices, colors, rims, upholstery, and option packages per market and trim level.

# 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 = {
    "countries": [
        "es"
    ],
    "modelRanges": [
        "F65"
    ],
    "maxModels": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/mini-configurator-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 = {
    "countries": ["es"],
    "modelRanges": ["F65"],
    "maxModels": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/mini-configurator-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 '{
  "countries": [
    "es"
  ],
  "modelRanges": [
    "F65"
  ],
  "maxModels": 1
}' |
apify call rastriq/mini-configurator-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MINI Configurator Data — Prices & Options for 22 Markets",
        "description": "Extract MINI configurator data — prices, colors, rims, upholstery and option packages — from 22 national markets (ES, DE, FR, IT, GB + 17 more). No proxies needed.",
        "version": "0.1",
        "x-build-id": "X6kIsyKbUSu7Kzb3m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rastriq~mini-configurator-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rastriq-mini-configurator-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/rastriq~mini-configurator-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rastriq-mini-configurator-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/rastriq~mini-configurator-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rastriq-mini-configurator-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": {
                    "countries": {
                        "title": "🌍 Markets",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Select one or more MINI national markets. Each market returns <b>local pricing in the local currency context</b>.<br><br>💡 <b>Tip:</b> Start with 1–2 markets for a quick test. Add more once you've validated the output.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "es",
                                "de",
                                "fr",
                                "it",
                                "gb",
                                "pt",
                                "nl",
                                "be",
                                "at",
                                "ch",
                                "se",
                                "dk",
                                "fi",
                                "ie",
                                "cz",
                                "hu",
                                "ro",
                                "sk",
                                "mx",
                                "br",
                                "au",
                                "jp",
                                "pl"
                            ],
                            "enumTitles": [
                                "🇪🇸 Spain",
                                "🇩🇪 Germany",
                                "🇫🇷 France",
                                "🇮🇹 Italy",
                                "🇬🇧 United Kingdom",
                                "🇵🇹 Portugal",
                                "🇳🇱 Netherlands",
                                "🇧🇪 Belgium",
                                "🇦🇹 Austria",
                                "🇨🇭 Switzerland",
                                "🇸🇪 Sweden",
                                "🇩🇰 Denmark",
                                "🇫🇮 Finland",
                                "🇮🇪 Ireland",
                                "🇨🇿 Czech Republic",
                                "🇭🇺 Hungary",
                                "🇷🇴 Romania",
                                "🇸🇰 Slovakia",
                                "🇲🇽 Mexico",
                                "🇧🇷 Brazil",
                                "🇦🇺 Australia",
                                "🇯🇵 Japan",
                                "🇵🇱 Poland"
                            ]
                        },
                        "default": [
                            "es"
                        ]
                    },
                    "modelRanges": {
                        "title": "🚗 Model ranges",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Filter by MINI model range. Leave empty to extract <b>all models available in each market</b>.<br><br>Common codes:<br>• <code>F65</code> — MINI Hatch 5-door<br>• <code>F66</code> — MINI Convertible<br>• <code>J01</code> — MINI Cooper Electric<br>• <code>U25</code> — MINI Aceman<br><br>💡 Leave empty on first run to discover all available ranges in your target market.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "F65",
                                "F66",
                                "F67",
                                "J01",
                                "J05",
                                "U25"
                            ],
                            "enumTitles": [
                                "F65 — MINI Hatch 5-door",
                                "F66 — MINI Convertible",
                                "F67 — MINI 5-door Hatch (var.)",
                                "J01 — MINI Cooper Electric",
                                "J05 — MINI Countryman",
                                "U25 — MINI Aceman"
                            ]
                        },
                        "default": []
                    },
                    "maxModels": {
                        "title": "🔢 Max models per market",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of model variants to process <b>per market</b>. Set to <code>1</code> for a quick test run.<br><br>• <b>0</b> — no limit (full run, all models)<br>• <b>1</b> — single model, ideal for testing<br>• <b>3–5</b> — representative sample<br><br>A full market run (all models, all trims) typically produces 15–30 items.",
                        "default": 0
                    },
                    "includeImages": {
                        "title": "🖼️ Include image URLs",
                        "type": "boolean",
                        "description": "Include walkaround image URLs for each configuration. No extra processing time required.",
                        "default": true
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Number of parallel requests <b>per market</b>. Keep at 2 or below for optimal performance.<br><br>• <b>1</b> — slowest, safest<br>• <b>2</b> — recommended default<br>• <b>3</b> — fastest (may cause timeouts on large runs)",
                        "default": 2
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
