# mobile.de Car Listings Scraper (`solidcode/mobile-de-scraper`) Actor

\[💰 $0.5 / 1K] Extract car listings from mobile.de — Germany's largest vehicle marketplace. Get prices, full specs, photos, and direct dealer phone numbers from 1.5M+ live listings. Export to JSON, CSV or Excel.

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

## Pricing

from $0.50 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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

## mobile.de Scraper

Pull car listings from mobile.de at scale — prices, full specifications, photos, and direct dealer phone numbers in one clean dataset. Built for car dealers, market analysts, and lead-generation teams who need current German vehicle-market data without building and maintaining their own scraper.

mobile.de carries over 1.5 million live listings. Set your filters on the site, paste the URL, and get structured rows back.

### Why This Scraper?

- **Dealer phone numbers on 100% of listings** — measured across a 300-listing sample: every row carries the seller's direct numbers, plus WhatsApp contact links where the dealer offers them. No second lookup, no extra charge.
- **61 fields per listing, 69 with full details** — 50 of them populated on 95%+ of rows, from engine displacement and emission class to inspection status and previous-owner count.
- **mobile.de's own price rating on every row** — the marketplace's `Top-Preis` / `Guter Preis` assessment, already computed against the model's market band. One filter downstream and you have a deal-finder.
- **Gross and net price with the VAT rate** — the `vatDeductible` split that cross-border importers and B2B buyers need, which listing pages bury.
- **Dealer coordinates on 100% of rows** — latitude and longitude, ready for radius search and territory mapping without a geocoding pass.
- **Dealer reputation built in** — rating score and review count per seller, so you can rank inventory by seller quality.
- **Up to 2,000 listings per search URL** — with automatic de-duplication across every search in a run, so a car matching two of your searches is never billed twice.
- **Listing timestamps for inventory monitoring** — `createdAt` and `modifiedAt` on every row make it trivial to diff runs and surface only new or re-priced stock.
- **German or English output** — units, vocabulary, and number formatting switch together, so `Benzin`/`Petrol` and `1.984 cm³`/`1,984 ccm` stay internally consistent.

### Use Cases

**Dealer & Inventory Intelligence**
- Track competitor stock levels, pricing moves, and days-on-market by make and model
- Benchmark your own listings against the local market before repricing
- Spot inventory gaps in your region by body type, fuel, or price band

**Market Research & Pricing Analytics**
- Build residual-value and depreciation curves from mileage, registration year, and price
- Measure how emission class and inspection status move asking prices
- Compare private-seller versus dealer pricing across the same model

**Lead Generation**
- Build dealer contact lists with direct phone numbers, addresses, and coordinates
- Segment dealers by inventory size, average price band, or reputation score
- Target dealers stocking a specific make for parts, finance, or warranty offers

**Arbitrage & Sourcing**
- Filter on the site's own price rating to surface under-market listings
- Find VAT-deductible stock for cross-border resale
- Source specific trims by equipment list when full details are enabled

**Data Enrichment & Integration**
- Feed live market comparables into valuation tools and CRM systems
- Enrich internal stock records with market pricing and photos
- Schedule runs and diff on `modifiedAt` to monitor price changes

### Getting Started

#### Simplest run — paste a search URL

