# 🚘 UK Used Car Data Scraper 6 Websites 🇬🇧 (`jordan-byte/used-car-data-scraper-uk`) Actor

Scrape used car listings from 6 major UK marketplaces in a single run. Search by make and model across PistonHeads, Cinch, Exchange & Mart, Arnold Clark, Gumtree, and AutoTrader, with results unified into one structured dataset for price comparison and market research.

- **URL**: https://apify.com/jordan-byte/used-car-data-scraper-uk.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

**Search 6 UK used car marketplaces at once, from a single input.** Give it a make and model and it queries PistonHeads, Cinch, Exchange & Mart, Arnold Clark, Gumtree, and AutoTrader concurrently, returning one unified dataset instead of running six separate scrapers by hand.

### What does Used Car Data Scraper UK do?

Used Car Data Scraper UK searches multiple UK used car sites for the same make/model in a single run: [PistonHeads](https://www.pistonheads.com), [Cinch](https://www.cinch.co.uk), [Exchange & Mart](https://www.exchangeandmart.co.uk), [Arnold Clark](https://www.arnoldclark.com), [Gumtree](https://www.gumtree.com), and [AutoTrader](https://www.autotrader.co.uk) - the UK's largest marketplace. Every result lands in one dataset with a consistent set of fields and a `source` field showing which site it came from.

### Why use Used Car Data Scraper UK?

- **Cross-site price comparison** - see what the same make/model is going for across enthusiast, dealer-group, and marketplace sites in one table.
- **Broader coverage** - catch listings a single-site search would miss (private sellers on Gumtree, dealer stock on Arnold Clark, enthusiast cars on PistonHeads).
- **One input, one dataset** - no need to run and merge six separate Actors yourself.
- **Market research** - get a fuller picture of a model's UK market than any single site shows.

### How to use Used Car Data Scraper UK

1. Go to the **Input** tab.
2. Set **Make** (required) and **Model** (optional - leave empty to search the whole make).
3. Optionally pick specific **Sites to search** - by default this runs the 5 fast sites and skips AutoTrader (which needs a real browser and residential proxy, so it's slower).
4. Click **Start** and wait for the run to finish.
5. Open the **Dataset** tab - filter by `source` to see results from a specific site, or view everything together.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `make` | String | Car make to search for, e.g. `bmw` (required). |
| `model` | String | Car model to search for, e.g. `3-series`. Leave empty to search the whole make. |
| `sites` | Array | Which sites to search. Leave empty for the default fast set (everything except AutoTrader). |
| `maxItemsPerSite` | Integer | Maximum listings to collect from each site (default: 30). |
| `proxyConfiguration` | Object | Used only by AutoTrader (required there). Other sites don't need a proxy. |

Example input:

```json
{
    "make": "bmw",
    "model": "3-series",
    "sites": ["pistonheads", "cinch", "exchangeandmart", "arnoldclark", "gumtree", "autotrader"],
    "maxItemsPerSite": 30
}
```

### Output

Each listing is saved as one item, tagged with which site it came from:

```json
{
    "source": "cinch",
    "url": "https://www.cinch.co.uk/used-cars/bmw/3-series/details/842d15d9-fc01-4cd9-9c49-bbb2d7e52371",
    "title": "318i Sport 4dr",
    "image": "https://eu.cdn.autosonshow.tv/4828/15317/VA67HJX/e01_md.jpg",
    "make": "BMW",
    "model": "3 Series",
    "price": 9000,
    "currency": "GBP",
    "year": 2018,
    "mileage": 70621,
    "fuelType": "Petrol",
    "transmission": "Manual",
    "sellerName": null,
    "location": "Marshall Hyundai Hereford",
    "condition": "used"
}
```

#### Data table

| Field | Description |
| --- | --- |
| `source` | Which site this listing came from (`pistonheads`, `cinch`, `exchangeandmart`, `arnoldclark`, `gumtree`, or `autotrader`) |
| `url` | The listing's own page on that site |
| `title`, `make`, `model` | Vehicle identification |
| `price`, `currency` | Asking price (GBP) |
| `year`, `mileage`, `fuelType`, `transmission` | Core spec, where the site provides it |
| `sellerName`, `location` | Who's selling it and where, where shown |
| `condition` | Trade/private/used, as each site labels it |
| `image` | Listing photo URL |

Not every site returns every field - each site module only fills in what that site actually publishes; everything else is `null` rather than guessed.

### Pricing / Cost estimation

How much does it cost to run this Actor? Pricing depends on your Apify plan's compute unit rate, how many sites you select, and (if AutoTrader is included) residential proxy usage. The 5 default sites are all fast, no-browser requests; AutoTrader adds real browser time on top.

### Tips for better runs

- Leave AutoTrader out of `sites` for quick, cheap runs - add it back in when you specifically need its (much larger) inventory.
- Use exact make/model slugs matching each site's own URL format where possible (e.g. `3-series` not `3 series`) for the best match rate.
- Use the Apify **Schedule** feature to re-run this Actor periodically and track price changes across all six sites at once.

### FAQ

**Is this legal?** This Actor only collects publicly visible listing data. You are responsible for using the data in accordance with each site's Terms of Service and any applicable laws in your jurisdiction.

**Why did one site return 0 results?** Some sites only match on specific make/model slug formats - check that site's own URL structure if a search comes back empty. A single site failing (e.g. a transient block) doesn't stop the other sites' results from being returned. If you opt into AutoTrader (off by default), note it currently returns 0 results for every search - its make/model filter needs further work.

**Found a bug or have a feature request?** Please use the Issues tab on this Actor's page - feedback directly shapes future updates.

# Actor input Schema

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

Car make to search for, e.g. <code>bmw</code>.

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

Car model to search for, e.g. <code>3-series</code>. Leave empty to search the whole make.

## `sites` (type: `array`):

Which sites to search. Leave empty for the default fast set (everything except AutoTrader, which needs a real browser + residential proxy and is much slower).

## `maxItemsPerSite` (type: `integer`):

Maximum number of listings to collect from each site.

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

Used only by AutoTrader (required there - it blocks non-residential IPs). Other sites don't need a proxy.

## Actor input object example

```json
{
  "make": "bmw",
  "model": "3-series",
  "sites": [],
  "maxItemsPerSite": 30,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `listings` (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",
    "model": "3-series",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/used-car-data-scraper-uk").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",
    "model": "3-series",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/used-car-data-scraper-uk").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",
  "model": "3-series",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call jordan-byte/used-car-data-scraper-uk --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/used-car-data-scraper-uk"
        }
    }
}

```

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/ruff75b7E24DRX6BB/builds/ACEfWKtEdl2DvLNTj/openapi.json
