# mobile.de $0.8💰 URL Search | Keyword Filtering | Rich Output (`abotapi/mobile-de-scraper`) Actor

From $0.8/1K. Scrape mobile.de vehicle listings with 30+ structured fields including price, registration, mileage, power, fuel, transmission, location, and dealer info. Optional detail enrichment adds description, equipment, image gallery, and dealer profile.

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

## Pricing

from $0.80 / 1,000 vehicle listings

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Mobile.de Scraper

Pull vehicle listings from mobile.de, Germany's largest vehicle marketplace, with rich, structured output: 30+ fields per record covering price, registration, mileage, power, fuel, transmission, location, dealer info, and (when enabled) the full detail-page enrichment with description, equipment, image gallery, and dealer profile.

### Why this scraper

- 30+ fields per listing, including registration codes (HSN/TSN), price rating, finance availability, dealer contact, geolocation hints, and full image previews
- Two modes: search by filter set, OR paste mobile.de URLs and the actor walks each one forward
- Honest pagination: walks up to 50 pages per filter slice (~1,100 listings), de-duplicated by listing id
- Country flexibility: pin proxy to any EU country mobile.de covers (DE, AT, NL, FR, IT, ES, BE, CH, ...)
- Sponsored Top-Anzeige listings filtered out by default (toggle on if you want them)
- Detail enrichment is opt-in: lean mode is fast and cheap; full mode adds description, equipment list, full image gallery, dealer profile

### Data you get

| Field | Example |
|---|---|
| id | "00000001" |
| url | "https://suchen.mobile.de/fahrzeuge/details.html?id=00000001" |
| title | "Sample Listing Title" |
| make | "Audi" |
| model | "A4" |
| category | "Limousine" |
| price | 19990 |
| priceFormatted | "19.990 €" |
| currency | "EUR" |
| firstRegistration | "01/2020" |
| mileageKm | 50000 |
| powerKw | 110 |
| powerHp | 150 |
| fuel | "DIESEL" |
| transmission | "AUTOMATIC_GEAR" |
| city | "Sample City" |
| zip | "00000" |
| country | "DE" |
| previewImage | "https://img.classistatic.de/api/v1/mo-prod/images/00/000-800x600.jpeg" |
| numImages | 12 |
| sponsored | false |
| sellerName | "Sample Dealer" |
| sellerType | "Händler" |
| sellerCity | "Sample City" |
| sellerCountry | "DE" |
| kba | { "hsn": "0000", "tsn": "ABC" } |
| description | "Full seller description text appears here when fetchDetails=true." |
| features | ["Sample Feature A", "Sample Feature B"] |
| attributes | { "Erstzulassung": "01/2020", "Kilometerstand": "50,000 km" } |

### How to use

#### Search by filters (Audi A4, Diesel, 2020+)

