# Autotrader $1💰 URL Search | Keyword Filtering | Rich Output (`abotapi/autotrader`) Actor

From $1/1K. Point it at a search, get back clean JSON with 30+ fields per vehicle. Designed for dealers, market analysts, valuation pipelines, lead generation, and anyone who needs autoscout24 data on tap.

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

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

## AutoTrader UK Scraper

Pull structured vehicle listings from AutoTrader UK at scale: price, make, model, year, mileage, full specification, finance, a 10-point vehicle history check, the complete photo gallery and every dealer contact detail. Search by filters or paste AutoTrader URLs. The scraper is fast, robust against page redesigns, and runs on the cheap datacenter connection tier by default.

Covers all eight AutoTrader marketplaces: cars, vans, bikes, motorhomes, caravans, trucks, farm and plant.

### Why this scraper

- **More data than the alternatives.** 120+ fields per vehicle, including full dealer contact (name, phone, email, postal address, GPS coordinates, opening hours), FCA finance registration, a 10-point history check, structured spec, running costs and the full gallery with per-image classification tags.
- **Lower cost.** An efficient data path means a default run uses the datacenter connection tier. No premium connection is needed for typical runs.
- **Reliable.** Built to keep working through the site's frequent visual redesigns.
- **Two ways in.** Search by filters (make, model, price, year, mileage, fuel, body, transmission, colour, drivetrain, seller, distance and more) or paste any AutoTrader search or advert URL.
- **Forward auto-pagination.** Walks result pages automatically up to the site's 100-page ceiling (about 2,000 listings per search).
- **Smart connections.** Rotates the exit on a rejection, escalates to a stronger connection tier only when needed (with a configurable usage cap), and steps back down to the cheap tier when healthy.
- **Pay only for what you use.** Listing-grid runs are cheap; the per-advert detail enrichment is billed only when you turn it on.

### Data you get

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

| Field | Example |
| --- | --- |
| advertId | "000000000000000" |
| url | "https://www.autotrader.co.uk/car-details/000000000000000" |
| title | "BMW 3 Series" |
| subTitle | "2.0 320d M Sport Auto" |
| make / model | "BMW" / "3 Series" |
| year | 2020 |
| condition | "used" |
| mileage | 30000 |
| price | 20000 |
| priceFormatted | "£20,000" |
| priceIndicator | "GREAT" |
| monthlyPrice | "£300" |
| fuelType | "Diesel" |
| bodyType | "Saloon" |
| transmission | "Automatic" |
| engineSizeLitres | "2.0L" |
| doors / seats | "4" / "5" |
| bodyColour | "Black" |
| sellerType | "TRADE" |
| dealerName | "Sample Motors" |
| dealer.phone | "+440000000000" |
| dealer.email | "sales@example.com" |
| dealer.postcode | "AB12 3CD" |
| latitude / longitude | 51.0000 / -0.1000 |
| vehicleCheck.status | "PASSED" |
| numberOfImages | 20 |

Detail fields (description, full specification, history check, service history, finance, gallery, dealer contact) are populated when **Fetch full advert details** is on, and null otherwise, so the output shape is stable either way.

### How to use

Search a make and model, listing grid only (cheapest):

