# La Centrale Scraper (`memo23/lacentrale-scraper`) Actor

Scrape used-car listings from lacentrale.fr: make, model, version, year, mileage, price, gearbox, fuel, colour, seller and decoded phone. Detail mode adds full specs, warranty, price-drop history, dealer Google reviews, equipment and photos. Search by URL or filters. JSON/CSV/Excel

- **URL**: https://apify.com/memo23/lacentrale-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Automation, E-commerce, AI
- **Stats:** 20 total users, 18 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 vehicle listing (card)s

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

## La Centrale Scraper

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/lacentrale/logo.png" width="130" alt="La Centrale Scraper">
</p>

**All-in-one lacentrale.fr used-car scraper — paste any search or listing URL, or just set a few filters, and get clean structured car data: make, model, version, year, mileage, price, gearbox, fuel, colour, seller, and the decoded contact phone. Flip on detail mode for full specs, warranty, price-drop history, seller Google reviews, equipment and every photo.**

| Input you give | Rows you get |
|---|---|
| A search/listing URL (`/listing?makesModelsCommercialNames=RENAULT`) | One row per car on every result page |
| A direct classified URL (`/auto-occasion-annonce-69118639004.html`) | One full detail record for that car |
| Just filters (make, model, fuel, price, year, mileage, department…) | One row per matching car |

> Pure HTTP + managed challenge-solving. No headless browser. La Centrale is protected by DataDome — this actor gets past it reliably and parses the car data straight from the page's embedded JSON.

---

### Why use this scraper

- **Two cost tiers, your choice.** *Card mode* (default) reads ~24 fully-structured cars per page fetch — cheap, fast, ideal for market monitoring and lead-gen. *Detail mode* fetches each car's page for the complete record.
- **Decoded seller phone numbers.** La Centrale base64-obfuscates dealer phones on the page; this actor decodes them, so every card carries a callable number.
- **Seller Google reviews.** Detail mode returns each dealer's Google rating, review count and sample reviews — intel no other La Centrale scraper on the Store provides.
- **Price intelligence.** Detail records include the full price-drop history, La Centrale's "good deal" badge, and its refined market quotation.
- **Search however you like.** Paste a URL you built on the site, or skip the site entirely and drive it with structured filters.

### How it works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/lacentrale/how-it-works-lacentrale.png" width="900" alt="How the La Centrale scraper works">
</p>

1. **You give** a listing URL, a direct classified URL, or a set of filters (make/model/fuel/price/year/mileage/department).
2. **We unlock** the page: La Centrale returns a DataDome `403` challenge to any plain HTTP request. The actor solves the challenge on a French residential IP, reuses the resulting session cookie across many pages, and re-solves automatically when a cookie expires.
3. **You get** clean rows parsed from the page's embedded state (`__PRELOADED_STATE_LISTING__` on search pages, `SummaryInformationData` on detail pages) — as JSON, CSV or Excel.

### Supported inputs

| Input | Example | Notes |
|---|---|---|
| **Search/listing URL** | `https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT` | Any filter combination you build on the site; paginated automatically |
| **Direct classified URL** | `https://www.lacentrale.fr/auto-occasion-annonce-69118639004.html` | Always returns a full detail record |
| **Structured filters** | `make: RENAULT`, `model: CLIO`, `energies: [DIESEL]`, `priceMax: 12000` | Used when no Start URLs are given |

### Use cases

- **Dealer lead generation** — pull thousands of listings with seller names and decoded phone numbers.
- **Used-car pricing & market analysis** — track prices, mileage, and price-drops across make/model/region over time.
- **Inventory monitoring** — watch a specific make/model/price band and re-run on a schedule.
- **Dealer reputation research** — combine listings with each seller's Google rating and reviews (detail mode).
- **Competitive intelligence** — see what stock competitors list, at what prices, with what equipment.

### Input configuration

