# Motors.co.uk Scraper — UK Used Car Listings & Prices (`studio-amba/motors-co-uk-scraper`) Actor

Scrape used car listings from Motors.co.uk, the UK's #2 car classifieds site (owned by Cazoo). Extract price, mileage, year, fuel type, transmission, body style, dealer name and location. No login or cookies required.

- **URL**: https://apify.com/studio-amba/motors-co-uk-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 result scrapeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### What does Motors.co.uk Scraper do?

Know which used cars match your price, mileage, and spec on [Motors.co.uk](https://www.motors.co.uk), the UK's #2 car classifieds site (owned by Cazoo), without paging through listings by hand. No login or cookies required.

Search by make, model, or free text, filter by price, mileage, and registration year, and get structured JSON, CSV, or Excel output in minutes via the Apify platform, with scheduling, integrations, and proxy rotation built in.

### Why use Motors.co.uk Scraper?

- **Market research** — Compare used car prices and spec across the UK
- **Price monitoring** — Track price changes for specific makes and models over time
- **Dealer intelligence** — Analyze dealer inventory and pricing strategies
- **Data analytics** — Build datasets for UK automotive market analysis
- **Lead generation** — Find cars matching specific criteria nationwide
- **Academic research** — Study used car market trends, depreciation curves, pricing patterns

### How to use Motors.co.uk Scraper

1. Go to the **Input** tab
2. Enter a make (e.g., "BMW"), a model, or free-text keywords
3. Set your filters: price range, mileage range, registration year range
4. Set the maximum number of results you need
5. Click **Start** and wait for the run to finish
6. Download your data from the **Output** tab in JSON, CSV, Excel, or other formats

### Input

| Field | Type | Description |
|-------|------|-------------|
| `make` | string | Car manufacturer, using the site's own name (e.g., BMW, Ford, Volkswagen) |
| `model` | string | Car model, using the site's own name (e.g., "3 Series", "Golf"). Use together with `make` |
| `keywords` | string | Free-text search (e.g., "Tesla Model 3") |
| `minPrice` / `maxPrice` | integer | Price range in GBP |
| `minYear` / `maxYear` | integer | Registration year range |
| `minMileage` / `maxMileage` | integer | Mileage range in miles |
| `postcode` | string | UK postcode used as the search anchor (defaults to a central London postcode) |
| `distanceMiles` | integer | Search radius in miles, or 1000 for a national UK-wide search (default) |
| `maxResults` | integer | Max listings to return (default: 100, max: 5000) |
| `proxyConfiguration` | object | Proxy settings for reliability |

### Output

Each car listing includes the following fields. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
    "make": "BMW",
    "model": "4 Series",
    "variant": "2018 - 2.0 420D Gran Coupe M Sport Auto 5dr",
    "title": "2018 - 2.0 420D Gran Coupe M Sport Auto 5dr",
    "year": 2018,
    "mileage": 120250,
    "fuelType": "Diesel",
    "transmission": "Automatic",
    "bodyStyle": "Hatchback",
    "colour": "Grey",
    "price": 9749,
    "currency": "GBP",
    "dealerName": "Mayfair Motor Solutions",
    "city": "Marble Arch",
    "postcode": "W1H 7AB",
    "imageUrl": "https://cdn.images.autoexposure.co.uk/AETA71470/AETV23755760_1e.jpg",
    "imageUrls": [
        "https://cdn.images.autoexposure.co.uk/AETA71470/AETV23755760_1e.jpg"
    ],
    "url": "https://www.motors.co.uk/car-76829986",
    "listingId": "76829986",
    "scrapedAt": "2026-09-13T09:16:25.042Z"
}
```

### Data fields

| Field | Description | Example |
|-------|-------------|---------|
| `make` | Manufacturer | BMW |
| `model` | Model | 4 Series |
| `variant` | Trim / variant description | "2018 - 2.0 420D Gran Coupe M Sport Auto 5dr" |
| `year` | Registration year | 2018 |
| `mileage` | Miles driven | 120250 |
| `fuelType` | Fuel type | Petrol, Diesel, Electric, Hybrid |
| `transmission` | Gearbox type | Automatic, Manual |
| `bodyStyle` | Body style | Hatchback, Saloon, Estate, Coupe, SUV |
| `price` | Listed price | 9749 |
| `currency` | Price currency | GBP (always) |
| `dealerName` | Selling dealer | "Mayfair Motor Solutions" |
| `city` | Dealer town | Marble Arch |

### How much does it cost to scrape Motors.co.uk?

Motors.co.uk Scraper uses simple HTTP requests (no browser needed), making it efficient. It charges $0.005 per run (start fee, based on its 1 GB memory allocation) plus $0.002 per result. 100 results costs about $0.21; 1,000 about $2.01; 5,000 (maximum per run) about $10.01. A run's usage cost only settles after it reports SUCCEEDED.

### Tips and advanced options

- **Use make/model for precision** — Free text search is fine for a specific model name, but `make` + `model` gives the most reliable filtering.
- **National by default** — Leave `distanceMiles` at 1000 to search the whole UK; only set a smaller radius if you specifically want listings near one postcode.
- **Combine filters** — Narrow results with price, mileage, and year filters for focused datasets.
- **Schedule runs** — Set up daily or weekly scraping to track price changes over time.

### FAQ and support

**Is it legal to scrape Motors.co.uk?**
Motors.co.uk Scraper accesses only publicly available search data that any visitor can see, through the same API the site's own search page uses. It does not require login, bypass authentication, or access private data, and it does not touch any URL disallowed in the site's robots.txt. Always review and comply with the target website's Terms of Service before use.

**What are the limitations?**
Motors.co.uk's search API returns a fixed page size (roughly 20-22 listings per page, net of ad placements) regardless of what page size is requested — the actor handles this automatically by paginating.

**I found a bug or need help**
Please submit an issue on the [Issues tab](https://console.apify.com/actors/motors-co-uk-scraper/issues) and we'll get back to you quickly. For custom scraping solutions, reach out via the same channel.

### How to scrape Motors.co.uk data

1. Go to this actor's page on the [Apify Store](https://apify.com/store).
2. Click **Try for free** to open it in Apify Console.
3. Configure your make/model or keywords, set the maximum number of results, and adjust filters if needed.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or connect it to your workflow via API.

You can also schedule regular runs, set up webhooks for real-time notifications, or integrate the results directly into your application using the [Apify API](https://docs.apify.com/api).

### Related scrapers

Looking for used car data from other markets? Studio Amba also runs:

- **AutoScout24 Scraper** — used car listings across 8 European markets (DE, AT, NL, BE, IT, FR, ES, CH)
- **Mobile.de Scraper** — Germany's largest car marketplace
- **Mobile.bg Scraper** — Bulgaria's largest car marketplace
- **Willhaben Cars Scraper** — Austria's largest classifieds site, cars section
- **DoneDeal Scraper** — Ireland's largest classifieds site, including cars

### Maintained by Studio Amba

We run 700+ scrapers for European websites, and the priority is keeping
every one of them working. Automated runs test this actor against the live
site and verify the output is complete. When the website changes, the
scraper usually gets repaired the same day, without you having to report
it.

# Actor input Schema

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

Car manufacturer, using the site's own display name (e.g. BMW, Ford, Volkswagen, Mercedes-Benz).

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

Car model, using the site's own display name (e.g. '3 Series', 'Golf'). Must be used together with Make.

## `keywords` (type: `string`):

Free-text search (e.g. 'Tesla Model 3'). Use this instead of Make/Model for broader or model-variant searches.

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

Minimum price in GBP.

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

Maximum price in GBP.

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

Minimum registration year.

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

Maximum registration year.

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

Minimum mileage in miles.

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

Maximum mileage in miles.

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

UK postcode used as the search anchor (required by the site's own search API). Defaults to a central London postcode with a national search radius, so results are UK-wide regardless of the postcode you provide unless you also set Distance.

## `distanceMiles` (type: `integer`):

Search radius in miles from the postcode. Use 1000 for a national (UK-wide) search — this is the default. Common values: 1, 10, 20, 30, 40, 50, 60, 100, 200, or 1000 for National.

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

Maximum number of car listings to return.

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

Apify Proxy configuration. Automatic proxy works for this site — no anti-bot protection was found.

## Actor input object example

```json
{
  "make": "BMW",
  "postcode": "SW1A 1AA",
  "distanceMiles": 1000,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (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 = {
    "make": "BMW",
    "postcode": "SW1A 1AA",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/motors-co-uk-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 = {
    "make": "BMW",
    "postcode": "SW1A 1AA",
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/motors-co-uk-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 '{
  "make": "BMW",
  "postcode": "SW1A 1AA",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call studio-amba/motors-co-uk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/motors-co-uk-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/Nz9E0RMsLapajM4ZC/builds/LQpia679dfUYgVFZj/openapi.json
