# Car & Classic Scraper: Sold Prices & Listings (`getascraper/carandclassic-scraper`) Actor

Scrape Car & Classic listings across the full 47,000 vehicle catalogue: price, mileage, engine, seller, and real photo galleries. Also pulls 64,000 sold auction results with the final hammer price for comparable-sales research. No login needed. From $2.64 per 1,000 results.

- **URL**: https://apify.com/getascraper/carandclassic-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.98 / 1,000 vehicle records

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## 🏁 Car & Classic Scraper: Sold Prices & Listings

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:100%;padding:24px 28px;background:#F0FDF4;border:1px solid #BBF7D0;border-top:4px solid #166534;border-radius:12px">
<span style="font-size:23px;font-weight:800;line-height:1.3;color:#1C1917">Asking prices are opinions. Sold prices are evidence.</span><br>
<span style="font-size:15px;line-height:1.6;color:#57534E">Pull live Car & Classic listings and completed auction results with the final hammer price, the bid count, and whether the reserve was met. Build comparables you can actually defend.</span>
</td>
</tr>
</tbody>
</table>

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #BBF7D0;border-right:none;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532D">🔨 Sold prices, not guesses</span><br>
<span style="font-size:12px;color:#57534E">Final hammer price, bid count, and reserve status on every car that sold.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #BBF7D0;border-right:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532D">📸 The whole photo set</span><br>
<span style="font-size:12px;color:#57534E">Every image link from the gallery, not a photo count you cannot open.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #BBF7D0;border-right:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532D">⏰ Catch lots before they close</span><br>
<span style="font-size:12px;color:#57534E">Auction start and end times, so you can watch live lots and move in time.</span>
</td>
<td style="width:25%;padding:14px 12px;background:#FFFFFF;border:1px solid #BBF7D0;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#14532D">📝 Condition in the seller's words</span><br>
<span style="font-size:12px;color:#57534E">The full listing write-up: service history, provenance, and known faults.</span>
</td>
</tr>
</tbody>
</table>

Car & Classic Scraper collects public vehicle listings from Car & Classic, one of Europe's largest classic and collector car marketplaces. Search the catalogue by make, model, year, price, mileage, or seller type, or paste specific listing links straight from your browser. You get price, full specification, location, seller detail, and photo galleries as clean structured data. Most usefully, you can pull **completed auctions with the price they actually sold for**, which is the evidence you need to value a car rather than guess at it.

### 🔍 What does Car & Classic Scraper do?

It turns Car & Classic listings into a spreadsheet or a data feed. Point it at a search, or at individual cars, and it returns one clean row per vehicle.

It covers three things competing tools leave out:

- **Sold auction results.** Filter to ended auctions and every car that sold carries the final hammer price, how many bids it drew, and whether the reserve was met. This is the comparable-sales evidence that asking prices cannot give you.
- **Real photo galleries.** You get the actual image links, so you can review condition or pull images into your own listing, valuation pack, or CRM.
- **The full listing description.** Service history, restoration notes, ownership history, and declared faults, in the seller's own words.

Run it once for a snapshot, or put it on a schedule to track a model's market week by week.

### 💡 Why use it?

**"I need to price a car for my forecourt this week."**
You are pricing a 1973 911 and the live listings all sit at hopeful money. Pull the last completed auctions for that model and you can see what buyers actually paid, with bid counts showing how much real competition there was.

**"I track four models and I don't want to miss a lot."**
Filter to live and upcoming auctions and you get end times and current bid counts on every car. Schedule it daily and you know which lots are running hot before they close, not after.

**"My valuation has to survive a challenge."**
You write agreed-value policies or investment notes. Sold prices, mileage, condition text, and photographs land in one row per car, so your number comes with its evidence attached rather than a screenshot and a memory.

### 🚀 How to use it

