# Autotrader UK Search Scraper (`alexist/autotrader-cars-search-scraper`) Actor

Scrape AutoTrader.co.uk car search results effortlessly. Collect advert IDs, prices, dealer info, finance options, images, and 20+ structured fields per listing — perfect for automotive analysts, dealers, and price comparison tools.

- **URL**: https://apify.com/alexist/autotrader-cars-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.01 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## AutoTrader.co.uk Car Search Scraper: Extract UK Car Listings at Scale

---

### What Is AutoTrader.co.uk?

AutoTrader.co.uk is the UK's largest online automotive marketplace, listing hundreds of thousands of new and used vehicles from private sellers and dealerships. Whether you're tracking market prices, monitoring competitor stock, or building a vehicle database, manually collecting this data is impractical. The **AutoTrader Car Search Scraper** automates extraction from search result pages, delivering clean, structured records ready for analysis.

---

### Overview

The **AutoTrader.co.uk Scraper** processes car search result pages and returns detailed listing data for each vehicle advert. It is suited for:

- **Automotive dealers** monitoring competitor pricing and stock
- **Price comparison platforms** aggregating UK car market data
- **Market researchers** analysing used car trends by make, location, or seller type
- **Data engineers** building automotive datasets or feeds

The scraper handles pagination via direct URL input, supports bulk URL runs, and skips failed pages gracefully when configured to do so.

---

### Input Format