```json
{
  "searchUrls": ["https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&dam=false"],
  "maxResults": 100
}
````

#### Specific make and model, English output

```json
{
  "searchUrls": ["https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&mk=25200&md=8&dam=false"],
  "maxResults": 500,
  "language": "en"
}
```

#### Full details for equipment-level analysis

```json
{
  "searchUrls": ["https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&p=%3A25000&fr=2019%3A&dam=false"],
  "maxResults": 1000,
  "enrichDetails": true,
  "imageSize": "large"
}
```

#### Several price bands in one run

```json
{
  "searchUrls": [
    "https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&p=%3A10000",
    "https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&p=10000%3A25000",
    "https://suchen.mobile.de/fahrzeuge/search.html?isSearchRequest=true&s=Car&vc=Car&p=25000%3A"
  ],
  "maxResults": 2000
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchUrls` | array | — | mobile.de search URLs copied from your browser. Every filter in the URL is carried through. |
| `maxResults` | integer | `100` | Maximum listings per search URL. `0` collects everything the search returns, up to 2,000. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `enrichDetails` | boolean | `false` | Adds the advert text, equipment list, and labelled specification table to each row. |
| `language` | string | `de` | `de` for German values as shown on the site, `en` for English. |
| `imageSize` | string | `large` | `small` (240px), `medium` (360px), or `large` (1024px) image URLs. |
| `concurrency` | integer | `10` | Parallel requests when fetching full details. Lower it if requests start failing. |
| `proxyConfiguration` | object | Apify Proxy | Proxy settings for the run. |

### Output

Every listing is one dataset row. Enabling `enrichDetails` adds eight further fields to the same row — there is no second record type to join.

```json
{
  "id": 410455298,
  "url": "https://suchen.mobile.de/auto-inserat/volkswagen-golf-6-r-2-0tsi/410455298.html",
  "title": "Volkswagen Golf 6 R 2.0TSI 265PS DSG Cabriolet",
  "make": "Volkswagen",
  "model": "Golf",
  "category": "Cabrio",
  "price": 21999.0,
  "priceNet": 18486.55,
  "priceCurrency": "EUR",
  "vatRate": 19.0,
  "priceRating": "GOOD_PRICE",
  "priceRatingLabel": "Guter Preis",
  "mileage": 115264,
  "firstRegistration": "07/2014",
  "year": 2014,
  "powerKw": 195,
  "powerHp": 265,
  "cubicCapacity": 1984,
  "fuelType": "Benzin",
  "transmission": "Automatik",
  "exteriorColor": "Blau",
  "emissionClass": "Euro5",
  "generalInspection": "Neu",
  "previousOwners": 2,
  "doorCount": "2/3",
  "seatCount": 4,
  "weightKg": 1614,
  "images": ["https://img.classistatic.de/api/v1/mo-prod/images/4d/4dfc2e80-...?rule=mo-1024w"],
  "numImages": 13,
  "sellerType": "Händler",
  "sellerName": "Autohaus Klann GmbH",
  "sellerPhones": ["+49 (0)3328 3599968", "+49 (0)1577 3527695"],
  "sellerCity": "Teltow",
  "sellerZip": "14513",
  "sellerCountry": "DE",
  "sellerLatitude": 52.4029259,
  "sellerLongitude": 13.2727313,
  "sellerRating": 4.5,
  "sellerRatingCount": 38,
  "createdAt": "2026-06-12T09:25:20Z",
  "modifiedAt": "2026-07-24T14:18:05Z"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | integer | mobile.de listing ID |
| `url` | string | Public listing page |
| `title` | string | Full advert headline |
| `shortTitle` | string | Make and model only |
| `subTitle` | string | Trim or seller's descriptive line |
| `make` / `model` | string | Manufacturer and model name |
| `makeId` / `modelId` | integer | mobile.de's numeric make/model IDs |
| `category` | string | Body style (`Cabrio`, `SUV`, `Kombi`, …) |
| `vehicleClass` / `segment` | string | Vehicle class (`Car`, `Motorbike`, …) |

#### Price

| Field | Type | Description |
|-------|------|-------------|
| `price` | number | Gross asking price |
| `priceNet` | number | Net price where VAT is shown separately |
| `priceCurrency` | string | ISO currency code |
| `priceLocalized` | string | Price as displayed on the site |
| `vatRate` | number | VAT percentage |
| `vatDeductible` | boolean | Whether VAT is stated separately |
| `priceType` | string | `FIXED`, `NEGOTIABLE`, … |
| `priceRating` | string | mobile.de's price assessment |
| `priceRatingLabel` | string | That assessment in readable form |

#### Specifications

| Field | Type | Description |
|-------|------|-------------|
| `mileage` | integer | Kilometres |
| `firstRegistration` | string | `MM/YYYY` |
| `year` | integer | Registration year |
| `powerKw` / `powerHp` | integer | Engine power in kW and PS |
| `cubicCapacity` | integer | Displacement in cm³ |
| `fuelType` | string | Fuel or drivetrain |
| `transmission` | string | Gearbox type |
| `exteriorColor` | string | Body colour |
| `emissionClass` | string | Euro emission standard |
| `generalInspection` | string | Next inspection due |
| `previousOwners` | integer | Number of prior owners |
| `countryVersion` | string | Market the car was built for |
| `weightKg` | integer | Kerb weight |
| `doorCount` / `seatCount` | string / integer | Doors and seats |
| `isNew`, `hasDamage`, `readyToDrive` | boolean | Condition flags |

#### Seller

| Field | Type | Description |
|-------|------|-------------|
| `sellerName` | string | Dealer or private seller name |
| `sellerType` | string | Dealer or private |
| `sellerId` | integer | mobile.de seller ID |
| `sellerPhones` | array | Direct phone numbers |
| `sellerMessengers` | array | WhatsApp and messenger links |
| `sellerAddress` | string | Street address |
| `sellerCity` / `sellerZip` / `sellerCountry` | string | Location |
| `sellerLatitude` / `sellerLongitude` | number | Coordinates |
| `sellerRating` | number | Average rating |
| `sellerRatingCount` | integer | Number of reviews |

#### Media & Timestamps

| Field | Type | Description |
|-------|------|-------------|
| `images` | array | Photo URLs at the chosen size |
| `numImages` | integer | Photo count |
| `highlights` | array | Seller's highlighted selling points |
| `createdAt` | string | ISO-8601 listing creation time |
| `modifiedAt` | string | ISO-8601 last-modified time |

#### With `enrichDetails` enabled

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Advert text as plain text |
| `htmlDescription` | string | Advert text with original formatting |
| `features` | array | Full equipment list |
| `attributes` | object | Labelled specification table |
| `sellerHomepage` | string | Dealer's mobile.de profile |
| `sellerLanguages` | string | Languages the dealer speaks |
| `sellerSince` | string | How long the dealer has been on mobile.de |
| `carfaxEligible` | boolean | Whether a vehicle history report is available |

### Tips for Best Results

- **Filter on the site first, then copy the URL** — every filter mobile.de offers (price band, registration range, mileage cap, fuel, gearbox, damage exclusion, radius) is encoded in the URL and carried through, so a six-filter search needs no extra configuration here.
- **Plan around the 2,000-per-search ceiling** — mobile.de will not page past 2,000 results for a single search, no matter how many match. For a broad segment, split it into narrower searches by price band, registration year, or make and paste them all into `searchUrls`. The run de-duplicates across them automatically.
- **Leave `enrichDetails` off unless you need the advert text** — phone numbers, images, price, and the full specification set are on every row either way. Details add the free-text advert, equipment list, and labelled spec table, at roughly ten times the requests.
- **Filter on `priceRating` for sourcing** — rows rated `GOOD_PRICE` or better are mobile.de's own judgement that the car is below its market band, which is the cleanest arbitrage signal in the dataset.
- **Split on `sellerType` for outreach** — dealer rows carry `sellerName`, `sellerPhones`, and `sellerRating`; private-seller rows are thinner. Segmenting on this field is the sharpest cut for lead lists.
- **Use `modifiedAt` to monitor rather than re-collect** — schedule a run and diff on this field to surface only new or re-priced listings instead of reprocessing the whole segment.
- **Pick `language: "en"` for downstream tooling** — it switches vocabulary and number formatting together, which avoids mixed-locale values in analytics pipelines.

### Pricing

**$0.50 per 1,000 listings** (standard) or **$1.00 per 1,000 listings** (with full details).

| Listings | Standard | With Full Details |
|----------|----------|-------------------|
| 100 | $0.05 | $0.10 |
| 1,000 | $0.50 | $1.00 |
| 10,000 | $5.00 | $10.00 |
| 100,000 | $50.00 | $100.00 |

A "result" is any listing row in the output dataset. When you run several searches at once, a listing that matches more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same car. The full-details rate applies only to rows that actually came back with the advert text and equipment list attached — if a listing's detail record is unavailable, the row is still delivered and charged at the standard rate. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications when new listings match
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

**This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to mobile.de or its operators in any way.** All trademarks belong to their respective owners.

This actor is intended for legitimate market research, dealer intelligence, and automotive analytics. You are responsible for complying with applicable laws and with mobile.de's Terms of Service.

Listings include dealer contact details. Treat them as personal data: do not use phone numbers or addresses for spam, harassment, or any unlawful purpose, and follow GDPR and local privacy rules when storing or processing them.

# Actor input Schema

## `searchUrls` (type: `array`):

Paste mobile.de search URLs here. Go to mobile.de, set your filters (make, model, price, mileage, fuel type...), and copy the URL from your browser's address bar.

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

Maximum listings to extract per search URL. Set to 0 for as many as the search returns (up to 2,000).

## `enrichDetails` (type: `boolean`):

Fetch each listing's full record to add the seller's advert text, equipment list and labelled specification table. Seller phone numbers, images, price and core specs are included either way. Turn this off for faster, cheaper runs.

## `language` (type: `string`):

Language for text values such as fuel type, transmission, seller type and the equipment list. German matches what you see on mobile.de; English is easier to work with downstream.

## `imageSize` (type: `string`):

Resolution of the image URLs in the output.

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

How many requests to run at once when fetching full details. Lower this if you see failed requests.

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

Proxy settings. The default works for most runs; switch groups only if you see repeated failures.

## Actor input object example

```json
{
  "searchUrls": [
    "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B%3B%3B&s=Car&sb=rel&vc=Car"
  ],
  "maxResults": 100,
  "enrichDetails": false,
  "language": "de",
  "imageSize": "large",
  "concurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Table of car listings with price, mileage and core specs.

## `seller` (type: `string`):

Dealer and contact information, including phone numbers, for each listing.

## `specs` (type: `string`):

Engine, emissions, inspection and body details for each listing.

# 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 = {
    "searchUrls": [
        "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B%3B%3B&s=Car&sb=rel&vc=Car"
    ],
    "maxResults": 100,
    "language": "de",
    "imageSize": "large",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/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 = {
    "searchUrls": ["https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B%3B%3B&s=Car&sb=rel&vc=Car"],
    "maxResults": 100,
    "language": "de",
    "imageSize": "large",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/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 '{
  "searchUrls": [
    "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B%3B%3B&s=Car&sb=rel&vc=Car"
  ],
  "maxResults": 100,
  "language": "de",
  "imageSize": "large",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call solidcode/mobile-de-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "mobile.de Car Listings Scraper",
        "description": "[💰 $0.5 / 1K] Extract car listings from mobile.de — Germany's largest vehicle marketplace. Get prices, full specs, photos, and direct dealer phone numbers from 1.5M+ live listings. Export to JSON, CSV or Excel.",
        "version": "1.0",
        "x-build-id": "PWbbwhbEC202spZpM"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~mobile-de-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-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/solidcode~mobile-de-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-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/solidcode~mobile-de-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-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",
                "properties": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "Paste mobile.de search URLs here. Go to mobile.de, set your filters (make, model, price, mileage, fuel type...), and copy the URL from your browser's address bar.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "Max results per search",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum listings to extract per search URL. Set to 0 for as many as the search returns (up to 2,000).",
                        "default": 100
                    },
                    "enrichDetails": {
                        "title": "Include full details",
                        "type": "boolean",
                        "description": "Fetch each listing's full record to add the seller's advert text, equipment list and labelled specification table. Seller phone numbers, images, price and core specs are included either way. Turn this off for faster, cheaper runs.",
                        "default": false
                    },
                    "language": {
                        "title": "Output language",
                        "enum": [
                            "de",
                            "en"
                        ],
                        "type": "string",
                        "description": "Language for text values such as fuel type, transmission, seller type and the equipment list. German matches what you see on mobile.de; English is easier to work with downstream.",
                        "default": "de"
                    },
                    "imageSize": {
                        "title": "Image size",
                        "enum": [
                            "small",
                            "medium",
                            "large"
                        ],
                        "type": "string",
                        "description": "Resolution of the image URLs in the output.",
                        "default": "large"
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many requests to run at once when fetching full details. Lower this if you see failed requests.",
                        "default": 10
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. The default works for most runs; switch groups only if you see repeated failures.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