<table width="100%" style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed;margin:0">
<tbody style="display:table;width:100%;min-width:100%;border-collapse:collapse;table-layout:fixed">
<tr style="width:100%">
<td style="width:33.333%;padding:16px 14px;background:#F0FDF4;border:1px solid #BBF7D0;border-right:none;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:13px;font-weight:800;color:#166534;letter-spacing:0.5px">STEP 1</span><br>
<span style="font-size:15px;font-weight:800;color:#14532D">Pick your cars</span><br>
<span style="font-size:12px;color:#57534E">Filter by make, model, year, price, or mileage. Or paste listing links straight from the site.</span>
</td>
<td style="width:33.333%;padding:16px 14px;background:#F0FDF4;border:1px solid #BBF7D0;border-right:none;vertical-align:top">
<span style="font-size:13px;font-weight:800;color:#166534;letter-spacing:0.5px">STEP 2</span><br>
<span style="font-size:15px;font-weight:800;color:#14532D">Choose live, upcoming, or ended</span><br>
<span style="font-size:12px;color:#57534E">Switch to ended lots when you want sold price evidence instead of current stock.</span>
</td>
<td style="width:33.333%;padding:16px 14px;background:#F0FDF4;border:1px solid #BBF7D0;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:13px;font-weight:800;color:#166534;letter-spacing:0.5px">STEP 3</span><br>
<span style="font-size:15px;font-weight:800;color:#14532D">Export and price with confidence</span><br>
<span style="font-size:12px;color:#57534E">Download as Excel, CSV, or JSON, or send it straight into your own sheet or tool.</span>
</td>
</tr>
</tbody>
</table>

1. Click **Try for free** and open the input form.
2. Leave the mode on **Search catalogue**, then set a make such as `porsche` and a model such as `911`.
3. To get sold evidence, set **Auction state** to **Ended**.
4. Set **Max items** to how many cars you want back.
5. Click **Start**, then open the **Output** tab to preview and download your data.

Turn on **Fetch full detail per listing** when you also want the description, registration plate, and seller contact detail on every row.

### ⚙️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| `mode` | enum | No | `search` to filter the catalogue, or `listing` to fetch specific links. |
| `listingUrls` | array of URLs | No | Listing mode only. Car & Classic links to fetch in full detail. |
| `make` | string | No | Make slug, for example `porsche`, `jaguar`, `mercedes`. |
| `model` | string | No | Model slug within that make, for example `911`. |
| `vehicleType` | enum | No | Cars, motorcycles, or commercial vehicles. |
| `auctionState` | array of enums | No | Any of live, upcoming, or ended. Ended returns sold prices. |
| `priceMin` | integer | No | Lowest price to include. Leave at 0 for no limit. |
| `priceMax` | integer | No | Highest price to include. Leave at 0 for no limit. |
| `yearMin` | integer | No | Earliest model year to include. |
| `yearMax` | integer | No | Latest model year to include. |
| `mileageMax` | integer | No | Highest odometer reading to include. |
| `transmissionType` | enum | No | Manual or automatic. |
| `steeringPosition` | enum | No | Left-hand drive or right-hand drive. |
| `sellerType` | enum | No | Dealer or private seller. |
| `scrapeDetails` | boolean | No | Also fetch each car's full description, plate, and seller detail. |
| `maxItems` | integer | No | Maximum number of vehicles to return. |
| `proxyConfiguration` | object | No | Connection settings. The default works and needs no changes. |

### 📊 Output

Each vehicle comes back as one row. You can download the dataset as JSON, CSV, Excel, or HTML.

```json
{
  "rowType": "listing",
  "id": 79435,
  "title": "1980 Porsche 911SC Targa Manual RHD",
  "url": "https://www.carandclassic.com/auctions/1980-porsche-911sc-targa-manual-rhd-nAvxk4",
  "listingType": "auction",
  "make": "Porsche",
  "year": "1980",
  "price": 32000,
  "currency": "GBP",
  "mileage": 110450,
  "mileageUnit": "mi",
  "engineSizeCc": "3000",
  "fuelType": "petrol",
  "transmission": "manual",
  "steeringPosition": "rhd",
  "colour": "brown",
  "countryCode": "GB",
  "town": "Portlethen",
  "isSold": false,
  "isAuction": true,
  "auctionStartsAt": "2026-08-23T09:00:00+00:00",
  "auctionEndsAt": "2026-08-30T19:40:00+00:00",
  "bidCount": 6,
  "reserveStatus": "reserve-not-met",
  "imageCount": 191,
  "imageUrls": ["https://assets.carandclassic.com/uploads/new/34192951/dsc03276.jpg"]
}
```

### 📋 Data table

