PistonHeads Scraper — UK Used Car Listings & Prices avatar

PistonHeads Scraper — UK Used Car Listings & Prices

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
PistonHeads Scraper — UK Used Car Listings & Prices

PistonHeads Scraper — UK Used Car Listings & Prices

Scrape used-car listings from PistonHeads (pistonheads.com), the UK's enthusiast car marketplace (owned by CarGurus). Search by make, model, postcode and seller type. Extract prices, mileage, year, spec (engine, fuel, transmission), seller type and photos. No login or cookies required.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

PistonHeads Scraper

Scrape used-car listings from pistonheads.com — the UK's long-running enthusiast car marketplace (owned by CarGurus). Search by make, model, postcode and seller type, and get structured JSON with prices, mileage, year, engine spec (size, power, fuel, transmission), seller type and photos.

No login, no cookies, no browser automation. The actor talks directly to PistonHeads' own GraphQL search API, so runs are fast and results are clean.

Why use this actor

  • Enthusiast/performance market research — PistonHeads skews toward performance and classic cars (M cars, 911s, classic Porsches) compared to mass-market sites, useful for tracking a different slice of the used-car market.
  • Price research — track asking prices for a specific make/model across the UK.
  • Market monitoring — schedule runs to catch new listings for a saved search.
  • Lead generation — filter by private sellers or trade sellers within a radius of any UK postcode.
  • Data science — build depreciation curves and spec-vs-price datasets from year, mileage, engine power and price.

Input

FieldTypeDefaultDescription
makestringBMWCar make, matched against PistonHeads' own make list (e.g. Porsche, Ford, Tesla).
modelstringOptional model filter (e.g. 911, M3, Fiesta). Requires make.
postcodestringUK postcode to centre the search on. Leave empty to search nationwide.
distanceMilesinteger50Search radius in miles from postcode. Only used when a postcode is set.
sellerTypestringallOne of all, Private, Trade.
maxResultsinteger40Maximum number of listings to return. Each API page carries 20 listings.
proxyConfigurationobjectautomaticPistonHeads has no anti-bot protection on its search API — the default automatic Apify proxy is enough, no residential proxy needed.

Example input

{
"make": "Porsche",
"model": "911",
"postcode": "SW1A 1AA",
"distanceMiles": 100,
"sellerType": "Trade",
"maxResults": 50,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Output

Each dataset item is one car listing:

FieldExampleDescription
listingTitle2001 BMW 5 SERIES (E39) M5Listing headline
make / modelBMW / M5Structured make and model
year2001Registration year
price38000Numeric price in GBP (null when price is on application)
priceText£38,000Price as displayed (or POA)
isPriceOnApplicationfalseWhether the seller hides the price
mileage70814Numeric mileage in miles
bodyTypeSaloonBody style
colourBlackExterior colour
fuelTypePetrolFuel type
transmissionTypeManualTransmission type
engineSizeCc4900Engine displacement in cc
enginePowerBhp394Engine power in bhp
locationLinlithgow, United KingdomSeller location
distanceMiles28Distance from search postcode, when set
sellerType / sellerNamePrivate / Private SellerSeller type and name
imageUrl / imageUrlshttps://img.pistonheads.com/Fullsize/...Listing photos
urlhttps://www.pistonheads.com/buy/listing/20895444Direct listing URL
scrapedAt2026-08-13T14:15:14.970ZCollection timestamp

Example output

{
"listingTitle": "2001 BMW 5 SERIES (E39) M5",
"make": "BMW",
"model": "M5",
"year": 2001,
"price": 38000,
"priceText": "£38,000",
"isPriceOnApplication": false,
"currency": "GBP",
"mileage": 70814,
"mileageText": "70,814 miles",
"bodyType": "Saloon",
"colour": "Black",
"fuelType": "Petrol",
"transmissionType": "Manual",
"engineSizeCc": 4900,
"enginePowerBhp": 394,
"location": "Linlithgow, United Kingdom",
"distanceMiles": null,
"sellerType": "Private",
"sellerName": "Private Seller",
"isOnlineRetailer": false,
"isFeatured": false,
"isVatOmitted": false,
"imageUrl": "https://img.pistonheads.com/Fullsize/bmw/m5/m5/bmw-m5-m5-S4972961-1.jpg",
"numberOfImages": 4,
"advertId": "20895444",
"url": "https://www.pistonheads.com/buy/listing/20895444",
"scrapedAt": "2026-08-13T14:15:14.970Z"
}

How to scrape Pistonheads data

  1. Open the actor and press Try for free (or run it via the Apify API).
  2. Set make (and optionally model) to the car you want to research.
  3. Optionally set postcode and distanceMiles to search a specific area, or leave both empty to search nationwide.
  4. Optionally set sellerType to Private or Trade.
  5. Set maxResults and run it. Results land in the dataset as clean JSON, downloadable as JSON, CSV or Excel.

To scrape PistonHeads data on a schedule, create an Apify Schedule that runs this actor daily — useful for tracking new stock on a saved search.

Cost estimate

One API request returns 20 listings plus one small facet lookup per run, so runs stay cheap: roughly 2-3 requests per 40 cars. A 500-listing run typically completes in under a minute, with no residential proxy overhead.

Usage cost only settles after the run reports SUCCEEDED — reading the dataset mid-run will undercount what you'll actually be charged.

Limitations

  • PistonHeads lists UK vehicles only.
  • The search API exposes listing-grid data. Full description text and the complete detail-page photo gallery are not included in this version.
  • Price/mileage range filters are not exposed by PistonHeads' search API in a way this actor can pass through — filter the dataset after scraping if you need a price band.

This actor scrapes publicly visible listing data only. It collects no personal data and requires no login. Users are responsible for complying with PistonHeads' terms of service and applicable law when using scraped data.