AutoTrader UK Scraper - UK Car Listings | $0.49/1K avatar

AutoTrader UK Scraper - UK Car Listings | $0.49/1K

Pricing

from $0.49 / 1,000 listings

Go to Apify Store
AutoTrader UK Scraper - UK Car Listings | $0.49/1K

AutoTrader UK Scraper - UK Car Listings | $0.49/1K

Scrape AutoTrader UK car listings: price, year, mileage, specs, dealer, location and photos. Search by make/model, postcode and radius or URL; monitor new ads. $0.49 per 1,000 cars.

Pricing

from $0.49 / 1,000 listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Features

Limited permissions

Share

AutoTrader UK Scraper — UK Car Listings, Prices & Dealers

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Auto Trader Limited or its affiliates. Data is read from publicly accessible car search results and car detail pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Contact-data controls: Dealer phone and email are omitted unless includeContacts is on. Enable it only when you have a lawful basis. The site often masks those values.

AutoTrader UK scraper for UK car listings — an AutoTrader API alternative that turns public search results and advert pages into a JSON or CSV dataset. Search by make, model, postcode, and the usual year, price, mileage, and radius filters, or paste a car-search or car-details URL. Each row has price, price indicator, mileage, year, plate, distance, seller type, and images. Turn on detail mode for fuel, gearbox, body, engine, colour, owners, specification, description, and history. Use it from Python, Node.js, cURL, or MCP.

Best for: UK used-car price research, dealer stock checks, and alerts for new adverts and price drops.

I need…Actor
UK car listingsAutoTrader UK Scraper ◄ you are here
Canada car listingsAutoTrader.ca Scraper
US car listingsCars.com Scraper · Cars & Bids
Europe car listingsAutoScout24 · Mobile.de
Used part pricesCar-Part Scraper

When to use this Actor

  • UK listing comps — Price, price indicator, mileage, year, and plate for a make and model around a postcode.
  • Dealer and private stock — sellerType is TRADE or PRIVATE, with dealer id and profile URL when the card has them.
  • Saved searches — Paste a car-search URL. Mapped query params become filters.
  • One advert — Paste a /car-details/<id> URL to fetch that advert only.
  • Watch a search — monitorMode emits new adverts and price drops after a baseline run.

When not to use this Actor

  • Logged-in features — No account, saved ads, or messaging.
  • Other AutoTrader countries — This Actor is the UK site. Canada is a separate Actor.
  • Private seller personal data — Phone and email are dealer fields, off unless you opt in, and often masked on the page.

Key features

  • Search or URL — Make, model, and postcode, plus price, year, mileage, and radius. Extra {filter, selected} objects go through unchanged.
  • Flat rows — One advert per dataset item, with GBP price as a number and the original formatted string.
  • Detail pages — Fuel, transmission, body, engine, doors, seats, colour, owners, specification, description, and history flags.
  • Images — Search and gallery URLs with a concrete size instead of the {resize} placeholder.
  • Monitor — Named key-value store. The first run seeds a baseline and writes no rows. Later runs keep new adverts and price drops.
  • Plain HTTP — No browser. No proxy by default. If the site blocks a request, the run switches once to Apify residential GB and continues.

Input

ParameterTypeDefaultDescription
startUrlsArray—/car-search?... URLs (params make, model, postcode, price-from, price-to, year-from, year-to, maximum-mileage, radius, fuel-type, transmission, body-type) or /car-details/<id> URLs.
makeString—Make, for example Toyota. A start URL value wins when both are set.
modelString—Model, for example Corolla.
postcodeStringSW1A 1AARequired by the site. Spaces are stripped before the request.
radiusMilesInteger—Radius in miles. Sent as distance.
yearFrom / yearToInteger—Registration years. Sent as min_year_manufactured and max_year_manufactured.
priceFrom / priceToInteger—Cash price band in GBP. Sent as min_price and max_price.
maxMileageInteger—Maximum miles. Sent as max_mileage.
extraFiltersArray—Extra {filter, selected} objects, including fuel_type, transmission, and body_type.
sortByStringrelevancerelevance, price_asc, price_desc, year_asc, or year_dsc. Any other value is sent as relevance. Promoted listings can appear before the sorted results.
maxItemsInteger100Row cap. 0 means no row cap.
maxPagesInteger20Page cap. The run also stops at the site page count.
scrapeDetailsBooleanfalseFetch each car-details page.
includeContactsBooleanfalseAdd dealer phone and email from the detail page.
monitorModeBooleanfalseAfter a baseline run, emit only new adverts and price drops.
monitorStoreNameStringautotrader-uk-monitorKey-value store for that baseline.
resetMonitorStateBooleanfalseClear the baseline before this run.
proxyConfigurationObjectNo proxyDirect connection. Residential GB is used only as an automatic fallback after a block.

Every search also sends price_search_type = total. Price, year, mileage, and radius are sent as min_price, max_price, min_year_manufactured, max_year_manufactured, max_mileage, and distance. A car-search URL maps price-from, price-to, year-from, year-to, maximum-mileage, radius, fuel-type, transmission, and body-type to those gateway names (fuel_type, transmission, body_type for the last three). Other gateway filters belong in extraFilters.

Example input

{
"make": "Toyota",
"model": "Corolla",
"postcode": "SW1A 1AA",
"radiusMiles": 50,
"yearFrom": 2018,
"priceTo": 20000,
"maxMileage": 60000,
"extraFilters": [
{"filter": "fuel_type", "selected": ["Petrol"]}
],
"maxItems": 50,
"maxPages": 3,
"scrapeDetails": true,
"includeContacts": false,
"sortBy": "relevance",
"proxyConfiguration": {
"useApifyProxy": false
}
}

Start-URL mode:

{
"startUrls": [
{
"url": "https://www.autotrader.co.uk/car-search?make=Toyota&model=Corolla&postcode=SW1A1AA&year-from=2018&radius=30"
}
],
"maxItems": 100,
"scrapeDetails": false
}

One advert:

{
"startUrls": [
{"url": "https://www.autotrader.co.uk/car-details/202610317492589"}
],
"scrapeDetails": true,
"includeContacts": false
}

Output

One dataset row per advert. Missing values are null. The run does not drop a row because a key is absent.

FieldTypeDescription
advertId / urlStringAdvert id and canonical car-details URL.
listingTypeStringGateway listing type, for example NATURAL_LISTING or GPT_LISTING.
title / subTitleStringTitle and derivative.
make / model / year / registrationMixedIdentity. registration is the plate text from the badge, such as 21 reg.
price / priceFormatted / currencyMixedNumeric GBP, display string, GBP.
priceIndicatorStringPI badge text (Lower price, Good price, …).
mileageMiles / distanceMiles / locationMixedMiles, distance from the postcode, town.
condition / sellerTypeStringCondition and TRADE or PRIVATE.
dealerName / dealerId / dealerUrl / dealerRatingMixedDealer identity. Search cards fill the name from the dealer-link slug (vast-motors-10048848 → Vast Motors) and the id from the trailing number. Detail data replaces those when the page has them. Address and postcode need detail mode.
imageUrls / imageCountArray / IntegerImage URLs and the advert's image count.
attentionGrabberStringSearch-card headline.
financeMonthlyNumberMonthly figure when the card has one.
searchPage / positionIntegerWhere the card sat in the results.
fuelType / transmission / bodyType / engineSizeStringDetail page.
doors / seats / colour / ownersMixedDetail page.
specification / keyFeaturesArrayGrouped spec and the headline spec rows.
description / historyString / ObjectSeller text and history flags (owners, keys, service history).
dealerAddress / dealerPostcodeStringDetail page.
dealerPhone / dealerEmailStringOnly when includeContacts is true.
changeType / previousPriceMixedMonitor mode: new or price_drop.
scrapedAtStringISO timestamp.
{
"advertId": "202610317492589",
"listingType": "NATURAL_LISTING",
"url": "https://www.autotrader.co.uk/car-details/202610317492589",
"title": "Toyota Corolla",
"subTitle": "1.8 VVT-h Icon Touring Sports CVT Euro 6 (s/s) 5dr",
"make": "Toyota",
"model": "Corolla",
"year": 2021,
"registration": "21 reg",
"price": 12495,
"priceFormatted": "£12,495",
"currency": "GBP",
"priceIndicator": "Lower price",
"mileageMiles": 30700,
"distanceMiles": 9,
"location": "The Hyde",
"condition": "used",
"sellerType": "TRADE",
"imageCount": 57,
"searchPage": 1,
"position": 1
}

A valid search with nothing to save ends as [OK] 0 listings. A non-JSON gateway body ends as [BLOCKED]. GraphQL errors end as [API]. Those failures are not reported as an empty success.

Use cases

Use caseWhat you get
UK price checkPrice, indicator, mileage, year, and plate around a postcode
Dealer stockTrade rows with dealer id and profile URL; detail adds address
Private vs tradesellerType on every search card
New stock and cutsMonitor mode for new adverts and price drops
AI / MCP pipelinesOne flat JSON row per advert

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/autotrader-uk-scraper').call({
make: 'Toyota',
model: 'Corolla',
postcode: 'SW1A 1AA',
radiusMiles: 50,
maxItems: 50,
scrapeDetails: true,
proxyConfiguration: { useApifyProxy: false },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/autotrader-uk-scraper").call(
run_input={
"make": "Toyota",
"model": "Corolla",
"postcode": "SW1A 1AA",
"yearFrom": 2018,
"maxItems": 50,
"scrapeDetails": True,
"proxyConfiguration": {"useApifyProxy": False},
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items[:5])

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~autotrader-uk-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"make": "Toyota",
"model": "Corolla",
"postcode": "SW1A 1AA",
"maxItems": 20,
"proxyConfiguration": {
"useApifyProxy": false
}
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/autotrader-uk-scraper.

Example prompts:

  • "Run AutoTrader UK Scraper for Toyota Corolla within 50 miles of SW1A 1AA, maxItems 40, and return title, price, mileage, year, and priceIndicator as JSON"
  • "Scrape AutoTrader UK car-details for advert 202610317492589 with scrapeDetails on and summarize fuel, gearbox, owners, and history"
  • "Chain AutoTrader UK Scraper then AutoScout24 to compare a used Corolla band in the UK and in Germany"

Suite next step

After UK stock, pull the same brief in Canada with AutoTrader.ca Scraper, then US listings with Cars.com Scraper. For Europe, run AutoScout24 or Mobile.de. For used part prices, run Car-Part Scraper.

FAQ

Is this an AutoTrader API?
There is no public read API for UK listing search. This Actor is an AutoTrader UK API alternative you can call from Python, Node.js, or MCP.

Why is there a postcode?
The search gateway expects one. The default is SW1A 1AA (sent without the space).

Does sort change the order?
sortBy accepts relevance (the default), price_asc, price_desc, year_asc, and year_dsc. Anything else is sent as relevance. Promoted listings can appear before the sorted results.

What does monitor mode save?
The first run writes a baseline and no dataset rows. Later runs push new adverts and price drops, then stop early once several known adverts appear in a row. resetMonitorState clears that baseline.

Cards or full specs?
Leave scrapeDetails off for search-card fields. Turn it on for fuel, gearbox, specification, description, history, and dealer address.

Where are phone and email?
Only on detail rows, and only when includeContacts is true. Otherwise those fields are absent.

⌂ 换网址