| Field | Type | Required | Notes |
|---|---|---|---|
| `startUrls` | array | no | Listing or classified URLs. Overrides the filters below. |
| `make` | string | no | e.g. `RENAULT`, `PEUGEOT`, `BMW` |
| `model` | string | no | e.g. `CLIO`, `308`. Requires `make`. |
| `energies` | array | no | `DIESEL`, `ESSENCE`, `ELECTRIC`, `HYBRID`, `PLUGIN_HYBRID`, … |
| `categories` | array | no | `CITADINE`, `COMPACTE`, `BERLINE`, `SUV_4X4_CROSSOVER`, … |
| `gearbox` | string | no | `MANUAL` or `AUTO` |
| `regions` | array | no | French department codes, e.g. `75`, `13`, `69` |
| `priceMin` / `priceMax` | integer | no | Price band in euros |
| `yearMin` / `yearMax` | integer | no | Registration-year band |
| `mileageMax` | integer | no | Maximum kilometres |
| `scrapeDetailPages` | boolean | no | `false` (default) = card mode; `true` = full detail records |
| `maxItems` | integer | no | Max cars to return (default 1000) |
| `maxConcurrency` | integer | no | Parallel detail fetches (default 6) |

#### Example input

```json
{
  "make": "RENAULT",
  "model": "CLIO",
  "energies": ["DIESEL"],
  "priceMax": 12000,
  "yearMin": 2015,
  "scrapeDetailPages": false,
  "maxItems": 500
}
````

### Output

#### Card mode (`scrapeDetailPages: false`) — one row per car

```jsonc
{
  "classifiedId": "87103513329",
  "url": "https://www.lacentrale.fr/auto-occasion-annonce-87103513329.html",
  "reference": "W103513329",
  "make": "RENAULT",
  "model": "CLIO",
  "version": "IV 1.5 DCI 90 BUSINESS EDC EURO6",
  "year": 2015,
  "mileage": 125000,
  "price": 9990,
  "gearbox": "MANUAL",
  "energy": "DIESEL",
  "externalColor": "gris foncé",
  "goodDealBadge": "VERY_GOOD_DEAL",
  "customerType": "PRO",
  "sellerName": "GFC AUTOMOBILES",
  "phone": "0257840171",
  "departmentCode": "44",
  "picturesCount": 24,
  "photoUrl": "https://pictures.lacentrale.fr/classifieds/W103513329_STANDARD_0.jpg",
  "firstOnlineDate": "2026-06-30"
}
```

#### Detail mode (`scrapeDetailPages: true`) — full record

Everything above, plus:

```jsonc
{
  "title": "RENAULT CLIO IV",
  "priceInitial": 5490,
  "priceCurrent": 4990,
  "priceHistory": [5490, 4990],
  "isPriceDropping": false,
  "refinedQuotation": 6167,
  "reliabilityIndex": 3,
  "firstHand": false,
  "powerDin": 90,
  "fiscalHorsePower": 5,
  "co2Combined": 120,
  "critairLevel": "2",
  "consumptionCity": 5.4,
  "seatingCapacity": 5,
  "constructorWarrantyMonths": 24,
  "equipments": ["Climatisation automatique", "Régulateur de vitesse", "GPS", "..."],
  "sellerType": "CENTRE_MULTIMARQUES",
  "sellerCity": "AUBAGNE",
  "sellerLatitude": 43.316636,
  "sellerLongitude": 5.591536,
  "sellerRating": 3.8,
  "sellerReviewCount": 270,
  "sellerReviewsUrl": "https://maps.google.com/?cid=…",
  "sellerReviews": [
    { "rating": 5, "author": "…", "text": "…", "publishTime": "2026-06-09T08:54:42.000Z" }
  ],
  "images": ["https://pictures.lacentrale.fr/classifieds/…_STANDARD_0.jpg", "…"]
}
```

### Key output fields

| Field | Description |
|---|---|
| `make` / `model` / `version` | Manufacturer, model, and full trim/engine version string |
| `year` / `mileage` / `price` | Registration year, kilometres, asking price (EUR) |
| `gearbox` / `energy` | Transmission (`MANUAL`/`AUTO`) and fuel type |
| `phone` | Decoded dealer phone number |
| `sellerName` / `sellerType` / `sellerCity` | Dealer identity and location |
| `goodDealBadge` / `refinedQuotation` | La Centrale's deal rating and market-price estimate |
| `priceHistory` / `isPriceDropping` | Full price-change trail (detail mode) |
| `sellerRating` / `sellerReviews` | Dealer Google rating + sample reviews (detail mode) |
| `equipments` / `images` | Full equipment list and every photo URL (detail mode) |

### FAQ

**Do I need proxies or a captcha-solver account?** No. Everything — residential proxying and DataDome challenge-solving — is handled inside the actor. You just provide input.

**Card mode vs detail mode — which should I use?** Card mode for volume (market monitoring, lead lists) — it returns ~24 fully-usable cars per page fetch. Detail mode when you need the deep fields (full specs, price history, seller reviews, all images), at a higher per-car cost.

**Are seller phone numbers real?** Yes — La Centrale obfuscates them on the page (base64); the actor decodes them into standard French numbers.

**Why are `sellerReviews` sometimes empty?** Some dealers have no Google reviews linked — that's the true state of the source, not a scrape gap. Private sellers also have no dealer profile.

**Can I monitor a specific search on a schedule?** Yes — save your filter set (or a listing URL) and run the actor on an Apify schedule.

### Notes & limitations

- La Centrale localises and gates content behind DataDome; the actor targets the French (`lacentrale.fr`) site with French residential exit IPs.
- Detail mode costs more per car than card mode (one page fetch per car vs ~24 cars per fetch) — enable it only when you need the deep fields.
- Fields present only in detail records (specs, price history, seller reviews, equipment, images) are `null`/empty in card-mode rows by design.

### ⚠️ Disclaimer

This actor extracts **publicly available** data from lacentrale.fr for legitimate purposes such as market research, price analysis, and lead generation. You are responsible for how you use the scraped data. Comply with La Centrale's Terms of Service, applicable data-protection law (including the GDPR when handling personal data such as seller contact details), and all local regulations. Do not use collected personal data for unsolicited marketing where prohibited. This tool is not affiliated with, endorsed by, or connected to La Centrale / Car & Boat Services.

### SEO Keywords

La Centrale scraper, lacentrale.fr scraper, used car scraper France, French car listings scraper, voiture occasion scraper, used car data extraction, car dealer leads France, vehicle listings API, car price scraper, car marketplace scraper, RENAULT PEUGEOT scraper, used car pricing data, French auto classifieds scraper, dealer phone scraper, car market intelligence, DataDome bypass scraper, car specs scraper, seller reviews scraper, Apify car scraper, occasion auto France.

# Actor input Schema

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

La Centrale URLs to scrape. Accepts listing/search pages (e.g. https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT) and direct classified pages (e.g. https://www.lacentrale.fr/auto-occasion-annonce-69118639004.html). When set, the search filters below are ignored.

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

Vehicle make to search, e.g. RENAULT, PEUGEOT, BMW, VOLKSWAGEN. Used only when no Start URLs are provided.

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

Vehicle model, e.g. CLIO, 308, GOLF. Requires a Make. Used only when no Start URLs are provided.

## `energies` (type: `array`):

Restrict to these fuel types.

## `categories` (type: `array`):

Restrict to these body/vehicle categories.

## `gearbox` (type: `string`):

Restrict to a transmission type.

## `regions` (type: `array`):

French department codes to restrict to, e.g. 75, 13, 69. Used only when no Start URLs are provided.

## `priceMin` (type: `integer`):

Minimum price in euros.

## `priceMax` (type: `integer`):

Maximum price in euros.

## `yearMin` (type: `integer`):

Earliest registration year.

## `yearMax` (type: `integer`):

Latest registration year.

## `mileageMax` (type: `integer`):

Maximum mileage in kilometres.

## `scrapeDetailPages` (type: `boolean`):

When ON, each car's detail page is fetched to return the FULL record (complete specs, warranty, price-drop history, seller Google reviews, equipment list, all image URLs). Deeper but slower and costs more. When OFF (default), rich card data (make, model, version, year, mileage, price, gearbox, energy, colour, seller, phone, photo) is read straight from search results — much cheaper.

## `maxItems` (type: `integer`):

Maximum number of cars to return.

## `maxConcurrency` (type: `integer`):

How many detail pages to fetch in parallel (only used when 'Scrape full detail pages' is on).

## `proxy` (type: `object`):

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT"
    }
  ],
  "make": "RENAULT",
  "model": "CLIO",
  "scrapeDetailPages": false,
  "maxItems": 100,
  "maxConcurrency": 6
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 6
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/lacentrale-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 = {
    "startUrls": [{ "url": "https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT" }],
    "maxItems": 100,
    "maxConcurrency": 6,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/lacentrale-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 '{
  "startUrls": [
    {
      "url": "https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT"
    }
  ],
  "maxItems": 100,
  "maxConcurrency": 6
}' |
apify call memo23/lacentrale-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "La Centrale Scraper",
        "description": "Scrape used-car listings from lacentrale.fr: make, model, version, year, mileage, price, gearbox, fuel, colour, seller and decoded phone. Detail mode adds full specs, warranty, price-drop history, dealer Google reviews, equipment and photos. Search by URL or filters. JSON/CSV/Excel",
        "version": "0.0",
        "x-build-id": "NluX2wl5s2fuHx0h4"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~lacentrale-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-lacentrale-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/memo23~lacentrale-scraper/runs": {
            "post": {
                "operationId": "runs-sync-memo23-lacentrale-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/memo23~lacentrale-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-lacentrale-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": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "La Centrale URLs to scrape. Accepts listing/search pages (e.g. https://www.lacentrale.fr/listing?makesModelsCommercialNames=RENAULT) and direct classified pages (e.g. https://www.lacentrale.fr/auto-occasion-annonce-69118639004.html). When set, the search filters below are ignored.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Vehicle make to search, e.g. RENAULT, PEUGEOT, BMW, VOLKSWAGEN. Used only when no Start URLs are provided."
                    },
                    "model": {
                        "title": "Model",
                        "type": "string",
                        "description": "Vehicle model, e.g. CLIO, 308, GOLF. Requires a Make. Used only when no Start URLs are provided."
                    },
                    "energies": {
                        "title": "Fuel types",
                        "type": "array",
                        "description": "Restrict to these fuel types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "DIESEL",
                                "ESSENCE",
                                "ELECTRIC",
                                "HYBRID",
                                "PLUGIN_HYBRID",
                                "BIO_ESSENCE_GPL",
                                "BICARBURATION_ESSENCE_GNV"
                            ],
                            "enumTitles": [
                                "Diesel",
                                "Petrol (Essence)",
                                "Electric",
                                "Hybrid",
                                "Plug-in hybrid",
                                "Petrol + LPG",
                                "Petrol + CNG"
                            ]
                        }
                    },
                    "categories": {
                        "title": "Body types",
                        "type": "array",
                        "description": "Restrict to these body/vehicle categories.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "CITADINE",
                                "COMPACTE",
                                "BERLINE",
                                "BREAK",
                                "SUV_4X4_CROSSOVER",
                                "MONOSPACE",
                                "COUPE",
                                "CABRIOLET",
                                "ROUTIERE",
                                "PICK_UP",
                                "BUS_ET_MINIBUS",
                                "FOURGONNETTE"
                            ],
                            "enumTitles": [
                                "City car",
                                "Compact",
                                "Saloon",
                                "Estate",
                                "SUV / 4x4 / Crossover",
                                "Minivan",
                                "Coupe",
                                "Convertible",
                                "Executive",
                                "Pick-up",
                                "Bus / Minibus",
                                "Small van"
                            ]
                        }
                    },
                    "gearbox": {
                        "title": "Transmission",
                        "enum": [
                            "MANUAL",
                            "AUTO"
                        ],
                        "type": "string",
                        "description": "Restrict to a transmission type."
                    },
                    "regions": {
                        "title": "Department codes",
                        "type": "array",
                        "description": "French department codes to restrict to, e.g. 75, 13, 69. Used only when no Start URLs are provided.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "priceMin": {
                        "title": "Min price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum price in euros."
                    },
                    "priceMax": {
                        "title": "Max price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum price in euros."
                    },
                    "yearMin": {
                        "title": "Min year",
                        "type": "integer",
                        "description": "Earliest registration year."
                    },
                    "yearMax": {
                        "title": "Max year",
                        "type": "integer",
                        "description": "Latest registration year."
                    },
                    "mileageMax": {
                        "title": "Max mileage (km)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum mileage in kilometres."
                    },
                    "scrapeDetailPages": {
                        "title": "Scrape full detail pages",
                        "type": "boolean",
                        "description": "When ON, each car's detail page is fetched to return the FULL record (complete specs, warranty, price-drop history, seller Google reviews, equipment list, all image URLs). Deeper but slower and costs more. When OFF (default), rich card data (make, model, version, year, mileage, price, gearbox, energy, colour, seller, phone, photo) is read straight from search results — much cheaper.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max vehicles",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of cars to return.",
                        "default": 1000
                    },
                    "maxConcurrency": {
                        "title": "Detail-page concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many detail pages to fetch in parallel (only used when 'Scrape full detail pages' is on).",
                        "default": 6
                    },
                    "proxy": {
                        "title": "Proxy configuration (optional override)",
                        "type": "object",
                        "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