```json
{
  "urls": [
    "https://www.autotrader.co.uk/car-search?channel=cars&make=&postcode=E17DJ&page=7"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | `array` | One or more AutoTrader car search result URLs. You can add URLs one by one or use bulk edit. Example: filter by make, postcode, or page number via URL query parameters. |
| `ignore_url_failures` | `boolean` | If `true`, the scraper continues running even if some URLs fail. Recommended for bulk runs. Default: `true`. |
| `max_items_per_url` | `integer` | Maximum number of listings to collect per URL. Default: `20`. Set higher (e.g., `50`) to capture a full results page. |

> **Tip:** AutoTrader search URLs support parameters like `make`, `postcode`, `radius`, `price-to`, `year-from`, etc. Tune your search on-site first, then copy the URL.

***

### Output Format

**Sample output**

```json
{
  "advert_id": "202604171640363",
  "title": "Vauxhall Corsa",
  "sub_title": "1.2 16V SXi Euro 5 3dr",
  "attention_grabber": "LOW MILEAGE!",
  "price": "£749",
  "vehicle_location": "Enfield (12 miles)",
  "location_type": "STANDARD",
  "discount": null,
  "images": [
    "https://m.atcdn.co.uk/a/media/{resize}/ef9167d407e5422c9d22ec36ed400ebd.jpg",
    "https://m.atcdn.co.uk/a/media/{resize}/7a79a534f4524e7497c5eed086f01168.jpg",
    "https://m.atcdn.co.uk/a/media/{resize}/b6af7097c8254989a66541b34ba3beab.jpg",
    "https://m.atcdn.co.uk/a/media/{resize}/9c9b123726b94026bf2fcc39d23d4bef.jpg"
  ],
  "number_of_images": 41,
  "rrp": null,
  "seller_type": "TRADE",
  "dealer_link": "/dealers/middlesex/enfield/everyday-car-auctions-limited-10029380?channel=cars",
  "dealer_review": {
    "overall_review_rating": 4,
    "__typename": "BasicListingDealerReview"
  },
  "fpa_link": "/car-details/202604171640363?sort=relevance&twcs=true&searchId=5b4e84f0-7ae4-426e-a6cd-54e35c4a3bfc",
  "has_digital_retailing": false,
  "pre_reg": false,
  "finance": null,
  "badges": [
    {
      "type": "WRITE_OFF_CATEGORY",
      "display_text": "Cat D",
      "__typename": "Badge"
    },
    {
      "type": "MILEAGE",
      "display_text": "98,000 miles",
      "__typename": "Badge"
    },
    {
      "type": "REGISTERED_YEAR",
      "display_text": "2011 (61 reg)",
      "__typename": "Badge"
    }
  ],
  "position": 2,
  "can_save_advert": true,
  "tracking_context": {
    "retailer_context": {
      "id": "10029380",
      "__typename": "TrackingRetailerContext"
    },
    "advert_context": {
      "id": "202604171640363",
      "advertiser_id": "10029380",
      "advertiser_type": "TRADE",
      "make": "Vauxhall",
      "model": "Corsa",
      "vehicle_category": "car",
      "year": 2011,
      "condition": "used",
      "price": 749,
      "search_version_id": "1865042058208608257",
      "__typename": "TrackingAdvertContext"
    },
    "card": {
      "category": "ADVERT",
      "sub_category": "NATURAL_LISTING",
      "page_number": 6,
      "position": 2,
      "__typename": "TrackingCard"
    },
    "advert_card_features": {
      "condition": "USED",
      "num_images": 41,
      "has_finance": false,
      "price_indicator": "NOANALYSIS",
      "is_manufactured_approved": false,
      "is_franchise_approved": false,
      "__typename": "TrackingAdvertCardFeatures"
    },
    "distance": {
      "distance": 12,
      "distance_unit": null,
      "__typename": "TrackingDistance"
    },
    "__typename": "TrackingContext"
  }
}
```

Each vehicle advert returns a record with 22 fields:

#### Advert Identity

| Field | Meaning |
|---|---|
| `Advert ID` | Unique AutoTrader identifier for the listing |
| `Title` | Primary vehicle title (e.g., "Ford Focus 1.0 EcoBoost") |
| `Sub Title` | Secondary descriptor, typically trim level or variant |
| `Attention Grabber` | Promotional label set by the seller (e.g., "Great Value") |
| `Position` | Listing's position/rank on the search results page |

#### Pricing & Finance

| Field | Meaning |
|---|---|
| `Price` | Listed sale price in GBP |
| `RRP` | Recommended retail price, where available (useful for discount calculation) |
| `Discount` | Displayed discount amount or percentage off RRP |
| `Finance` | Monthly finance offer details if the seller has enabled financing |

#### Location & Seller

| Field | Meaning |
|---|---|
| `Vehicle Location` | Geographic location of the vehicle (city/postcode area) |
| `Location Type` | Classification of location (e.g., forecourt, home) |
| `Seller Type` | Whether the seller is a `dealer` or `private` |
| `Dealer Link` | URL to the dealer's AutoTrader profile page |
| `Dealer Review` | Dealer rating/review summary where available |
| `FPA Link` | Full-page advert link — direct URL to the individual listing |

#### Media

| Field | Meaning |
|---|---|
| `Images` | Array of image URLs for the vehicle |
| `Number Of Images` | Total count of images in the listing |

#### Listing Features & Flags

| Field | Meaning |
|---|---|
| `Has Digital Retailing` | Whether the dealer supports online purchase/reservation |
| `Pre Reg` | Flags pre-registered vehicles (nearly new, undriven) |
| `Badges` | Labels applied to the listing (e.g., "Reduced", "Hot Price") |
| `Can Save Advert` | Indicates if the listing supports the save/watchlist feature |
| `Tracking Context` | Metadata used for AutoTrader's internal analytics context |

***

### How to Use

1. **Build your search URL** — Go to AutoTrader.co.uk, apply your filters (make, model, postcode, price range, etc.), and copy the results page URL.
2. **Set pagination** — To scrape multiple pages, duplicate the URL and increment the `page=` parameter (e.g., `page=1`, `page=2`).
3. **Configure input** — Paste URLs into the `urls` array. Set `max_items_per_url` to match the number of results per page (typically 10–50).
4. **Run the scraper** — Start the actor and monitor progress in the run log.
5. **Export** — Download results as JSON, CSV, or Excel.

**Common issues:**

- Ensure URLs point to **search result pages**, not individual advert pages.
- If postcode-based results vary, try adjusting the `radius` parameter in the URL.
- Set `ignore_url_failures: true` when running many pages to avoid interruptions.

***

### Use Cases & Business Value

- **Price intelligence:** Track average asking prices by make, model, or region over time
- **Stock monitoring:** Watch dealer inventory changes across specific postcodes
- **Lead generation:** Identify private sellers or specific vehicle types matching your criteria
- **Market research:** Analyse badge frequency, finance availability, or pre-reg volumes by region

The scraper eliminates manual data collection, turning AutoTrader search pages into structured datasets that feed directly into spreadsheets, dashboards, or pricing models.

***

### Conclusion

The **AutoTrader.co.uk Car Search Scraper** gives automotive professionals and data teams fast, reliable access to UK vehicle listing data at scale. With 22 fields per record and flexible URL-based configuration, it's a practical tool for anyone needing real market data from the UK's leading car marketplace.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Cars list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.autotrader.co.uk/car-search?channel=cars&make=&postcode=E17DJ&page=7"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.autotrader.co.uk/car-search?channel=cars&make=&postcode=E17DJ&page=7"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/autotrader-cars-search-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 = {
    "urls": ["https://www.autotrader.co.uk/car-search?channel=cars&make=&postcode=E17DJ&page=7"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.autotrader.co.uk/car-search?channel=cars&make=&postcode=E17DJ&page=7"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call alexist/autotrader-cars-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=alexist/autotrader-cars-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Autotrader UK Search Scraper",
        "description": "Scrape AutoTrader.co.uk car search results effortlessly. Collect advert IDs, prices, dealer info, finance options, images, and 20+ structured fields per listing — perfect for automotive analysts, dealers, and price comparison tools.",
        "version": "0.0",
        "x-build-id": "Q6Vzbo1Jy135WRRDk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/alexist~autotrader-cars-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-alexist-autotrader-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/alexist~autotrader-cars-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-alexist-autotrader-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/alexist~autotrader-cars-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-alexist-autotrader-cars-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Cars list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Cars list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