| Field | Type | Description |
|---|---|---|
| `title` | string | Listing headline, usually year, make, and model. |
| `url` | string | Direct link back to the car on Car & Classic. |
| `listingType` | string | Whether the car is an auction lot or a classified advert. |
| `price` | number | Asking price, or the current bid on a live auction. |
| `soldPrice` | number | Final price the car sold for, on completed auctions. |
| `currency` | string | Currency of the price. Both GBP and EUR appear. |
| `isSold` | boolean | Whether the car has sold. |
| `bidCount` | number | How many bids the lot attracted. |
| `reserveStatus` | string | Whether the reserve was met, not met, or there was none. |
| `auctionStartsAt` | string | When bidding opened. |
| `auctionEndsAt` | string | When bidding closes or closed. |
| `make` | string | Manufacturer. |
| `model` | string | Model name, when the seller supplied one. |
| `year` | string | Model year. |
| `mileage` | number | Odometer reading. |
| `mileageUnit` | string | Miles or kilometres. Check this, both appear. |
| `engineSize` | string | Engine capacity. |
| `fuelType` | string | Petrol, diesel, and so on. |
| `transmission` | string | Gearbox type and speed count. |
| `steeringPosition` | string | Left-hand or right-hand drive. |
| `colour` | string | Exterior colour. |
| `description` | string | Full listing write-up, with detail mode on. |
| `registrationPlate` | string | Registration mark, with detail mode on. |
| `sellerType` | string | Dealer or private. |
| `sellerBusinessName` | string | Dealer name, on dealer listings. |
| `sellerPhone` | string | Dealer contact number, where published. |
| `sellerWebsite` | string | Dealer website, where published. |
| `countryCode` | string | Country the car is located in. |
| `region` | string | Region or county. |
| `town` | string | Town or city. |
| `imageUrl` | string | Lead photograph. |
| `imageUrls` | array | Every photograph link from the gallery. |
| `imageCount` | number | How many photographs the listing carries. |
| `guidePriceLow` | number | Lower guide price, on auction lots. |
| `guidePriceHigh` | number | Upper guide price, on auction lots. |

### 💰 Pricing

This Actor runs on pay per result. You are charged for the vehicle records you actually receive, plus a small fee each time a browsing session is opened to reach the site. A run that returns nothing costs you almost nothing, and there is no subscription or monthly minimum.

Keep costs down by setting **Max items** to what you need, and leaving **Fetch full detail per listing** off unless you want the description and seller contact detail.

### ⭐ Enjoying Car & Classic Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0FDF4;border:1px solid #F0FDF4;border-left:5px solid #166534;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Sold prices and full condition notes from Car & Classic, so your valuation comes with its evidence attached.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other dealers, collectors, and valuers find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#166534;border:1px solid #F0FDF4;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/carandclassic-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🎯 Tips

- **Build a price index.** Filter to sold auctions for one model, schedule it monthly, and you have a running record of what that car fetches over time.
- **Check the currency and the mileage unit.** Car & Classic is pan-European, so GBP and EUR both appear, and mileage arrives in miles or kilometres. Both are labelled on every row.
- **Search first, enrich second.** Run a broad search to find the cars you care about, then re-run in listing mode with detail on for just those, rather than paying for detail on everything.
- **Watch reserve status, not just price.** A high bid on a lot where the reserve was never met tells you the market disagreed with the seller. The `isSold` field separates cars that actually changed hands from lots that ended unsold.

### ❓ FAQ

**Can I get the price a car actually sold for?**
Yes. Set **Auction state** to **Ended**, and every car that sold carries its final hammer price, bid count, and reserve status. Ended lots that did not sell come back too, flagged by the `isSold` field, so you can keep them or filter them out.

**Do I need a Car & Classic account or login?**
No. It only reads pages that are public to any visitor.

**Does it cover motorcycles and commercial vehicles?**
Yes. Set **Vehicle type** to motorcycles or commercial vehicles. Cars are the default.

**Why is the model or variant field sometimes empty?**
Many sellers only fill in a make and a free-text title. Where the site has no model, this Actor leaves the field out rather than guessing, so your data stays trustworthy.

**Can I run it on a schedule?**
Yes. Use Apify's scheduler to run it daily, weekly, or monthly, and connect the output to Google Sheets, Make, Zapier, or your own tools.

### ⚖️ Disclaimers

This Actor collects only publicly available listing information. It does not access private data, accounts, or anything behind a login. You are responsible for using the data in line with Car & Classic's terms and applicable law, including data protection rules where seller contact details are involved.

