AutoTrader UK Scraper - UK Car Listings | $0.49/1K
Pricing
from $0.49 / 1,000 listings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Features
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
includeContactsis 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 listings | AutoTrader UK Scraper ◄ you are here |
| Canada car listings | AutoTrader.ca Scraper |
| US car listings | Cars.com Scraper · Cars & Bids |
| Europe car listings | AutoScout24 · Mobile.de |
| Used part prices | Car-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 —
sellerTypeis 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 —
monitorModeemits 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
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | Array | — | /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. |
make | String | — | Make, for example Toyota. A start URL value wins when both are set. |
model | String | — | Model, for example Corolla. |
postcode | String | SW1A 1AA | Required by the site. Spaces are stripped before the request. |
radiusMiles | Integer | — | Radius in miles. Sent as distance. |
yearFrom / yearTo | Integer | — | Registration years. Sent as min_year_manufactured and max_year_manufactured. |
priceFrom / priceTo | Integer | — | Cash price band in GBP. Sent as min_price and max_price. |
maxMileage | Integer | — | Maximum miles. Sent as max_mileage. |
extraFilters | Array | — | Extra {filter, selected} objects, including fuel_type, transmission, and body_type. |
sortBy | String | relevance | relevance, price_asc, price_desc, year_asc, or year_dsc. Any other value is sent as relevance. Promoted listings can appear before the sorted results. |
maxItems | Integer | 100 | Row cap. 0 means no row cap. |
maxPages | Integer | 20 | Page cap. The run also stops at the site page count. |
scrapeDetails | Boolean | false | Fetch each car-details page. |
includeContacts | Boolean | false | Add dealer phone and email from the detail page. |
monitorMode | Boolean | false | After a baseline run, emit only new adverts and price drops. |
monitorStoreName | String | autotrader-uk-monitor | Key-value store for that baseline. |
resetMonitorState | Boolean | false | Clear the baseline before this run. |
proxyConfiguration | Object | No proxy | Direct 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.
| Field | Type | Description |
|---|---|---|
advertId / url | String | Advert id and canonical car-details URL. |
listingType | String | Gateway listing type, for example NATURAL_LISTING or GPT_LISTING. |
title / subTitle | String | Title and derivative. |
make / model / year / registration | Mixed | Identity. registration is the plate text from the badge, such as 21 reg. |
price / priceFormatted / currency | Mixed | Numeric GBP, display string, GBP. |
priceIndicator | String | PI badge text (Lower price, Good price, …). |
mileageMiles / distanceMiles / location | Mixed | Miles, distance from the postcode, town. |
condition / sellerType | String | Condition and TRADE or PRIVATE. |
dealerName / dealerId / dealerUrl / dealerRating | Mixed | Dealer 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 / imageCount | Array / Integer | Image URLs and the advert's image count. |
attentionGrabber | String | Search-card headline. |
financeMonthly | Number | Monthly figure when the card has one. |
searchPage / position | Integer | Where the card sat in the results. |
fuelType / transmission / bodyType / engineSize | String | Detail page. |
doors / seats / colour / owners | Mixed | Detail page. |
specification / keyFeatures | Array | Grouped spec and the headline spec rows. |
description / history | String / Object | Seller text and history flags (owners, keys, service history). |
dealerAddress / dealerPostcode | String | Detail page. |
dealerPhone / dealerEmail | String | Only when includeContacts is true. |
changeType / previousPrice | Mixed | Monitor mode: new or price_drop. |
scrapedAt | String | ISO 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 case | What you get |
|---|---|
| UK price check | Price, indicator, mileage, year, and plate around a postcode |
| Dealer stock | Trade rows with dealer id and profile URL; detail adds address |
| Private vs trade | sellerType on every search card |
| New stock and cuts | Monitor mode for new adverts and price drops |
| AI / MCP pipelines | One 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 ApifyClientclient = 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().itemsprint(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.
Related Actors
- AutoTrader.ca Scraper — Canada car listings
- Cars.com Scraper — US car listings
- Cars & Bids — US enthusiast auctions
- AutoScout24 — Europe used cars
- Mobile.de — Germany vehicle listings
- Car-Part Scraper — Used part prices