# Autotrader UK Dealers Scraper — Dealer Leads, Stock & Ratings (`yugenox/autotrader-uk-dealers-scraper`) Actor

Scrape UK car dealers from Autotrader by town, county, dealer name or brand: name, address, phone, website, lat/long, rating and review count, cars in stock, used/new stock, franchises, services, opening hours, awards and a sample of their stock. Business data only. No login.

- **URL**: https://apify.com/yugenox/autotrader-uk-dealers-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 dealers

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/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 Dealers Scraper: car dealer leads, stock levels and ratings

Scrape **UK car dealers from Autotrader** (autotrader.co.uk) by town, county, dealer name or brand, or the whole directory of about **13,700 dealers**. Every dealer comes with its **name, full address and postcode, phone number, website, map coordinates, customer rating and number of reviews, how many cars and vans it has in stock (used and new), franchised brands, approved-used schemes, services, opening hours, Autotrader awards** and a **sample of its current stock** with prices. Business data only. No login, no cookies, no Autotrader account.

### What you get

| | |
|---|---|
| **Dealer** | Name, Autotrader dealer ID and page, website, logo, photos, "About us" text, strapline |
| **Contact** | Phone number(s), whether it takes e-mail enquiries, live chat |
| **Address** | Street, town, county, region, postcode, latitude and longitude |
| **Reputation** | Customer rating (out of 5), number of reviews, Autotrader awards (e.g. "2025 Highly rated") |
| **Stock** | Cars on the forecourt, car adverts in total, used and new cars for sale, used and new vans for sale, every other stock count (bikes, motorhomes, caravans, trucks…) |
| **Brands** | Franchises (new-car makes) and manufacturer approved-used schemes |
| **Services** | Home delivery, click and collect, part exchange, finance, servicing, MOT, bodyshop, EV charging and more; appointment only; admin fee; buy online |
| **Opening hours** | Per day, e.g. `{"Monday": "08:00-18:00"}` |
| **Stock sample** (on by default) | Up to ~25 adverts from the dealer's page: title, make, model, price, year, plate, mileage, fuel, gearbox, engine, price rating, image and link |

### How to use it

1. Enter **towns or counties**, e.g. `Manchester`, `Leeds`, `Kent`, `Greater London`, `Glasgow`. Every Autotrader dealer listed there is scraped.
2. Or enter **dealer names** (`Arnold Clark`, `Vertu`, `Sytner`) or **brands** (`BMW`, `Land Rover`), or paste **dealer page URLs**. Tick **Every dealer in the UK** for the whole directory.
3. Set **Max dealers** and run.

Combine them: a town plus a brand gives that brand's dealers in that town; a town plus a dealer name gives that group's branches there.

#### Input examples

Every dealer in Manchester:

```json
{
  "locations": ["Manchester"],
  "maxItems": 500
}
```

BMW dealers in Kent and Surrey with at least 50 cars in stock:

```json
{
  "locations": ["Kent", "Surrey"],
  "makes": ["BMW"],
  "minCarsInStock": 50
}
```

All Vertu branches, without the stock sample:

```json
{
  "dealerNames": ["Vertu"],
  "includeStockSample": false,
  "maxItems": 0
}
```

Specific dealers:

```json
{
  "startUrls": [
    { "url": "https://www.autotrader.co.uk/dealers/lancashire/manchester/williams-landrover-9994" },
    { "url": "10007807" }
  ]
}
```

### Output example

```json
{
  "site": "autotrader.co.uk",
  "dealerId": "9994",
  "name": "Williams Landrover",
  "url": "https://www.autotrader.co.uk/dealers/lancashire/manchester/williams-landrover-9994",
  "website": "https://www.williamsgroup.co.uk/landrover/contact-us/manchester/",
  "phone": "(0161) 937 6765",
  "acceptsEmailEnquiries": true,
  "addressLine1": "24 BARTON DOCK ROAD",
  "town": "Manchester",
  "county": "Lancashire",
  "region": "North West",
  "postcode": "M41 7GF",
  "latitude": 53.4647775,
  "longitude": -2.3388703,
  "rating": null,
  "reviewCount": 9,
  "carsOnForecourt": 135,
  "carAdverts": 207,
  "usedCarsForSale": 154,
  "newCarsForSale": 25,
  "usedVansForSale": 9,
  "newVansForSale": 4,
  "franchises": ["LAND ROVER"],
  "approvedUsedBrands": ["LAND ROVER"],
  "businessServices": ["Home delivery", "Live video viewing", "Click and collect", "Part exchange", "Finance services"],
  "onSiteServices": ["New vehicle sales", "Used vehicle sales", "Servicing", "Bodyshop", "Electric charging point", "MOT"],
  "openingHours": { "Monday": "08:00-18:00", "Saturday": "09:00-17:00", "Sunday": "11:00-16:00" },
  "homeDelivery": true,
  "clickAndCollect": true,
  "liveChat": true,
  "chargesAdminFee": false,
  "sampleAdverts": [
    {
      "advertId": "202606223522735",
      "url": "https://www.autotrader.co.uk/car-details/202606223522735",
      "title": "Land Rover Defender 110 4.4 P635 OCTA 5dr",
      "make": "Land Rover",
      "model": "Defender 110",
      "price": 124995,
      "year": 2026,
      "mileage": 6212,
      "summary": "5 door Automatic Petrol SUV"
    }
  ],
  "searchLocation": "Manchester",
  "position": 1,
  "scrapedAt": "2026-10-01T22:55:12.000Z"
}
```

Every row has the same columns; a value the dealer doesn't show is `null` (lists are `[]`). The dataset has three ready-made views: **Overview**, **Contact list** and **Stock**.