```json
{
  "mode": "search",
  "make": "Audi",
  "model": "A4",
  "fuels": ["DIESEL"],
  "yearFrom": 2020,
  "maxListings": 50,
  "fetchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "DE"
  }
}
````

#### Search with price + country pin

```json
{
  "mode": "search",
  "make": "BMW",
  "priceFrom": 10000,
  "priceTo": 30000,
  "country": "AT",
  "maxListings": 100,
  "maxPages": 5,
  "fetchDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "AT"
  }
}
```

#### URL mode (paste 1+ search URLs)

```json
{
  "mode": "url",
  "urls": [
    "https://suchen.mobile.de/auto/audi-a4.html",
    "https://suchen.mobile.de/auto/bmw-3er-reihe.html"
  ],
  "maxListings": 100,
  "maxPages": 3,
  "fetchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "DE"
  }
}
```

#### URL mode (single detail URL)

```json
{
  "mode": "url",
  "urls": [
    "https://suchen.mobile.de/fahrzeuge/details.html?id=00000001"
  ],
  "fetchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "DE"
  }
}
```

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| mode | string | "search" | "search" builds the URL from filters; "url" uses your URLs verbatim |
| urls | array | \[] | One or more mobile.de URLs (URL mode only) |
| vehicleClass | string | "Car" | Car, Motorbike, Van, Truck, Bus, Trailer, Motorhome, ... |
| make | string | "" | Manufacturer name (e.g. Audi, BMW, Mercedes-Benz) |
| model | string | "" | Model name (e.g. A4, X5, C-Klasse) |
| condition | string | "" | NEW, USED, EMPLOYEES\_CAR, OLDTIMER, DEMONSTRATION |
| fuels | array | \[] | Multi-select: PETROL, DIESEL, HYBRID, ELECTRICITY, ... |
| transmission | string | "" | AUTOMATIC\_GEAR, MANUAL\_GEAR, SEMIAUTOMATIC\_GEAR |
| bodyType | string | "" | CABRIO, ESTATECAR, LIMOUSINE, OFFROAD, SMALLCAR, SPORTSCAR, VAN, ... |
| country | string | "DE" | Listing country (DE, AT, NL, FR, IT, ES, BE, CH, ...) |
| zipcode | string | "" | Postal code, used with radiusKm |
| radiusKm | integer | null | Radius around postal code (km) |
| priceFrom / priceTo | integer | null | Price range (EUR) |
| yearFrom / yearTo | integer | null | First-registration year range |
| mileageFrom / mileageTo | integer | null | Mileage range (km) |
| powerFromKw / powerToKw | integer | null | Power range (kW) |
| excludeDamaged | boolean | true | Hide vehicles flagged as damaged or accident |
| sortBy | string | "RELEVANCE" | RELEVANCE, PRICE\_ASC, PRICE\_DESC, FIRST\_REGISTRATION\_DESC/ASC, MILEAGE\_ASC/DESC, CREATION\_TIME |
| fetchDetails | boolean | true | Pull full detail-page fields per listing |
| includeSponsored | boolean | false | Include Top-Anzeige sponsored listings |
| maxListings | integer | 50 | Stop after this many records (0 = unlimited) |
| maxPages | integer | 5 | Per-search page cap (max 50; mobile.de hard-caps at page 50) |
| proxyConfiguration | object | (Apify Residential, DE) | Proxy block. Residential strongly recommended |

### Output example

> Sample shape, values are illustrative placeholders, not from a live listing.

```json
{
  "id": "00000001",
  "url": "https://suchen.mobile.de/fahrzeuge/details.html?id=00000001",
  "title": "Sample Listing Title",
  "shortTitle": "Audi A4",
  "subTitle": "2.0 TDI Sample Trim",
  "make": "Audi",
  "model": "A4",
  "category": "Limousine",
  "vehicleClass": "Car",
  "price": 19990,
  "priceFormatted": "19.990 €",
  "currency": "EUR",
  "priceRating": { "rating": "REASONABLE_PRICE", "ratingLabel": "Fair" },
  "firstRegistration": "01/2020",
  "mileageKm": 50000,
  "powerKw": 110,
  "powerHp": 150,
  "fuel": "DIESEL",
  "transmission": "AUTOMATIC_GEAR",
  "city": "Sample City",
  "zip": "00000",
  "country": "DE",
  "isVideoEnabled": false,
  "numImages": 12,
  "previewImage": "https://img.classistatic.de/api/v1/mo-prod/images/00/000-800x600.jpeg",
  "previewThumbnails": ["https://img.classistatic.de/api/v1/mo-prod/images/00/000-360x270.jpeg"],
  "images": ["https://img.classistatic.de/api/v1/mo-prod/images/00/000-1024x768.jpeg"],
  "sponsored": false,
  "sellerId": "0000000",
  "sellerName": "Sample Dealer",
  "sellerType": "Händler",
  "sellerCity": "Sample City",
  "sellerCountry": "DE",
  "description": "Full seller description text appears here when fetchDetails=true.",
  "features": ["Sample Feature A", "Sample Feature B", "Sample Feature C"],
  "attributes": {
    "Erstzulassung": "01/2020",
    "Kilometerstand": "50,000 km",
    "Leistung": "110 kW (150 PS)",
    "Kraftstoffart": "Diesel"
  },
  "kba": { "hsn": "0000", "tsn": "ABC" },
  "relativeUrl": "/fahrzeuge/details.html?id=00000001",
  "isFinancingAvailable": true
}
```

### Plan requirement

Mobile.de is sensitive to exit IP reputation. Apify Residential proxy is required for reliable runs; pin to any EU country mobile.de covers (DE, AT, NL, FR, IT, ES, BE, CH, ...). The Free plan does not include Residential, so the actor's first run on Free may yield zero results; upgrade to Starter or higher for reliable Residential access. See https://apify.com/pricing for plan options.

If you want help mapping mobile.de URLs to filter sets, paste a working mobile.de search URL into URL mode and the actor will walk it for you with no filter-set guesswork required.

# Actor input Schema

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

Choose how to find listings. Only fields belonging to the chosen mode are used.

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

Paste one or more mobile.de search or vehicle URLs. Each search URL is auto-paginated forward until Maximum Pages or Maximum Listings. Vehicle detail URLs are scraped directly. Filter fields are ignored in URL mode. Examples: https://suchen.mobile.de/auto/audi-a4.html or https://suchen.mobile.de/fahrzeuge/details.html?id=451972553

## `vehicleClass` (type: `string`):

Vehicle category. (Search mode only.)

## `make` (type: `string`):

Manufacturer name as it appears on mobile.de (e.g. BMW, Audi, Mercedes-Benz, Volkswagen, Porsche). Leave empty for all makes. (Search mode only.)

## `model` (type: `string`):

Model name (e.g. X5, A4, C-Klasse, Golf, 911). Requires a Make. (Search mode only.)

## `condition` (type: `string`):

Vehicle condition. (Search mode only.)

## `fuels` (type: `array`):

Multi-select. Leave empty for any fuel. (Search mode only.)

## `transmission` (type: `string`):

Gearbox type. (Search mode only.)

## `bodyType` (type: `string`):

Body shape. Cars only. (Search mode only.)

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

Country where the vehicle is offered. DE covers the bulk of mobile.de inventory. (Search mode only.)

## `zipcode` (type: `string`):

Postal code in the chosen country, used together with Radius. (Search mode only.)

## `radiusKm` (type: `integer`):

Radius around the postal code. Ignored unless Postal code is set. (Search mode only.)

## `priceFrom` (type: `integer`):

Lower bound for price. (Search mode only.)

## `priceTo` (type: `integer`):

Upper bound for price. (Search mode only.)

## `yearFrom` (type: `integer`):

Oldest first-registration year. (Search mode only.)

## `yearTo` (type: `integer`):

Newest first-registration year. (Search mode only.)

## `mileageFrom` (type: `integer`):

Lower bound for mileage. (Search mode only.)

## `mileageTo` (type: `integer`):

Upper bound for mileage. (Search mode only.)

## `powerFromKw` (type: `integer`):

Lower bound for engine power in kW. 1 hp ~= 0.735 kW. (Search mode only.)

## `powerToKw` (type: `integer`):

Upper bound for engine power in kW. (Search mode only.)

## `excludeDamaged` (type: `boolean`):

Hide vehicles flagged as damaged or accident. (Search mode only.)

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

How results are ordered. (Search mode only; in URL mode the sort comes from the URL.)

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

Pull extra fields per listing from the detail page: full description, equipment list, full image gallery, registration codes (HSN/TSN), highlights, finance plan, and full dealer profile with address, opening hours, languages, phones list. Adds ~1 fetch per listing.

## `includeSponsored` (type: `boolean`):

Mobile.de injects 1-3 paid sponsored placements at the top of every result page; these always appear regardless of your filter. Off by default so filtered runs only return matching listings. Turn on if you want every entry the user sees, sponsored placements included.

## `maxListings` (type: `integer`):

Stop after scraping this many listings across the whole run. 0 = unlimited.

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

Per-search page cap (~15-20 unique listings per page after dedup + sponsored filter). Default 1000 = effectively unlimited; the run is bounded by Maximum listings instead. The actor walks forward until either this cap, maxListings, OR mobile.de's actual inventory exhausts (two consecutive empty pages auto-stop the loop). For filter slices with very deep inventory (e.g. all BMW = ~130k listings), plan to fan out into multiple model-narrowed runs since mobile.de's server stops serving past ~100-150 pages.

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

Mobile.de uses a behavioural edge filter that rejects most datacenter ranges. RESIDENTIAL with the country pinned to any EU country mobile.de covers (DE, AT, NL, FR, IT, ES, BE, CH, ...) works. DE is the default since most listings are in Germany, but feel free to change.

## Actor input object example

```json
{
  "mode": "search",
  "urls": [
    "https://suchen.mobile.de/auto/audi-a4.html"
  ],
  "vehicleClass": "Car",
  "condition": "",
  "fuels": [],
  "transmission": "",
  "bodyType": "",
  "country": "DE",
  "excludeDamaged": true,
  "sortBy": "RELEVANCE",
  "fetchDetails": true,
  "includeSponsored": false,
  "maxListings": 20,
  "maxPages": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

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

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "urls": [
        "https://suchen.mobile.de/auto/audi-a4.html"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/mobile-de-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 = {
    "mode": "search",
    "urls": ["https://suchen.mobile.de/auto/audi-a4.html"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/mobile-de-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 '{
  "mode": "search",
  "urls": [
    "https://suchen.mobile.de/auto/audi-a4.html"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call abotapi/mobile-de-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "mobile.de $0.8💰 URL Search | Keyword Filtering | Rich Output",
        "description": "From $0.8/1K. Scrape mobile.de vehicle listings with 30+ structured fields including price, registration, mileage, power, fuel, transmission, location, and dealer info. Optional detail enrichment adds description, equipment, image gallery, and dealer profile.",
        "version": "2.0",
        "x-build-id": "bI2lMszTRTMjDarIl"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~mobile-de-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-mobile-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/abotapi~mobile-de-scraper/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-mobile-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/abotapi~mobile-de-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-mobile-de-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Search mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "Choose how to find listings. Only fields belonging to the chosen mode are used.",
                        "default": "search"
                    },
                    "urls": {
                        "title": "URLs (URL mode only)",
                        "type": "array",
                        "description": "Paste one or more mobile.de search or vehicle URLs. Each search URL is auto-paginated forward until Maximum Pages or Maximum Listings. Vehicle detail URLs are scraped directly. Filter fields are ignored in URL mode. Examples: https://suchen.mobile.de/auto/audi-a4.html or https://suchen.mobile.de/fahrzeuge/details.html?id=451972553",
                        "items": {
                            "type": "string"
                        }
                    },
                    "vehicleClass": {
                        "title": "Vehicle class",
                        "enum": [
                            "Car",
                            "Motorbike",
                            "VanUpTo7500",
                            "TruckOver7500",
                            "Bus",
                            "Trailer",
                            "Motorhome",
                            "SemiTrailer",
                            "SemiTrailerTruck",
                            "ConstructionMachine",
                            "AgriculturalVehicle",
                            "ForkLiftTruck"
                        ],
                        "type": "string",
                        "description": "Vehicle category. (Search mode only.)",
                        "default": "Car"
                    },
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Manufacturer name as it appears on mobile.de (e.g. BMW, Audi, Mercedes-Benz, Volkswagen, Porsche). Leave empty for all makes. (Search mode only.)"
                    },
                    "model": {
                        "title": "Model",
                        "type": "string",
                        "description": "Model name (e.g. X5, A4, C-Klasse, Golf, 911). Requires a Make. (Search mode only.)"
                    },
                    "condition": {
                        "title": "Condition",
                        "enum": [
                            "",
                            "NEW",
                            "USED",
                            "EMPLOYEES_CAR",
                            "OLDTIMER",
                            "DEMONSTRATION"
                        ],
                        "type": "string",
                        "description": "Vehicle condition. (Search mode only.)",
                        "default": ""
                    },
                    "fuels": {
                        "title": "Fuel type(s)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Multi-select. Leave empty for any fuel. (Search mode only.)",
                        "items": {
                            "type": "string",
                            "enum": [
                                "PETROL",
                                "DIESEL",
                                "HYBRID",
                                "ELECTRICITY",
                                "HYBRID_DIESEL",
                                "LPG",
                                "CNG",
                                "HYDROGEN",
                                "ETHANOL",
                                "OTHER"
                            ],
                            "enumTitles": [
                                "Petrol",
                                "Diesel",
                                "Hybrid (Petrol/Electric)",
                                "Electric",
                                "Hybrid (Diesel/Electric)",
                                "LPG",
                                "CNG",
                                "Hydrogen",
                                "Ethanol (E85)",
                                "Other"
                            ]
                        },
                        "default": []
                    },
                    "transmission": {
                        "title": "Transmission",
                        "enum": [
                            "",
                            "AUTOMATIC_GEAR",
                            "MANUAL_GEAR",
                            "SEMIAUTOMATIC_GEAR"
                        ],
                        "type": "string",
                        "description": "Gearbox type. (Search mode only.)",
                        "default": ""
                    },
                    "bodyType": {
                        "title": "Body type",
                        "enum": [
                            "",
                            "CABRIO",
                            "ESTATECAR",
                            "LIMOUSINE",
                            "OFFROAD",
                            "OTHERCAR",
                            "SMALLCAR",
                            "SPORTSCAR",
                            "VAN"
                        ],
                        "type": "string",
                        "description": "Body shape. Cars only. (Search mode only.)",
                        "default": ""
                    },
                    "country": {
                        "title": "Listing country",
                        "enum": [
                            "",
                            "DE",
                            "AT",
                            "BE",
                            "BG",
                            "CH",
                            "CZ",
                            "DK",
                            "EE",
                            "ES",
                            "FI",
                            "FR",
                            "GB",
                            "GR",
                            "HR",
                            "HU",
                            "IE",
                            "IT",
                            "LT",
                            "LU",
                            "LV",
                            "MT",
                            "NL",
                            "NO",
                            "PL",
                            "PT",
                            "RO",
                            "SE",
                            "SI",
                            "SK",
                            "UA"
                        ],
                        "type": "string",
                        "description": "Country where the vehicle is offered. DE covers the bulk of mobile.de inventory. (Search mode only.)",
                        "default": "DE"
                    },
                    "zipcode": {
                        "title": "Postal code",
                        "type": "string",
                        "description": "Postal code in the chosen country, used together with Radius. (Search mode only.)"
                    },
                    "radiusKm": {
                        "title": "Radius around postal code (km)",
                        "minimum": 0,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Radius around the postal code. Ignored unless Postal code is set. (Search mode only.)"
                    },
                    "priceFrom": {
                        "title": "Minimum price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound for price. (Search mode only.)"
                    },
                    "priceTo": {
                        "title": "Maximum price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound for price. (Search mode only.)"
                    },
                    "yearFrom": {
                        "title": "Minimum first registration year",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Oldest first-registration year. (Search mode only.)"
                    },
                    "yearTo": {
                        "title": "Maximum first registration year",
                        "minimum": 1900,
                        "maximum": 2100,
                        "type": "integer",
                        "description": "Newest first-registration year. (Search mode only.)"
                    },
                    "mileageFrom": {
                        "title": "Minimum mileage (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound for mileage. (Search mode only.)"
                    },
                    "mileageTo": {
                        "title": "Maximum mileage (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound for mileage. (Search mode only.)"
                    },
                    "powerFromKw": {
                        "title": "Minimum power (kW)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound for engine power in kW. 1 hp ~= 0.735 kW. (Search mode only.)"
                    },
                    "powerToKw": {
                        "title": "Maximum power (kW)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound for engine power in kW. (Search mode only.)"
                    },
                    "excludeDamaged": {
                        "title": "Exclude damaged vehicles",
                        "type": "boolean",
                        "description": "Hide vehicles flagged as damaged or accident. (Search mode only.)",
                        "default": true
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "RELEVANCE",
                            "PRICE_ASC",
                            "PRICE_DESC",
                            "FIRST_REGISTRATION_DESC",
                            "FIRST_REGISTRATION_ASC",
                            "MILEAGE_ASC",
                            "MILEAGE_DESC",
                            "CREATION_TIME"
                        ],
                        "type": "string",
                        "description": "How results are ordered. (Search mode only; in URL mode the sort comes from the URL.)",
                        "default": "RELEVANCE"
                    },
                    "fetchDetails": {
                        "title": "Fetch full vehicle detail",
                        "type": "boolean",
                        "description": "Pull extra fields per listing from the detail page: full description, equipment list, full image gallery, registration codes (HSN/TSN), highlights, finance plan, and full dealer profile with address, opening hours, languages, phones list. Adds ~1 fetch per listing.",
                        "default": true
                    },
                    "includeSponsored": {
                        "title": "Include sponsored Top-Anzeige listings",
                        "type": "boolean",
                        "description": "Mobile.de injects 1-3 paid sponsored placements at the top of every result page; these always appear regardless of your filter. Off by default so filtered runs only return matching listings. Turn on if you want every entry the user sees, sponsored placements included.",
                        "default": false
                    },
                    "maxListings": {
                        "title": "Maximum listings",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Stop after scraping this many listings across the whole run. 0 = unlimited.",
                        "default": 20
                    },
                    "maxPages": {
                        "title": "Maximum pages per search",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Per-search page cap (~15-20 unique listings per page after dedup + sponsored filter). Default 1000 = effectively unlimited; the run is bounded by Maximum listings instead. The actor walks forward until either this cap, maxListings, OR mobile.de's actual inventory exhausts (two consecutive empty pages auto-stop the loop). For filter slices with very deep inventory (e.g. all BMW = ~130k listings), plan to fan out into multiple model-narrowed runs since mobile.de's server stops serving past ~100-150 pages.",
                        "default": 1000
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Mobile.de uses a behavioural edge filter that rejects most datacenter ranges. RESIDENTIAL with the country pinned to any EU country mobile.de covers (DE, AT, NL, FR, IT, ES, BE, CH, ...) works. DE is the default since most listings are in Germany, but feel free to change."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