```json
{
  "mode": "search",
  "channel": "cars",
  "make": "BMW",
  "model": "3 Series",
  "postcode": "SW1A 1AA",
  "maxPages": 3,
  "fetchDetails": false
}
````

Search with filters and full detail enrichment:

```json
{
  "mode": "search",
  "channel": "cars",
  "make": "Audi",
  "minPrice": 10000,
  "maxPrice": 25000,
  "minYear": 2019,
  "fuelType": "Diesel",
  "transmission": "Automatic",
  "radius": 50,
  "postcode": "M1 1AE",
  "maxListings": 200,
  "fetchDetails": true
}
```

Scrape vans within 25 miles, sorted by most recent:

```json
{
  "mode": "search",
  "channel": "vans",
  "radius": 25,
  "sortBy": "most_recent",
  "postcode": "B1 1AA",
  "maxPages": 5
}
```

Paste URLs (search results and a single advert in one run):

```json
{
  "mode": "url",
  "urls": [
    "https://www.autotrader.co.uk/car-search?make=Tesla&postcode=SW1A1AA",
    "https://www.autotrader.co.uk/car-details/000000000000000"
  ],
  "maxPages": 2,
  "fetchDetails": true
}
```

### Input parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| mode | string | "search" | "search" (filters) or "url" (paste links). |
| channel | string | "cars" | cars, vans, bikes, motorhomes, caravans, trucks, farm, plant. |
| postcode | string | "SW1A 1AA" | Search centre and distance reference. |
| make | string | - | Exact AutoTrader make, e.g. BMW. |
| model | string | - | Exact AutoTrader model; applies when make is set. |
| minPrice / maxPrice | integer | - | Price band (basis set by priceSearchType). |
| minYear / maxYear | integer | - | Year band. |
| minMileage / maxMileage | integer | - | Mileage band. |
| fuelType | string | any | Petrol, Diesel, Electric, Hybrid and plug-in variants. |
| bodyType | string | any | Hatchback, Saloon, Estate, SUV, Coupe, Convertible, MPV, Pickup. |
| transmission | string | any | Automatic or Manual. |
| colour | string | - | Exterior colour, e.g. Black. |
| drivetrain | string | any | Front, Rear or Four Wheel Drive. |
| sellerType | string | any | trade (dealer) or private. |
| minEngineSize / maxEngineSize | string | - | Engine size band in litres, e.g. 2.0. |
| doors / seats | integer | - | Exact door / seat count. |
| radius | integer | - | Miles from postcode; empty for national. |
| writeoffStatus | string | "include" | include, exclude, or only written-off vehicles. |
| priceSearchType | string | "total" | Apply price filters to total price or monthly payment. |
| sortBy | string | "relevance" | relevance, price\_asc, price\_desc, distance, mileage, year\_dsc, year\_asc, most\_recent. |
| urls | array | - | AutoTrader search or advert URLs (url mode). |
| fetchDetails | boolean | true | Add full per-advert detail (one extra request per listing). |
| includeFinanceGuides | boolean | false | Keep the static finance explainer text (large, identical per advert). |
| maxPages | integer | 2 | Pages per search (site cap is 100). |
| maxListings | integer | 0 | Overall cap; 0 means unlimited. |
| maxResidentialRequests | integer | 400 | Cap on residential exits before falling back to the backup pool; 0 disables residential. |
| proxy | object | datacenter | Apify Proxy configuration. |

### Output example

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

```json
{
  "advertId": "000000000000000",
  "url": "https://www.autotrader.co.uk/car-details/000000000000000",
  "channel": "cars",
  "title": "BMW 3 Series",
  "subTitle": "2.0 320d M Sport Auto",
  "make": "BMW",
  "model": "3 Series",
  "year": 2020,
  "condition": "used",
  "mileage": 30000,
  "price": 20000,
  "priceFormatted": "£20,000",
  "priceIndicator": "GREAT",
  "monthlyPrice": "£300",
  "hasFinance": true,
  "fuelType": "Diesel",
  "bodyType": "Saloon",
  "engineSizeLitres": "2.0L",
  "engineSizeCC": 1995,
  "transmission": "Automatic",
  "drivetrain": "Rear Wheel Drive",
  "doors": "4",
  "seats": "5",
  "bodyColour": "Black",
  "emissionClass": "Euro 6",
  "trim": "M Sport",
  "sellerType": "TRADE",
  "dealerName": "Sample Motors",
  "dealerReviewRating": 4.6,
  "dealerReviewCount": 100,
  "latitude": 51.0000,
  "longitude": -0.1000,
  "numberOfImages": 20,
  "vehicleCheck": {
    "status": "PASSED",
    "statusText": "10 checks passed",
    "checks": [{ "id": "STOLEN", "label": "Not recorded as stolen", "status": "PASSED" }]
  },
  "serviceHistory": { "type": "FULL", "label": "Service history", "description": "Full service history" },
  "finance": { "monthlyPrice": "£300", "fcaName": "Sample Motors Limited", "fcaNumber": "000000", "lenderType": "appointed representative" },
  "dealer": {
    "name": "Sample Motors",
    "email": "sales@example.com",
    "phone": "+440000000000",
    "website": "https://www.example.com",
    "address": "1 Sample Road",
    "town": "Sampletown",
    "county": "Sampleshire",
    "postcode": "AB12 3CD",
    "openingHours": [{ "day": "Monday", "hours": "09:00 - 18:00" }]
  },
  "keyFeatures": ["Sat Nav", "Heated Seats"],
  "images": ["https://m.atcdn.co.uk/a/media/w800h600/00000000000000000000000000000000.jpg"],
  "scrapedAt": "2026-01-01T00:00:00.000Z"
}
```

### Notes on results

- A single AutoTrader search returns at most about 2,000 listings (the site caps a query at 100 pages). To pull more, subdivide the search by price band, year, make or area and run again.
- Featured and sponsored adverts can appear first regardless of the chosen sort order.
- Optional fields vary by vehicle: electric vehicles expose different spec than petrol or diesel, and finance details depend on the dealer.

### Plan and connection notes

- The default datacenter connection tier works for this scraper, so it runs on any Apify plan, including the free plan.
- If datacenter exits start getting rejected, the run automatically escalates to UK residential (subject to the residential usage cap) and then to a backup pool. Residential proxy access requires a paid Apify plan.
- For the largest runs, leave the proxy on the default and let the scraper manage the tiers, or pin a residential country if you prefer.

# Actor input Schema

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

search = pick a vehicle type, postcode and filters. url = paste AutoTrader search or advert URLs.

## `channel` (type: `string`):

Which AutoTrader marketplace to search.

## `postcode` (type: `string`):

UK postcode used as the search centre and to compute distance to each seller. Required by the site.

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

Exact AutoTrader make, e.g. BMW, Ford, Volkswagen. Leave empty for all makes.

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

Exact AutoTrader model, e.g. '3 Series'. Only applies when a make is set.

## `minPrice` (type: `integer`):

Minimum total price. Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Maximum total price. Leave empty for no maximum.

## `minYear` (type: `integer`):

Earliest registration/manufacture year. Leave empty for any.

## `maxYear` (type: `integer`):

Latest registration/manufacture year. Leave empty for any.

## `minMileage` (type: `integer`):

Minimum mileage. Leave empty for any.

## `maxMileage` (type: `integer`):

Maximum mileage. Leave empty for any.

## `fuelType` (type: `string`):

Filter by fuel type. Leave empty for any.

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

Filter by body type (car values shown; other vehicle types accept their own).

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

Filter by gearbox. Leave empty for any.

## `colour` (type: `string`):

Filter by exterior colour, e.g. Black, Blue, White. Leave empty for any.

## `drivetrain` (type: `string`):

Filter by drivetrain. Leave empty for any.

## `sellerType` (type: `string`):

Trade (dealer) or private seller.

## `minEngineSize` (type: `string`):

Minimum engine size in litres, e.g. 1.6. Leave empty for any.

## `maxEngineSize` (type: `string`):

Maximum engine size in litres, e.g. 3.0. Leave empty for any.

## `doors` (type: `integer`):

Exact number of doors. Leave empty for any.

## `seats` (type: `integer`):

Exact number of seats. Leave empty for any.

## `radius` (type: `integer`):

Limit results to this many miles from the postcode. Leave empty for national.

## `writeoffStatus` (type: `string`):

Include all, exclude written-off vehicles, or show only written-off vehicles.

## `priceSearchType` (type: `string`):

Whether the price filters apply to total price or monthly finance payment.

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

Result ordering. Note: featured/sponsored adverts may appear first regardless of sort.

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

Paste AutoTrader search URLs (e.g. https://www.autotrader.co.uk/car-search?make=BMW\&postcode=SW1A1AA) or advert URLs (e.g. https://www.autotrader.co.uk/car-details/202601038902613). Multi-URL supported.

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

ON: each listing gets full description, spec breakdown, 10-point history check, service history, finance details, full gallery with image tags and complete dealer contact (one extra request per listing). OFF: faster, listing-grid fields only.

## `includeFinanceGuides` (type: `boolean`):

OFF (default): keep only advert-specific finance (monthly price, FCA name/number, lender type). ON: also include AutoTrader's static PCP/HP/CS explainer text, which is identical for every advert and large. Only applies when 'Fetch full advert details' is ON.

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

How many result pages (about 20 listings each) to walk per search. AutoTrader caps a single search at 100 pages (about 2,000 listings). Subdivide with filters to go beyond that.

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

Overall cap across all searches/URLs. 0 means no cap (bounded by max pages).

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

Apify Proxy. Datacenter (the default) is enough; residential is used automatically only if datacenter exits get rejected.

## `maxResidentialRequests` (type: `integer`):

Budget control: the most residential exits the run may use before falling back to the backup pool. 0 disables residential entirely (datacenter + backup only). Residential is only used if datacenter gets rejected.

## Actor input object example

```json
{
  "mode": "search",
  "channel": "cars",
  "postcode": "SW1A 1AA",
  "make": "BMW",
  "fuelType": "",
  "bodyType": "",
  "transmission": "",
  "drivetrain": "",
  "sellerType": "any",
  "writeoffStatus": "include",
  "priceSearchType": "total",
  "sortBy": "relevance",
  "urls": [
    "https://www.autotrader.co.uk/car-search?make=BMW&model=3%20Series&postcode=SW1A1AA"
  ],
  "fetchDetails": true,
  "includeFinanceGuides": false,
  "maxPages": 1,
  "maxListings": 0,
  "proxy": {
    "useApifyProxy": true
  },
  "maxResidentialRequests": 400
}
```

# 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",
    "channel": "cars",
    "postcode": "SW1A 1AA",
    "make": "BMW",
    "urls": [
        "https://www.autotrader.co.uk/car-search?make=BMW&model=3%20Series&postcode=SW1A1AA"
    ],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/autotrader").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",
    "channel": "cars",
    "postcode": "SW1A 1AA",
    "make": "BMW",
    "urls": ["https://www.autotrader.co.uk/car-search?make=BMW&model=3%20Series&postcode=SW1A1AA"],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/autotrader").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",
  "channel": "cars",
  "postcode": "SW1A 1AA",
  "make": "BMW",
  "urls": [
    "https://www.autotrader.co.uk/car-search?make=BMW&model=3%20Series&postcode=SW1A1AA"
  ],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call abotapi/autotrader --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Autotrader $1💰 URL Search | Keyword Filtering | Rich Output",
        "description": "From $1/1K. Point it at a search, get back clean JSON with 30+ fields per vehicle. Designed for dealers, market analysts, valuation pipelines, lead generation, and anyone who needs autoscout24 data on tap.",
        "version": "1.2",
        "x-build-id": "UBaQbxFpfgBb0d6mE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/abotapi~autotrader/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-abotapi-autotrader",
                "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~autotrader/runs": {
            "post": {
                "operationId": "runs-sync-abotapi-autotrader",
                "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~autotrader/run-sync": {
            "post": {
                "operationId": "run-sync-abotapi-autotrader",
                "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": "Mode",
                        "enum": [
                            "search",
                            "url"
                        ],
                        "type": "string",
                        "description": "search = pick a vehicle type, postcode and filters. url = paste AutoTrader search or advert URLs.",
                        "default": "search"
                    },
                    "channel": {
                        "title": "Vehicle type",
                        "enum": [
                            "cars",
                            "vans",
                            "bikes",
                            "motorhomes",
                            "caravans",
                            "trucks",
                            "farm",
                            "plant"
                        ],
                        "type": "string",
                        "description": "Which AutoTrader marketplace to search.",
                        "default": "cars"
                    },
                    "postcode": {
                        "title": "Postcode",
                        "type": "string",
                        "description": "UK postcode used as the search centre and to compute distance to each seller. Required by the site.",
                        "default": "SW1A 1AA"
                    },
                    "make": {
                        "title": "Make",
                        "type": "string",
                        "description": "Exact AutoTrader make, e.g. BMW, Ford, Volkswagen. Leave empty for all makes."
                    },
                    "model": {
                        "title": "Model",
                        "type": "string",
                        "description": "Exact AutoTrader model, e.g. '3 Series'. Only applies when a make is set."
                    },
                    "minPrice": {
                        "title": "Min price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum total price. Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max price (£)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum total price. Leave empty for no maximum."
                    },
                    "minYear": {
                        "title": "Min year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Earliest registration/manufacture year. Leave empty for any."
                    },
                    "maxYear": {
                        "title": "Max year",
                        "minimum": 1900,
                        "type": "integer",
                        "description": "Latest registration/manufacture year. Leave empty for any."
                    },
                    "minMileage": {
                        "title": "Min mileage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum mileage. Leave empty for any."
                    },
                    "maxMileage": {
                        "title": "Max mileage",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum mileage. Leave empty for any."
                    },
                    "fuelType": {
                        "title": "Fuel type",
                        "enum": [
                            "",
                            "Petrol",
                            "Diesel",
                            "Electric",
                            "Hybrid",
                            "Petrol Plug-in Hybrid",
                            "Diesel Plug-in Hybrid",
                            "Petrol Hybrid",
                            "Diesel Hybrid",
                            "Bi Fuel",
                            "Hydrogen"
                        ],
                        "type": "string",
                        "description": "Filter by fuel type. Leave empty for any.",
                        "default": ""
                    },
                    "bodyType": {
                        "title": "Body type",
                        "enum": [
                            "",
                            "Hatchback",
                            "Saloon",
                            "Estate",
                            "SUV",
                            "Coupe",
                            "Convertible",
                            "MPV",
                            "Pickup"
                        ],
                        "type": "string",
                        "description": "Filter by body type (car values shown; other vehicle types accept their own).",
                        "default": ""
                    },
                    "transmission": {
                        "title": "Transmission",
                        "enum": [
                            "",
                            "Automatic",
                            "Manual"
                        ],
                        "type": "string",
                        "description": "Filter by gearbox. Leave empty for any.",
                        "default": ""
                    },
                    "colour": {
                        "title": "Colour",
                        "type": "string",
                        "description": "Filter by exterior colour, e.g. Black, Blue, White. Leave empty for any."
                    },
                    "drivetrain": {
                        "title": "Drivetrain",
                        "enum": [
                            "",
                            "Front Wheel Drive",
                            "Rear Wheel Drive",
                            "Four Wheel Drive"
                        ],
                        "type": "string",
                        "description": "Filter by drivetrain. Leave empty for any.",
                        "default": ""
                    },
                    "sellerType": {
                        "title": "Seller type",
                        "enum": [
                            "any",
                            "trade",
                            "private"
                        ],
                        "type": "string",
                        "description": "Trade (dealer) or private seller.",
                        "default": "any"
                    },
                    "minEngineSize": {
                        "title": "Min engine size (litres)",
                        "type": "string",
                        "description": "Minimum engine size in litres, e.g. 1.6. Leave empty for any."
                    },
                    "maxEngineSize": {
                        "title": "Max engine size (litres)",
                        "type": "string",
                        "description": "Maximum engine size in litres, e.g. 3.0. Leave empty for any."
                    },
                    "doors": {
                        "title": "Doors",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Exact number of doors. Leave empty for any."
                    },
                    "seats": {
                        "title": "Seats",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Exact number of seats. Leave empty for any."
                    },
                    "radius": {
                        "title": "Search radius (miles)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Limit results to this many miles from the postcode. Leave empty for national."
                    },
                    "writeoffStatus": {
                        "title": "Write-off status",
                        "enum": [
                            "include",
                            "exclude",
                            "only"
                        ],
                        "type": "string",
                        "description": "Include all, exclude written-off vehicles, or show only written-off vehicles.",
                        "default": "include"
                    },
                    "priceSearchType": {
                        "title": "Price basis",
                        "enum": [
                            "total",
                            "monthly"
                        ],
                        "type": "string",
                        "description": "Whether the price filters apply to total price or monthly finance payment.",
                        "default": "total"
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "price_asc",
                            "price_desc",
                            "distance",
                            "mileage",
                            "year_dsc",
                            "year_asc",
                            "most_recent"
                        ],
                        "type": "string",
                        "description": "Result ordering. Note: featured/sponsored adverts may appear first regardless of sort.",
                        "default": "relevance"
                    },
                    "urls": {
                        "title": "URLs",
                        "type": "array",
                        "description": "Paste AutoTrader search URLs (e.g. https://www.autotrader.co.uk/car-search?make=BMW&postcode=SW1A1AA) or advert URLs (e.g. https://www.autotrader.co.uk/car-details/202601038902613). Multi-URL supported.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetchDetails": {
                        "title": "Fetch full advert details",
                        "type": "boolean",
                        "description": "ON: each listing gets full description, spec breakdown, 10-point history check, service history, finance details, full gallery with image tags and complete dealer contact (one extra request per listing). OFF: faster, listing-grid fields only.",
                        "default": true
                    },
                    "includeFinanceGuides": {
                        "title": "Include finance guide text",
                        "type": "boolean",
                        "description": "OFF (default): keep only advert-specific finance (monthly price, FCA name/number, lender type). ON: also include AutoTrader's static PCP/HP/CS explainer text, which is identical for every advert and large. Only applies when 'Fetch full advert details' is ON.",
                        "default": false
                    },
                    "maxPages": {
                        "title": "Max pages per search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many result pages (about 20 listings each) to walk per search. AutoTrader caps a single search at 100 pages (about 2,000 listings). Subdivide with filters to go beyond that.",
                        "default": 1
                    },
                    "maxListings": {
                        "title": "Max listings (0 = unlimited)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Overall cap across all searches/URLs. 0 means no cap (bounded by max pages).",
                        "default": 0
                    },
                    "proxy": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Apify Proxy. Datacenter (the default) is enough; residential is used automatically only if datacenter exits get rejected.",
                        "default": {
                            "useApifyProxy": true
                        }
                    },
                    "maxResidentialRequests": {
                        "title": "Residential usage cap",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Budget control: the most residential exits the run may use before falling back to the backup pool. 0 disables residential entirely (datacenter + backup only). Residential is only used if datacenter gets rejected.",
                        "default": 400
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