### Use cases

- **B2B lead lists**: dealers to call or e-mail for finance, warranty, software, marketing, photography or detailing services.
- **Territory planning**: every dealer in a county, with coordinates and stock size.
- **Dealer group mapping**: all branches of Arnold Clark, Vertu, Sytner, Evans Halshaw and other groups.
- **Market intelligence**: track stock levels, ratings and franchises over time with a scheduled run.
- **Brand networks**: who sells and approves which manufacturer, and where.

### FAQ

**Do I need an Autotrader account, cookies or a login?** No. The scraper reads Autotrader's public dealer pages, the same ones any visitor sees. It never logs in and needs nothing from you except where or what to look for.

**Where do the dealers come from?** From Autotrader's own dealer directory (about 13,700 dealer pages). Towns and counties are matched as Autotrader writes them in its dealer links, so `Manchester` also finds dealers listed under Greater Manchester, and `London` includes Greater London.

**Does it scrape every car a dealer sells?** No — it gives the dealer's stock totals (used and new, cars and vans) and a sample of up to ~25 adverts that the dealer page itself shows. Full stock lists come from Autotrader's search pages, which its robots.txt asks crawlers to stay out of, so this scraper doesn't read them.

**How fast is it?** About 4 dealers per second, so 500 dealers take about two minutes. The whole UK directory takes about an hour; raise the run Timeout to 2 hours for that.

**How does the brand filter work?** With a town, county or dealer name, every dealer there is checked and kept only if it is a franchise or approved-used dealer for the brand, or has the brand in its name. On its own, the brand filter looks at dealers whose name contains the brand (e.g. "Sytner BMW Leicester"), because checking all 13,700 dealers for one brand would take an hour.

**Why is `rating` sometimes `null` when `reviewCount` isn't?** Autotrader shows no recent rating for some dealers even though they have older reviews. The scraper reports the rating exactly when Autotrader has one.

**Are customer reviews included?** No. You get the rating and the number of reviews; the scraper never collects review texts or reviewer names.

**Which proxy should I use?** Keep the default (Apify Proxy, datacenter). It comes with every Apify plan, including the free one. If Autotrader refuses datacenter IPs for a while, the run switches to UK residential proxies when your account has them, and carries on without them when it doesn't.

**What does a run cost?** A small fee per run plus a fee per dealer saved. If you use the brand or minimum-stock filter, every dealer page that was checked but didn't match costs a small fraction of a dealer. See the Pricing tab.

**Is it legal to scrape Autotrader?** This Actor only collects publicly available data: car dealers' business listings that anyone can see on Autotrader without an account, such as the business name, address, business phone number, website, opening hours, stock counts and ratings. Collecting publicly available data is generally legal, but you're responsible for how you use it. The scraper only reads dealer (trade) pages — it never collects private sellers, customer reviews or reviewer names. You must follow privacy and marketing laws such as GDPR, PECR, PIPEDA and CCPA, as well as Autotrader's terms. If you're unsure, check with a lawyer. More on this: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. Everything comes from pages Autotrader shows to any visitor without logging in. It never uses a login, never touches user accounts, saved searches or messages, and only reads pages that Autotrader's robots.txt allows.

*This Actor is not affiliated with, endorsed by or sponsored by Auto Trader Limited or Autotrader. All trademarks belong to their owners.*

# Actor input Schema

## `locations` (type: `array`):

UK towns, cities or counties as Autotrader writes them, e.g. "Manchester", "Leeds", "Kent", "Greater London", "Glasgow". Every Autotrader dealer listed there is scraped.

## `dealerNames` (type: `array`):

Words in the dealer's name, e.g. "Arnold Clark", "Vertu", "Sytner", "Evans Halshaw". Combined with towns, only matching dealers there.

## `makes` (type: `array`):

Only dealers that sell these brands as a franchise or approved-used dealer, or have the brand in their name, e.g. "BMW", "Land Rover", "Mercedes-Benz". Add a town or county to check every dealer there; on its own, the brand finds dealers whose name contains it.

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

Optional: Autotrader dealer pages (https://www.autotrader.co.uk/dealers/…) or numeric dealer IDs.

## `allDealers` (type: `boolean`):

Scrape Autotrader's whole dealer directory (about 13,700 dealers, up to Max dealers). Takes about an hour for everything — raise the run Timeout to 2 hours.

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

Maximum number of dealers for the whole run. 0 = everything that matches.

## `minCarsInStock` (type: `integer`):

Only dealers advertising at least this many cars on Autotrader.

## `includeStockSample` (type: `boolean`):

Adds up to ~25 adverts from the dealer's page (title, make, model, price, year, mileage, fuel, gearbox, price rating, image, link) in sampleAdverts. Stock totals are always included.

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

Apify Proxy (datacenter) is the default and comes with every Apify plan. If Autotrader refuses datacenter IPs for a while, the run switches to UK residential proxies when your account has them.

## Actor input object example

```json
{
  "locations": [
    "Manchester"
  ],
  "allDealers": false,
  "maxItems": 20,
  "includeStockSample": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped dealers.

## `run` (type: `string`):

Status and statistics for this run.

## `report` (type: `string`):

RUN_REPORT: how the run ended, counts, requests and proxy use.

# 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 = {
    "locations": [
        "Manchester"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/autotrader-uk-dealers-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 = {
    "locations": ["Manchester"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/autotrader-uk-dealers-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 '{
  "locations": [
    "Manchester"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/autotrader-uk-dealers-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/autotrader-uk-dealers-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/6WRcME6XAnNqqgQ0X/builds/LF2bjbJd6J6Dg9xZl/openapi.json
