# Autotrader UK Scraper 🚗 (`shahidirfan/autotrader-uk-scraper`) Actor

Extract car listings from Autotrader UK at scale—prices, specs, dealer info, and VIN data. Perfect for market research, competitive pricing analysis, inventory monitoring, and automotive data collection.

- **URL**: https://apify.com/shahidirfan/autotrader-uk-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 19 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.80 / 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

### What does Autotrader UK Car Scraper do?

Autotrader UK Car Scraper collects structured car listing data from [Autotrader UK](https://www.autotrader.co.uk), one of the UK's largest automotive marketplaces. Give the Actor a public Autotrader car-search URL, including the filters you want, and it returns listings with prices, vehicle specifications, mileage, seller details, finance information, price ratings, photos, and direct listing URLs.

This scraper supports car price research, dealer stock monitoring, market analysis, fleet sourcing, and vehicle data collection. Search URLs can include filters such as make, model, postcode, price, year, mileage, fuel type, body type, transmission, seller type, colour, and keywords.

### Why use Autotrader UK Car Scraper?

- **Structured vehicle datasets** - Turn Autotrader search results into records that are easier to compare, filter, enrich, and export.
- **Search URL support** - Build a search on Autotrader UK, apply the filters you need, then paste the resulting URL into the Actor.
- **Useful pricing context** - Collect listed price, RRP, discount, finance payment details, and Autotrader price ratings when available.
- **Vehicle and seller research** - Compare make, model, year, mileage, location, seller type, dealer rating, and specification details.
- **Photo-ready results** - Receive the primary image and the full set of listing image URLs.
- **Repeatable collection** - Run on demand or schedule recurring runs through Apify for stock and price monitoring.
- **Flexible exports** - Download JSON, CSV, Excel, or XML, or connect the dataset through the Apify API.

### What data can you extract from Autotrader UK?

Each dataset item represents one car listing. Fields are included when Autotrader UK provides the corresponding information.

| Field | Type | Description |
|-------|------|-------------|
| `title` | String | Car listing title, such as make, model, and trim. |
| `price` | String | Current advertised price, for example `£15,995`. |
| `year` | String | Registration year or registration display text. |
| `mileage` | String | Vehicle mileage. |
| `fuelType` | String | Fuel type, such as petrol, diesel, hybrid, or electric. |
| `transmission` | String | Transmission type, such as manual or automatic. |
| `priceRating` | String | Autotrader price rating: `great`, `good`, `fair`, or `low`. |
| `location` | String | Seller or vehicle location. |
| `distance` | String | Distance from the postcode in the search URL when available. |
| `sellerType` | String | Seller category, such as `DEALER` or `PRIVATE`. |
| `dealerRating` | Number | Overall dealer review rating when available. |
| `url` | String | Full URL of the Autotrader listing. |

### How to scrape Autotrader UK car listings

1. Open Autotrader UK and create a car search with the make, model, location, price, age, mileage, or other filters you need.
2. Copy the complete public URL from the browser address bar.
3. Open this Actor on Apify and paste the URL into `startUrl`.
4. Set `results_wanted` to the maximum number of listings you want to save.
5. Set `max_pages` to the maximum number of result pages the run may process.
6. Run the Actor and review the dataset preview.
7. Download the results or connect the dataset to an API, webhook, spreadsheet, or automation.

Each result page usually contains about 28 listings, although the number can vary. The Actor stops at `results_wanted`, `max_pages`, or the end of the search results.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No\* | None | Public Autotrader UK car-search URL. Filters in the URL define the search. A relative path or query string is also normalized to an Autotrader search URL. |
| `results_wanted` | Integer | No | `20` | Maximum number of car listings to save. |
| `max_pages` | Integer | No | `5` | Maximum number of result pages to process. A page usually contains about 28 listings. |
| `proxyConfiguration` | Object | No | `{"useApifyProxy": false}` | Optional Apify Proxy configuration for larger or repeated runs. Residential proxies may help when collecting larger datasets. |

\* A URL is required for a normal run. The project also contains a prefilled `INPUT.json` fallback, but Apify Console users should provide `startUrl` explicitly.

The URL should point to a public Autotrader UK car search. Common URL filters include `make`, `model`, `postcode`, `price-from`, `price-to`, `year-from`, `year-to`, `minimum-mileage`, `maximum-mileage`, `fuel-type`, `body-type`, `seller-type`, `transmission`, `colour`, and `keywords`.

### Output Data

| Field | Type | Description |
|-------|------|-------------|
| `advertId` | String | Unique listing ID used to identify the advert. |
| `title` | String | Main vehicle listing title. |
| `specification` | String | Vehicle specification summary. |
| `attentionGrabber` | String | Listing tagline. |
| `price` | String | Advertised vehicle price. |
| `rrp` | String | Recommended retail price, if available. |
| `discount` | String | Advertised discount, if available. |
| `monthlyPrice` | String | Monthly finance amount, if available. |
| `initialPayment` | String | Initial finance payment, if available. |
| `termMonths` | Integer | Finance term, if available. |
| `year` | String | Registration year. |
| `mileage` | String | Vehicle mileage. |
| `fuelType` | String | Fuel type. |
| `transmission` | String | Transmission type. |
| `engineSize` | String | Engine size. |
| `priceRating` | String | Autotrader price assessment. |
| `location` | String | Listing location. |
| `locationType` | String | Location type. |
| `distance` | String | Distance from the searched postcode. |
| `sellerType` | String | Dealer or private seller category. |
| `dealerRating` | Number | Dealer review score, if available. |
| `url` | String | Direct listing URL. |
| `image` | String | Primary photo URL. |
| `images` | Array | All photo URLs. |
| `numberOfImages` | Integer | Number of listing photos. |
| `hasWriteOff` | Boolean | Whether a write-off marker is present. |
| `writeOffCategory` | String | Write-off category, if available. |
| `tags` | Array | All available badges and markers. |

Fields that Autotrader UK does not publish for a particular listing are omitted from that dataset item.

### Usage Examples

#### Basic search by URL

Collect up to 20 BMW listings from a saved Autotrader search URL:

```json
{
  "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&homeDeliveryAdverts=exclude&make=BMW&postcode=SW1A%201AA&year-to=2026",
  "results_wanted": 20,
  "max_pages": 5
}
```

#### Larger collection from a filtered search

Increase both limits when you need a larger dataset from a search covering a specific model and year range:

```json
{
  "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&make=Toyota&model=Yaris&postcode=M1%201AE&year-from=2019&year-to=2024&sort=price-asc",
  "results_wanted": 100,
  "max_pages": 10
}
```

#### Search by keyword and price range

Use Autotrader URL parameters to collect vehicles matching a keyword and a maximum price:

```json
{
  "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&keywords=electric&postcode=E1%206AN&price-to=30000&fuel-type=electric",
  "results_wanted": 40,
  "max_pages": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

### Sample Output

The following is one representative dataset item. Some values are omitted when the source listing does not provide them.

```json
{
  "advertId": "202503221234567",
  "title": "BMW 3 Series 2.0 320d M Sport",
  "specification": "2.0 320d M Sport Auto Euro 6 (s/s) 4dr",
  "attentionGrabber": "Full BMW Service History, Low Mileage",
  "price": "£18,495",
  "rrp": "£19,995",
  "discount": "£1,500",
  "monthlyPrice": "£299",
  "initialPayment": "£2,000",
  "termMonths": 48,
  "year": "2021 (70 reg)",
  "mileage": "34,000 miles",
  "fuelType": "Diesel",
  "transmission": "Automatic",
  "engineSize": "2.0L",
  "priceRating": "good",
  "location": "London",
  "locationType": "Dealer",
  "distance": "5 miles",
  "sellerType": "DEALER",
  "dealerRating": 4.8,
  "url": "https://www.autotrader.co.uk/car-details/202503221234567",
  "image": "https://m.atcdn.co.uk/a/media/800x600/12345abc.jpg",
  "images": [
    "https://m.atcdn.co.uk/a/media/800x600/12345abc.jpg",
    "https://m.atcdn.co.uk/a/media/800x600/12345def.jpg"
  ],
  "numberOfImages": 12,
  "tags": [
    "2021 (70 reg)",
    "Saloon",
    "34,000 miles",
    "2.0L",
    "Automatic",
    "Diesel"
  ]
}
```

### Tips for Best Results

- **Use a complete search URL** - Apply filters on Autotrader UK first, then copy the full URL into `startUrl`.
- **Include a postcode** - A postcode lets Autotrader calculate distance and supports location-based research.
- **Start with a small run** - Test the search with a low `results_wanted` and `max_pages` value before collecting a large dataset.
- **Use price ratings carefully** - Combine Autotrader's `priceRating` with mileage, specification, location, and seller information.
- **Review missing fields** - Finance, dealer ratings, write-off markers, and other values depend on what the individual listing publishes.
- **Use proxy settings for repeated runs** - Apify Proxy can help reduce interruptions during larger or frequent collections.
- **Expect source changes** - Public search pages and listing fields can change. Report persistent issues through the Actor's Issues tab.

### Integrations and Exports

- **Apify Dataset** - Inspect results in the Console and download JSON, CSV, Excel, XML, or other supported formats.
- **Apify API** - Retrieve dataset items programmatically for pricing tools, dashboards, research systems, or data pipelines.
- **Webhooks** - Notify another service when an Actor run completes.
- **Apify Scheduler** - Run recurring searches to monitor dealer stock, price changes, or market availability.
- **Google Sheets** - Send results to a spreadsheet for review and comparison.
- **Make and Zapier** - Pass completed dataset results into downstream no-code workflows.

### Frequently Asked Questions

#### Can I scrape any Autotrader UK car search?

Yes. Use a public `autotrader.co.uk/car-search` URL and the Actor will use the filters included in that URL. Make sure the URL is copied after the search filters have been applied.

#### Do I need to enter make, model, postcode, and price as separate inputs?

No. The supported workflow uses one `startUrl` containing the Autotrader search filters. The Actor's input form does not expose separate make, model, price, or year fields.

#### How many listings can I collect?

The run is limited by `results_wanted` and `max_pages`. Use `results_wanted` for the desired number of saved listings and `max_pages` to control the maximum number of result pages processed.

#### Can I collect private sellers and dealers?

Yes, when the search results include them. The `sellerType` field identifies the seller category when Autotrader provides it, and the search URL can include seller filters.

#### Can I export Autotrader data to CSV or Excel?

Yes. Download the completed Apify Dataset as CSV, Excel, JSON, XML, or another supported format, or access it through the Apify API.

#### Why is a field missing from one listing?

Fields are omitted when the source listing does not provide the relevant information. For example, finance details and dealer ratings are not available for every listing.

#### Can I run this Actor on a schedule?

Yes. Create an Apify Schedule for hourly, daily, weekly, or custom recurring runs, then compare datasets over time.

#### Is scraping Autotrader UK legal?

You are responsible for complying with Autotrader UK's terms, applicable laws, privacy requirements, and any restrictions on storing or using listing data. Use this Actor for legitimate research and automation involving publicly available pages, and obtain permission before redistributing data or using it for purposes that require additional rights.

### Related Actors

- [Autotrader Scraper](https://apify.com/shahidirfan/autotrader-scraper) - Collect vehicle listings, specifications, prices, mileage, and dealer information from Autotrader.
- [Cinch.co.uk Vehicle Scraper](https://apify.com/shahidirfan/cinch-co-uk-vehicle-scraper) - Collect used vehicle inventory and finance details from Cinch.co.uk for UK market comparisons.
- [Cars.com Scraper](https://apify.com/shahidirfan/cars-com-scraper) - Extract vehicle listings, specifications, pricing, and dealer information from Cars.com.

### Support

For bugs, field requests, or questions about a run, use the Issues tab on the Actor page. Include the input URL, run ID, and a description of the unexpected result when reporting a problem.

### Legal Notice

This Actor is intended for responsible collection of publicly available Autotrader UK listing information. Users are responsible for complying with [Autotrader UK's terms and conditions](https://www.autotrader.co.uk/content/terms/terms-conditions), applicable laws, privacy rules, and any requirements governing commercial use or redistribution of collected data.

# Actor input Schema

## `startUrl` (type: `string`):

Paste a full Autotrader UK car-search URL. If provided, all URL filters (make, model, year, postcode, etc.) are extracted automatically and individual parameter fields below are ignored.

## `results_wanted` (type: `integer`):

Maximum number of car listings to collect.

## `max_pages` (type: `integer`):

Maximum number of result pages to scrape. Each page contains ~28 listings.

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

Use Apify Proxy for reliable scraping. Residential proxies recommended for best results.

## Actor input object example

```json
{
  "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&homeDeliveryAdverts=exclude&make=BMW&postcode=SW1A%201AA&year-to=2026",
  "results_wanted": 20,
  "max_pages": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&homeDeliveryAdverts=exclude&make=BMW&postcode=SW1A%201AA&year-to=2026",
    "results_wanted": 20,
    "max_pages": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/autotrader-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 = {
    "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&homeDeliveryAdverts=exclude&make=BMW&postcode=SW1A%201AA&year-to=2026",
    "results_wanted": 20,
    "max_pages": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/autotrader-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 '{
  "startUrl": "https://www.autotrader.co.uk/car-search?advertising-location=at_cars&channel=cars&homeDeliveryAdverts=exclude&make=BMW&postcode=SW1A%201AA&year-to=2026",
  "results_wanted": 20,
  "max_pages": 5
}' |
apify call shahidirfan/autotrader-uk-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/autotrader-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/SR0TckoJL7uXhDalM/builds/5y3TvXKjYOKfr5SXM/openapi.json
