# AutoTrader UK Scraper — Cars, Prices, Specs & Dealer Contacts (`haketa/autotrader-scraper`) Actor

Scrape used & new car listings from AutoTrader UK: price, make, model, year, mileage, specs, dealer and location.

- **URL**: https://apify.com/haketa/autotrader-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Lead generation, E-commerce
- **Features:** Limited permissions
- **Stats:** 13 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.39 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🚗 AutoTrader UK Scraper — Car Listings, Prices, Deal Ratings, Full Specs & Dealer Contacts

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-00D4B2?style=flat-square\&logo=apify)](https://apify.com/haketa/autotrader-scraper)
[![UK Automotive](https://img.shields.io/badge/Market-UK_Automotive-012169?style=flat-square)](#)
[![Pagination](https://img.shields.io/badge/Pagination-1%2C000%2B_Cars-2EA44F?style=flat-square)](#)
[![Export Formats](https://img.shields.io/badge/Export-JSON_%7C_CSV_%7C_Excel_%7C_API-0969DA?style=flat-square)](#)

**Extract car listings from [AutoTrader UK](https://www.autotrader.co.uk/)** — Britain's largest new and used car marketplace — as clean, structured data. This **AutoTrader scraper** lets you search by make, model, UK postcode and filters and returns the **numeric price (GBP)**, AutoTrader's **deal rating (`priceIndicator`)**, mileage, registration year, **full vehicle specs** (fuel, transmission, drivetrain, engine size, body type, colour, doors, previous owners, Euro emission class), full-resolution photos, seller type and **dealer contact details — dealer name, phone, email and website** — for every car. No login, no coding.

Export every result to **JSON, CSV, Excel, XML, HTML, or API** for **UK automotive market intelligence, used-car valuation, stock sourcing, and B2B dealer lead generation**.

> Built for **car dealers and traders, automotive market researchers, price-comparison and valuation platforms, B2B automotive lead-generation teams and data analysts** who need fresh, reliable AutoTrader UK data at scale.

***

### ⚡ At a glance

| Feature | Details |
|---|---|
| **Target Platform** | [AutoTrader UK](https://www.autotrader.co.uk) (`autotrader.co.uk` — UK's #1 automotive marketplace) |
| **Search & Filter Controls** | 30+ Car Makes (`make`), any Model (`model`), 15 UK City Postcodes + Custom Postcode (`customPostcode`), Price (`minPrice`/`maxPrice`), Year (`minYear`/`maxYear`), Max Mileage (`maxMileage`), Sort Order (`sortBy`), or custom `startUrls` |
| **Pagination & Scale** | Automatic multi-page extraction (~20 cars/page) — supports **1,000+ to 20,000+ cars per run** (`maxPages: 0`) |
| **Deal Rating Included** | AutoTrader's `priceIndicator` (`GREAT`, `GOOD`, `FAIR`, `HIGH`, `LOW`, `NOANALYSIS`) on every vehicle |
| **Dealer Lead-Gen Fields** | `sellerType` (`Dealer` / `Private`), `dealerName`, `dealerPhone`, `dealerEmail`, `dealerWebsite`, `dealerRating`, `dealerLink` |
| **Full Vehicle Specs** | `fuelType`, `transmission`, `drivetrain`, `engineSize`, `bodyType`, `colour`, `doors`, `owners`, `power`, `co2Emissions`, `emissionClass` (`Euro 6`) |
| **Deduplication** | 100% deduplicated by canonical AutoTrader `advertId` |
| **Export Formats** | Bulk export to **JSON, CSV, Excel, HTML, XML**, or programmatic access via **Apify REST API** |

***

### 🔎 Why scrape AutoTrader UK?

[AutoTrader UK](https://www.autotrader.co.uk) is where virtually every franchise dealer group, independent motor trader and private seller in Great Britain lists their inventory. That makes it the single richest public source of **used-car pricing, regional supply, vehicle specifications and dealer contact data** in the UK automotive market.

Collecting that data manually is impractical: the site paginates ~20 vehicles at a time, distance-sorts results by postcode, and places full technical specifications and dealer contact details inside individual vehicle pages. Copying even a few hundred cars — let alone monitoring daily price drops and stock turnover — is impossible by hand. This **AutoTrader UK data extractor** turns the entire marketplace into a structured feed you can filter, analyze and refresh on a schedule.

**Common reasons people scrape AutoTrader UK:**

- 💷 **Price & depreciation intelligence** — track asking prices, price drops and deal ratings (`priceIndicator`) by make, model, registration year, trim and mileage.
- ☎️ **UK car dealer lead generation** — build B2B prospecting lists of independent and franchise dealers complete with **dealer name, phone number, email address, website URL and review rating**.
- 🚗 **Used-car stock sourcing & arbitrage** — automatically surface under-priced vehicles tagged `GREAT`, `GOOD` or `LOW` deal rating within a specific radius of your dealership postcode.
- 📊 **EV, hybrid & ULEZ market research** — analyze fuel-type shifts (`Electric`, `Hybrid`, `Petrol`, `Diesel`), `emissionClass` (`Euro 6` ULEZ compliance), and regional inventory age.
- 🔁 **Automotive inventory feeds** — pipe structured AutoTrader UK listings into valuation models, comparison portals, CRMs, or data warehouses.
- 📈 **Competitor stock monitoring** — track rival dealerships' inventory volume, pricing strategies and finance offerings (`hasFinance`, `isApproved`).

***

### ✨ What this AutoTrader UK scraper does

- ✅ **Search by make, model & UK postcode** — pick from 30+ major car brands, type any model (`3 Series`, `Focus`, `Golf`, `Qashqai`), choose a UK city postcode or enter any custom postcode (`customPostcode`), and filter by GBP price, year and mileage.
- ✅ **Start-URL mode (`startUrls`)** — paste any filtered `autotrader.co.uk/car-search?...` URL and the scraper automatically extracts and paginates your exact search.
- ✅ **Unlocked 1,000+ automatic pagination** — with `maxPages: 0` (the default), the actor steps through result pages (~20 cars per page) until your `maxItems` target is reached or all matching pages are collected.
- ✅ **Full detail-page enrichment (`scrapeDetails: true`)** — visits each vehicle listing to capture complete technical specs (`fuelType`, `transmission`, `drivetrain`, `engineSize`, `bodyType`, `colour`, `doors`, `owners`, `emissionClass`) and **dealer contact details** (`dealerName`, `dealerPhone`, `dealerEmail`, `dealerWebsite`).
- ✅ **Fast list-only mode (`scrapeDetails: false`)** — disable detail-page visits when you want a high-speed snapshot of prices, deal ratings (`priceIndicator`), mileage, registration year and preview photos across thousands of vehicles.
- ✅ **Instant deal-rating signals** — captures AutoTrader's `priceIndicator` (`GREAT`, `GOOD`, `FAIR`, `HIGH`, `LOW`) so you can filter for below-market bargains immediately.
- ✅ **Zero duplicates & timeout safety** — deduplicates every vehicle by its stable `advertId`, streams records to the dataset in real time, and exits cleanly before platform timeouts.
- ✅ **Export anywhere** — download as **JSON, CSV, Excel, HTML or XML**, or integrate with **Apify API, Google Sheets, Make, Zapier, Slack and webhooks**.

***

### 🎯 Use cases

#### 1. Used Car Dealers & Stock Buyers

Run scheduled searches for your target makes and models sorted by `datedesc` (newest listed) or `price-asc`, then filter for `priceIndicator === "GREAT"` or `"GOOD"` to buy under-priced trade and private stock before competitors spot it.

#### 2. B2B Automotive SaaS, Finance & Warranty Lead Generation

Extract thousands of active UK dealerships (`sellerType === "Dealer"`) with `dealerName`, `dealerPhone`, `dealerEmail`, `dealerWebsite`, `dealerRating` and `location` to power outbound sales for dealer management software (DMS), warranty products, vehicle logistics, or motor finance.

#### 3. Automotive Valuation & Depreciation Modeling

Combine `make`, `model`, `subtitle` (trim/derivative), `year`, `mileage`, `fuelType`, `transmission`, `owners` and `price` across 1,000+ vehicles to build accurate UK retail pricing curves and automated valuation models (AVMs).

#### 4. ULEZ / Clean Air Zone & EV Transition Analytics

Filter vehicles by `emissionClass` (`Euro 6` vs `Euro 5`/`Euro 4`) and `fuelType` across London (`SW1A 1AA`), Manchester (`M1 1AE`), Birmingham (`B1 1AA`), Glasgow (`G1 1XW`) and Bristol (`BS1 4DJ`) to study clean-air compliance and EV pricing parity.

***

### 📥 Input parameters

Configure your search using the form fields below, or paste custom AutoTrader search URLs into `startUrls`. All fields are optional — running with empty filters automatically collects a balanced sample across top UK car makes.

| Field | Type | Default | Description |
|---|---|---|---|
| `make` | string | `""` | Car brand from the dropdown (`Audi`, `BMW`, `Ford`, `Mercedes-Benz`, `Volkswagen`, `Toyota`, `Vauxhall`, `Nissan`, `Kia`, `Hyundai`, `Land Rover`, `Tesla`, `Porsche`, etc.). Blank = mixed sample across popular makes. |
| `model` | string | `""` | Optional model name for the selected make (e.g. `"3 Series"`, `"Focus"`, `"Golf"`, `"A3"`). Blank = all models. |
| `postcode` | string | `"SW1A 1AA"` | UK city/region center to search around (London, Manchester, Birmingham, Leeds, Liverpool, Glasgow, Edinburgh, Bristol, Newcastle, Sheffield, Nottingham, Cardiff, Belfast, Cambridge, Oxford). |
| `customPostcode` | string | `""` | Optional exact UK postcode (e.g. `"M1 5HF"`, `"EC1A 1BB"`). Overrides the `postcode` dropdown. |
| `minPrice` / `maxPrice` | integer | `0` | Minimum and maximum price in GBP (`£`). `0` = no limit. |
| `minYear` / `maxYear` | integer | `0` | Earliest and latest registration year. `0` = no limit. |
| `maxMileage` | integer | `0` | Maximum odometer mileage. `0` = no limit. |
| `sortBy` | string | `"relevance"` | Sort order: `relevance`, `price-asc`, `price-desc`, `datedesc` (newest listed), `mileage`, `year-desc`. |
| `scrapeDetails` | boolean | `true` | Visit each car's detail page for full technical specs and dealer contact details (`dealerName`, `dealerPhone`, `dealerEmail`, `dealerWebsite`). Turn off for a fast list scan. |
| `maxItems` | integer | `0` | Maximum number of cars to save (prefilled to `40` for fast trial runs; `0` = unlimited). |
| `maxPages` | integer | `0` | Maximum result pages per search (~20 cars/page). `0` = automatic pagination governed by `maxItems`. |
| `startUrls` | array | `[]` | Optional AutoTrader UK `car-search` URLs with your own on-site filters. Overrides make/model/postcode inputs. |
| `proxyConfiguration` | object | GB Residential | Proxy settings. **UK residential proxies (`GB`) are pre-configured and required** for reliable access. |
| `requestDelay` | integer | `600` | Delay between requests in milliseconds (`0`–`20000`). |
| `maxConcurrency` | integer | `6` | Parallel detail-page workers (`1`–`20`). |

#### Example 1 — 1,000+ BMW listings with full specs & dealer contacts

```json
{
  "make": "BMW",
  "postcode": "SW1A 1AA",
  "scrapeDetails": true,
  "maxItems": 1000,
  "maxPages": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "GB"
  }
}
```

#### Example 2 — Targeted stock-sourcing search (Ford Focus under £12,000)

```json
{
  "customPostcode": "M1 5HF",
  "make": "Ford",
  "model": "Focus",
  "minPrice": 5000,
  "maxPrice": 12000,
  "maxMileage": 60000,
  "minYear": 2018,
  "sortBy": "price-asc",
  "scrapeDetails": true,
  "maxItems": 500
}
```

#### Example 3 — Fast list-only market scan (`scrapeDetails: false`)

```json
{
  "postcode": "B1 1AA",
  "make": "Volkswagen",
  "scrapeDetails": false,
  "maxItems": 1500,
  "maxPages": 0
}
```

#### Example 4 — Custom AutoTrader UK search URLs

```json
{
  "startUrls": [
    "https://www.autotrader.co.uk/car-search?postcode=LS1%201BA&make=Audi&model=A3&fuel-type=Petrol"
  ],
  "scrapeDetails": true,
  "maxItems": 300
}
```

***

### 📤 Output & field reference

Each vehicle is saved as one structured JSON record. Below is a real record with `scrapeDetails: true`.

#### Sample JSON output

```json
{
  "advertId": "202609015599103",
  "url": "https://www.autotrader.co.uk/car-details/202609015599103",
  "title": "BMW 1 Series",
  "subtitle": "1.5 118i GPF Sport Auto Euro 6 (s/s) 5dr",
  "make": "BMW",
  "model": "1 Series",
  "year": 2019,
  "registration": "2019 (19 reg)",
  "condition": "used",
  "price": 8450,
  "priceText": "£8,450",
  "priceIndicator": "GREAT",
  "mileage": 92610,
  "fuelType": "Petrol",
  "transmission": "Automatic",
  "drivetrain": "Rear Wheel Drive",
  "engineSize": "1.5L",
  "bodyType": "Hatchback",
  "colour": "Silver",
  "doors": 5,
  "owners": 3,
  "power": null,
  "co2Emissions": null,
  "emissionClass": "Euro 6",
  "sellerType": "Dealer",
  "dealerName": "Car Planet Barnet",
  "dealerPhone": "(07537) 123898",
  "dealerEmail": "sales@car-planet.co.uk",
  "dealerWebsite": "https://www.car-planet.co.uk/",
  "dealerRating": 4.7,
  "dealerLink": "https://www.autotrader.co.uk/dealers/barnet/new-southgate/car-planet-barnet-10040891",
  "location": "New Southgate",
  "distanceMiles": 9,
  "attentionGrabber": "SAT NAV | START / STOP",
  "hasFinance": true,
  "isApproved": false,
  "images": [
    "https://m.atcdn.co.uk/a/media/w800h600/1eb68bf1155144ce94ea3c8a5d94385e.jpg"
  ],
  "numberOfImages": 42,
  "description": "All Car Planet stock is carefully picked, so you can buy from us with confidence …",
  "searchMake": "BMW",
  "searchPostcode": "SW1A 1AA",
  "rank": 1,
  "scrapedAt": "2026-11-02T00:12:01.883Z"
}
```

#### 🏷️ Vehicle Identity & Pricing Fields

| Field | Type | Coverage | Description |
|---|---|---|---|
| `advertId` | string | 🟢 High (100%) | Canonical AutoTrader UK advert ID (used for strict deduplication). |
| `url` | string | 🟢 High (100%) | Direct URL to the vehicle detail page on `autotrader.co.uk`. |
| `title` | string | 🟢 High (100%) | Vehicle headline (Make + Model). |
| `subtitle` | string | 🟢 High (~99%) | Derivative, engine, trim, Euro standard and door count line. |
| `make` / `model` | string | 🟢 High (100%) | Vehicle manufacturer and model name. |
| `year` | number | 🟢 High (100%) | Registration year (integer, e.g. `2019`). |
| `registration` | string | 🟢 High (~99%) | Registration year and UK plate series (e.g. `"2019 (19 reg)"`). |
| `condition` | string | 🟢 High (100%) | Vehicle condition (`"used"` or `"new"`). |
| `price` | number | 🟢 High (100%) | Numeric asking price in GBP (`£`, integer). |
| `priceText` | string | 🟢 High (100%) | Formatted display price (e.g. `"£8,450"`). |
| `priceIndicator` | string | 🟢 High (100%) | AutoTrader deal rating (`"GREAT"`, `"GOOD"`, `"FAIR"`, `"HIGH"`, `"LOW"`, `"NOANALYSIS"`). |
| `mileage` | number | 🟢 High (~99%) | Odometer reading in miles (integer). |
| `hasFinance` | boolean | 🟢 High (100%) | `true` when monthly finance is offered on the listing. |
| `isApproved` | boolean | 🟢 High (100%) | `true` for manufacturer-approved or franchise-approved used cars. |

#### ⚙️ Technical Specifications (Detail Mode)

| Field | Type | Coverage | Description |
|---|---|---|---|
| `fuelType` | string | 🟢 High (100% detail) | Fuel/powertrain type (`Petrol`, `Diesel`, `Electric`, `Hybrid – Petrol/Electric`, `Plug-in Hybrid`, etc.). |
| `transmission` | string | 🟢 High (100% detail) | Gearbox type (`Manual`, `Automatic`). |
| `drivetrain` | string | 🟢 High (~92% detail) | Drive layout (`Front Wheel Drive`, `Rear Wheel Drive`, `Four Wheel Drive`). |
| `engineSize` | string | 🟢 High (~98%) | Engine displacement in litres (e.g. `"1.5L"`, `"2.0L"`). |
| `bodyType` | string | 🟢 High (100% detail) | Body style (`Hatchback`, `SUV`, `Saloon`, `Estate`, `Coupe`, `Convertible`, `MPV`). |
| `colour` | string | 🟢 High (~98% detail) | Exterior colour (`Black`, `White`, `Silver`, `Grey`, `Blue`, etc.). |
| `doors` | number | 🟢 High (~99%) | Number of doors (integer). |
| `owners` | number | 🟡 Conditional (~65%) | Number of previous registered keepers when published on the advert. |
| `emissionClass` | string | 🟢 High (~92% detail) | Euro emission standard (e.g. `"Euro 6"`, `"Euro 5"`). |
| `power` / `co2Emissions` | string | 🟡 Conditional | Engine power (BHP) and CO₂ emissions when explicitly included in the advert payload. |

#### 📞 Seller & Dealer Lead-Generation Fields

| Field | Type | Coverage | Description |
|---|---|---|---|
| `sellerType` | string | 🟢 High (100%) | `"Dealer"` (trade seller) or `"Private"` (private individual). |
| `dealerName` | string | 🟢 High (~90% detail) | Dealership or advertiser business name. |
| `dealerPhone` | string | 🟢 High (100% detail) | Direct contact telephone number on the advert. |
| `dealerEmail` | string | 🟡 Conditional (~70% detail) | Dealership contact email address (populated for trade dealers; `null` for private sellers). |
| `dealerWebsite` | string | 🟡 Conditional (~65% detail) | Dealership external website URL (when published by the dealer). |
| `dealerRating` | number | 🟢 High (~85%) | AutoTrader dealer review score out of `5.0`. |
| `dealerLink` | string | 🟢 High (~85%) | Link to the dealer's storefront page on AutoTrader UK. |
| `location` | string | 🟢 High (100%) | Town or area where the vehicle is located. |
| `distanceMiles` | number | 🟢 High (100%) | Distance in miles from your search `postcode`. |
| `attentionGrabber` | string | 🟢 High (~90%) | Seller promotional headline (e.g. `"SAT NAV | FULL SERVICE HISTORY"`). |
| `images` / `numberOfImages` | array / number | 🟢 High (100%) | Full-resolution (`800x600`) vehicle photo URLs and total image count. |
| `description` | string | 🟢 High (100% detail) | Full seller description text. |
| `searchMake` / `searchPostcode` / `rank` | string / number | 🟢 High (100%) | Query metadata and search rank position. |
| `scrapedAt` | string | 🟢 High (100%) | ISO 8601 extraction timestamp. |

***

### 🔁 Pagination & 1,000+ scaling

The **AutoTrader UK scraper** is built for deep, reliable market extraction:

1. **Unlocked automatic pagination (`maxPages: 0`)** — by default, `maxPages` is `0`, allowing the scraper to step through page `1, 2, 3...` (~20 vehicles per page) until your `maxItems` limit (including **1,000+ cars**) is reached or the search completes.
2. **Multi-make empty-run expansion** — if you run the actor with no filters (`make: ""`), it automatically cycles through 12 top UK car brands (`Ford`, `BMW`, `Audi`, `Volkswagen`, `Mercedes-Benz`, `Toyota`, `Nissan`, `Vauxhall`, `Kia`, `Hyundai`, `Peugeot`, `Land Rover`) to build a balanced multi-brand dataset up to your `maxItems` cap.
3. **Deduplication & graceful timeout protection** — deduplicates every vehicle by `advertId`, pushes records to the dataset incrementally, and monitors the run clock so partial datasets are never lost if a run approaches its timeout.

***

### ⚙️ How to use

1. Open **AutoTrader UK Scraper** in **Apify Console** and click **Try for free**.
2. Choose a **Make (`make`)**, optional **Model (`model`)**, and **Search location (`postcode` or `customPostcode`)** — or paste any filtered AutoTrader UK search URL into `startUrls`.
3. Keep the pre-configured **UK residential proxy (`GB`)**.
4. Set **Max cars (`maxItems`)** (e.g. `40` for a quick test, `500` or `1000+` for deep runs) and choose whether to enable `scrapeDetails`.
5. Click **Start** and export your results as **JSON, CSV, Excel, HTML, XML**, or consume them via the **Apify API**.

***

### 💡 Pro tips for best results

- **List mode vs. Detail mode:**
  - Use `scrapeDetails: false` when you want to scan **1,000+ cars in ~1–2 minutes** for pricing, `priceIndicator` deal ratings, mileage, registration year and photos.
  - Use `scrapeDetails: true` when you need **dealer phone numbers, dealer emails, dealer websites, fuel type, transmission, colour, body type and Euro emission class**.
- **Spot undervalued stock immediately:** Filter your exported dataset for `priceIndicator === "GREAT"` or `"LOW"` and `sellerType === "Private"` or `"Dealer"`.
- **Segment by postcode radius:** AutoTrader sorts results by distance from `postcode` / `customPostcode`. Run multiple searches centered on key regional postcodes (`SW1A 1AA`, `M1 1AE`, `B1 1AA`, `G1 1XW`) and deduplicate on `advertId` for nationwide coverage.

***

### ⚠️ Honest limitations

- **UK Residential Proxy Required:** AutoTrader UK blocks datacenter IP addresses. Keep `proxyConfiguration` set to Apify `RESIDENTIAL` with country `GB` (pre-configured by default).
- **Private seller emails:** Private sellers do not publish email addresses or websites on AutoTrader; `dealerEmail` and `dealerWebsite` are populated on trade dealer listings where the dealership provides them (~65–70% of all adverts).
- **Detail-mode runtime:** Because `scrapeDetails: true` fetches each vehicle's individual page over residential proxies, scraping 1,000+ cars with full details requires a higher run timeout (e.g. 15–30 minutes) or running with `scrapeDetails: false` for fast list extraction.

***

### ❓ FAQ

#### Which AutoTrader site does this actor scrape?

It scrapes **AutoTrader UK (`autotrader.co.uk`)**, the United Kingdom's largest automotive marketplace.

#### How many cars can I scrape in a single run?

You can scrape **1,000+ to 10,000+ unique cars** per run. With `maxPages: 0` (the default), pagination continues automatically until `maxItems` is reached.

#### Do I get the dealer's phone number, email and website?

Yes — when `scrapeDetails: true` is enabled, `dealerPhone` is populated on ~100% of listings, `dealerName` on ~90%, and `dealerEmail` / `dealerWebsite` on ~65–70% of dealer listings.

#### What is `priceIndicator`?

`priceIndicator` is AutoTrader UK's official deal-rating badge (`GREAT`, `GOOD`, `FAIR`, `HIGH`, `LOW`), which compares a vehicle's asking price against current market valuations for identical specs and mileage.

#### Why do I need a UK (`GB`) residential proxy?

AutoTrader UK uses strict edge protection that blocks non-UK and datacenter traffic. The input is pre-filled with `"apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GB"` so it works out of the box.

#### Can I schedule daily runs to monitor price drops and new arrivals?

Yes. Set `sortBy: "datedesc"` (newest listed) and schedule the actor to run daily or hourly via **Apify Schedules**. Because every vehicle carries a permanent `advertId`, you can easily diff today's dataset against yesterday's to trigger Slack, email, or webhook alerts on new arrivals and price reductions.

***

### 💻 API & programmatic integration

Trigger **AutoTrader UK Scraper** and fetch clean vehicle and dealer records programmatically via the **Apify REST API**, Python, or Node.js.

#### cURL example

```bash
curl -X POST "https://api.apify.com/v2/acts/haketa~autotrader-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "make": "BMW",
    "postcode": "SW1A 1AA",
    "scrapeDetails": true,
    "maxItems": 500,
    "maxPages": 0,
    "proxyConfiguration": {
      "useApifyProxy": true,
      "apifyProxyGroups": ["RESIDENTIAL"],
      "apifyProxyCountry": "GB"
    }
  }'
```

#### Python (`apify-client`) example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "make": "Audi",
    "model": "A3",
    "postcode": "M1 1AE",
    "maxPrice": 18000,
    "scrapeDetails": True,
    "maxItems": 500,
    "maxPages": 0,
}

run = client.actor("haketa/autotrader-scraper").call(run_input=run_input)

for car in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{car.get('title')} ({car.get('year')}) — {car.get('priceText')} [{car.get('priceIndicator')}] | Dealer: {car.get('dealerName')} ({car.get('dealerPhone')})")
```

#### Node.js (`apify-client`) example

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('haketa/autotrader-scraper').call({
    make: 'Ford',
    postcode: 'B1 1AA',
    scrapeDetails: true,
    maxItems: 500,
    maxPages: 0,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Saved ${items.length} AutoTrader UK vehicles.`);
```

***

### 🔗 Related scrapers

Building a cross-market automotive pricing, dealer-lead or inventory pipeline? Pair this **AutoTrader UK scraper** with:

- [AutoScout24 Scraper — Cars, Prices, Specs & Dealer Contacts](https://apify.com/haketa/autoscout24-scraper) — pan-European car listings and dealer contacts.
- [CarGurus Scraper — Car Listings, Prices, IMV & Dealer Leads](https://apify.com/haketa/cargurus-scraper) — US & UK car listings with Instant Market Value deal ratings.
- [Otomoto.pl Scraper — Poland Used Cars](https://apify.com/haketa/otomoto-scraper) — Poland's #1 automotive marketplace.
- [YallaMotor Scraper — GCC Used & New Cars](https://apify.com/haketa/yallamotor-scraper) — Middle East / GCC automotive listings.
- [KAYAK Car Rental Scraper — Prices, Agencies & Deals](https://apify.com/haketa/kayak-car-rental-scraper) — car rental pricing and fleet intelligence.

***

### 📋 Changelog

- **v1.2 (2026-11)** — Unlocked 1,000+ deep pagination by changing `maxPages` default from `10` to `0` (auto-pagination governed by `maxItems`), expanded default UK car makes for empty-input runs, tuned prefill (`maxItems: 40`) for fast trial runs, and expanded documentation.
- **v1.1 (2026-11)** — Added extraction of `owners` (previous keepers) and `emissionClass` (`Euro 6`) in detail mode, plus strict type sanitization.
- **v1.0 (2026-06)** — Initial release with UK postcode/make/model search, `priceIndicator` deal ratings, full vehicle specs, and dealer contact extraction.

# Changelog

This Actor's version history is a separate document: https://apify.com/haketa/autotrader-scraper/changelog.md

# Actor input Schema

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

Pick a car brand from the list. Leave blank to get a mixed sample across the most popular makes.

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

Optional model name for the chosen make, e.g. '3 Series', 'Focus', 'Golf'. Leave empty for all models.

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

Pick a UK city/area to search around. Results are sorted by distance from here. Use the 'Custom postcode' field below for an exact postcode.

## `customPostcode` (type: `string`):

Optional. Type an exact UK postcode to search around, e.g. 'M1 5HF'. Overrides the location picker above.

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

Only show cars at or above this price. 0 = no limit.

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

Only show cars at or below this price. 0 = no limit.

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

Earliest registration year. 0 = no limit.

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

Latest registration year. 0 = no limit.

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

Only show cars at or below this mileage. 0 = no limit.

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

How results are ordered.

## `scrapeDetails` (type: `boolean`):

Open each car for full specs (fuel, transmission, colour, etc.) and dealer contact (name, phone, email, website). Slower but far richer. Turn off for a fast list.

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

Maximum number of cars to scrape. 0 = no limit.

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

Maximum result pages per search (~20 cars each). 0 = automatic pagination governed by Max cars.

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

Optional. Paste AutoTrader UK car-search URLs with your own filters. Used instead of the make/model/location inputs above.

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

A UK residential proxy is strongly recommended for reliable results.

## `requestDelay` (type: `integer`):

Delay between requests in milliseconds.

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

Parallel detail-page requests.

## Actor input object example

```json
{
  "make": "",
  "postcode": "SW1A 1AA",
  "minPrice": 0,
  "maxPrice": 0,
  "minYear": 0,
  "maxYear": 0,
  "maxMileage": 0,
  "sortBy": "relevance",
  "scrapeDetails": true,
  "maxItems": 40,
  "maxPages": 0,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  },
  "requestDelay": 600,
  "maxConcurrency": 6
}
```

# Actor output Schema

## `advertId` (type: `string`):

AutoTrader advert ID

## `url` (type: `string`):

Listing URL

## `title` (type: `string`):

Make + model

## `subtitle` (type: `string`):

Trim / derivative

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

Car make

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

Car model

## `year` (type: `string`):

Registration year

## `registration` (type: `string`):

Year + reg plate

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

Used / new

## `price` (type: `string`):

Numeric price (GBP)

## `priceText` (type: `string`):

Displayed price

## `priceIndicator` (type: `string`):

Price/deal rating

## `mileage` (type: `string`):

Mileage

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

Fuel type

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

Gearbox

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

Drivetrain

## `engineSize` (type: `string`):

Engine size

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

Body type

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

Colour

## `doors` (type: `string`):

Number of doors

## `owners` (type: `string`):

Previous owners

## `power` (type: `string`):

Engine power

## `co2Emissions` (type: `string`):

CO2 emissions

## `emissionClass` (type: `string`):

Euro emission standard (e.g. Euro 6)

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

Dealer / Private

## `dealerName` (type: `string`):

Dealer name

## `dealerPhone` (type: `string`):

Dealer phone

## `dealerEmail` (type: `string`):

Dealer email

## `dealerWebsite` (type: `string`):

Dealer website

## `dealerRating` (type: `string`):

Dealer review rating

## `dealerLink` (type: `string`):

Dealer page URL

## `location` (type: `string`):

Vehicle location

## `distanceMiles` (type: `string`):

Distance from postcode (miles)

## `attentionGrabber` (type: `string`):

Seller highlight text

## `hasFinance` (type: `string`):

Finance available

## `isApproved` (type: `string`):

Manufacturer/franchise approved

## `images` (type: `string`):

Image URLs

## `numberOfImages` (type: `string`):

Number of images

## `description` (type: `string`):

Description

## `searchMake` (type: `string`):

Make searched

## `searchPostcode` (type: `string`):

Postcode searched

## `rank` (type: `string`):

Position in results

## `scrapedAt` (type: `string`):

ISO timestamp

# 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 = {
    "maxItems": 40,
    "maxPages": 0,
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "GB"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/autotrader-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 = {
    "maxItems": 40,
    "maxPages": 0,
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "GB",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/autotrader-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 40,
  "maxPages": 0,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "GB"
  }
}' |
apify call haketa/autotrader-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,haketa/autotrader-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/bUBggiWmqee6GDY1A/builds/BhTYWVyi0I6V3DzJD/openapi.json