Found a problem or want a field added? Open an issue on the **Issues** tab and it will be looked at.

### 🔗 Other actors

- [Heavy Equipment Auction Results: Price Comps](https://apify.com/getascraper/heavy-equipment-auction-comps-feed) ↗ - Sold prices for machinery and plant, the same comparables approach applied to heavy equipment.
- [AuctionNinja Scraper: Estate Sales & Online Auctions](https://apify.com/getascraper/auctionninja-scraper) ↗ - Estate and online auction lots, useful for automobilia and collectables alongside cars.
- [Autohero Scraper: 10 EU Stores, 40+ Fields](https://apify.com/getascraper/autohero-cars-scraper) ↗ - Used-car stock and pricing across ten European markets.
- [Standvirtual Cars Scraper: Carros usados](https://apify.com/getascraper/standvirtual-cars-scraper) ↗ - Portugal's largest used-car marketplace, with full spec and seller data.
- [AutoTrader South Africa Cars Scraper](https://apify.com/getascraper/autotrader-za-cars-scraper) ↗ - South African used-car listings, prices, and dealer detail.

# Actor input Schema

## `mode` (type: `string`):

Search the catalogue by filters, or fetch specific listing URLs directly.

## `listingUrls` (type: `array`):

Listing mode only. Paste one or more Car & Classic listing URLs to fetch full detail for.

## `make` (type: `string`):

Vehicle make slug, e.g. porsche, mercedes, jaguar. Leave empty for all makes.

## `model` (type: `string`):

Model slug within the chosen make, e.g. 911, clk-class. Leave empty for all models.

## `vehicleType` (type: `string`):

Restrict to cars, motorcycles, or commercial vehicles.

## `auctionState` (type: `array`):

Filter by auction state. "Ended" returns completed lots, most of which sold: check the isSold field on each row, and soldPrice is only filled in when the car actually sold.

## `priceMin` (type: `integer`):

Lowest asking or sold price to include, in the listing's own currency.

## `priceMax` (type: `integer`):

Highest asking or sold price to include. Leave at 0 for no limit.

## `yearMin` (type: `integer`):

Earliest model year to include.

## `yearMax` (type: `integer`):

Latest model year to include.

## `mileageMax` (type: `integer`):

Highest odometer reading to include.

## `transmissionType` (type: `string`):

Filter by transmission type.

## `steeringPosition` (type: `string`):

Filter by steering side.

## `sellerType` (type: `string`):

Filter by seller type.

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

Residential proxy is the default and is required to clear the site's bot protection reliably. Only the challenge-clearing browser session spends this bandwidth, and one session serves many page reads.

## `scrapeDetails` (type: `boolean`):

Search mode only. Also fetch each listing's detail page for the full description, seller contact info, registration plate, and precise model/variant/generation. Costs one extra page fetch per listing.

## `maxItems` (type: `integer`):

Maximum number of listings to return.

## Actor input object example

```json
{
  "mode": "search",
  "listingUrls": [
    "https://www.carandclassic.com/auctions/2002-mercedes-benz-clk-320-avantgarde-a208-nYWkK8"
  ],
  "make": "",
  "model": "",
  "vehicleType": "",
  "auctionState": [],
  "priceMin": 0,
  "priceMax": 0,
  "yearMin": 0,
  "yearMax": 0,
  "mileageMax": 0,
  "transmissionType": "",
  "steeringPosition": "",
  "sellerType": "",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "scrapeDetails": false,
  "maxItems": 100
}
```

# Actor output Schema

## `dataset` (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 = {
    "mode": "search",
    "listingUrls": [
        "https://www.carandclassic.com/auctions/2002-mercedes-benz-clk-320-avantgarde-a208-nYWkK8"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/carandclassic-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 = {
    "mode": "search",
    "listingUrls": ["https://www.carandclassic.com/auctions/2002-mercedes-benz-clk-320-avantgarde-a208-nYWkK8"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/carandclassic-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 '{
  "mode": "search",
  "listingUrls": [
    "https://www.carandclassic.com/auctions/2002-mercedes-benz-clk-320-avantgarde-a208-nYWkK8"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call getascraper/carandclassic-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/carandclassic-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/fFENf3VbAcwWmLX6O/builds/KD6eidRnfbO6DxcRn/openapi.json
