# Collectingcars Online Car Auction Scraper (`jungle_synthesizer/collectingcars-online-car-auction-scraper`) Actor

Scrape live and sold car auction listings from Collecting Cars, a global (UK, EU, US, AU) enthusiast vehicle auction platform. Get make, model, year, VIN, mileage, current bid or final sale price, reserve status, bid count, seller, highlights, and photos for every listing.

- **URL**: https://apify.com/jungle\_synthesizer/collectingcars-online-car-auction-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.60 / 1,000 record scrapeds

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/platform/actors/running/actors-in-store#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

## Collecting Cars Auction Scraper

Scrape live and sold car auction listings from [Collecting Cars](https://collectingcars.com), a global UK/EU/US/AU enthusiast vehicle auction platform. Returns make, model, year, VIN, mileage, current bid or final sale price, reserve status, bid count, seller, seller-written highlights, and full photo galleries for every listing.

***

### Collecting Cars Scraper Features

- Pulls both currently-live auctions and the full sold archive, in one run or separately.
- Extracts VIN, mileage, transmission, and reserve status straight from the listing page — no clicking through tabs.
- Returns current bid on live lots and final hammer price on sold ones, in the listing's native currency (GBP, EUR, USD, AUD).
- Collects every gallery photo per lot, plus the seller's full highlights and equipment write-up.
- Covers cars, and whatever else Collecting Cars auctions under the same listing format — number plates and automobilia included, with vehicle-only fields left blank where they don't apply.
- Resumable — a run that stops partway through picks back up without re-charging you for what it already delivered.

***

### Who Uses Collecting Cars Data?

- **Classifieds and index sites** — mirror live and sold listings alongside other auction houses for a single search experience.
- **Valuation and pricing models** — feed final sale prices into comps for a specific make/model, or build a broader market index.
- **Enthusiast trackers** — watch for a specific model, generation, or spec hitting auction before it ends.
- **Market researchers** — measure reserve-met rates, bid activity, and sale prices across regions and currencies.
- **Dealers and consignors** — benchmark what similar cars are actually selling for, not just listing for.

***

### How Collecting Cars Scraper Works

1. Pick a scrape mode — live auctions, the sold archive, or both — and set how many records you want.
2. The scraper walks the listing pages for your chosen mode and queues up every auction it finds.
3. Each listing is opened and its full detail — VIN, mileage, transmission, bids, reserve status, photos, seller write-up — is extracted.
4. Results land in your dataset as structured JSON, ready to export or pipe into whatever you're building.

***

### Input

```json
{
  "maxItems": 50,
  "auctionStage": "all"
}
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | Integer | `10` | Maximum number of listings to return. |
| `auctionStage` | String (select) | `"all"` | Which listings to crawl: `"all"` (live + sold archive), `"live"` (currently running auctions only), or `"sold"` (sold archive only). |
| `resumeCursor` | String | — | Cursor from a previous run's Output. Leave empty for a fresh crawl. |

**Sold archive only:**

```json
{
  "maxItems": 100,
  "auctionStage": "sold"
}
```

#### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### Collecting Cars Scraper Output Fields

```json
{
  "listing_title": "1955 Volkswagen Beetle De Luxe Sedan - Oval Window",
  "year": 1956,
  "make": "Volkswagen",
  "model": "Beetle",
  "mileage": 89635,
  "vin": "1-0958113",
  "transmission": "manual",
  "location": "Merrimac, QLD, Australia",
  "currency": "AUD",
  "current_bid": 19250,
  "final_price": null,
  "reserve_status": "No Reserve",
  "bid_count": 20,
  "auction_end": "2026-08-11T06:40:00.000Z",
  "status": "live",
  "seller": "brdy2000",
  "highlights": "A highly desirable right-hand-drive Oval Window Volkswagen Beetle... | It is powered by a naturally aspirated 1.2-litre air-cooled flat-four engine...",
  "image_urls": [
    "https://images.collectingcars.com/090853/Ext-1956-Volkswagen-Beetle-Oval-Window-138.jpg",
    "https://images.collectingcars.com/090853/Int-1956-Volkswagen-Beetle-Oval-Window-149.jpg"
  ],
  "listing_url": "https://collectingcars.com/for-sale/1955-volkswagen-beetle"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `listing_title` | String | The listing's title, as published. |
| `year` | Number | Model year. |
| `make` | String | Vehicle make. Null on non-vehicle lots (e.g. number plates). |
| `model` | String | Vehicle model. Null on non-vehicle lots. |
| `mileage` | Number | Odometer reading in miles, as indicated. |
| `vin` | String | Vehicle Identification Number, when disclosed by the seller. |
| `transmission` | String | Transmission type. |
| `location` | String | City/region and country where the vehicle is located. |
| `currency` | String | ISO currency code for bid/price amounts (GBP, EUR, USD, AUD, ...). |
| `current_bid` | Number | Current or winning bid amount. |
| `final_price` | Number | Final hammer price. Null while the auction is still live. |
| `reserve_status` | String | `No Reserve`, `Reserve Met`, or `Reserve Not Met`. |
| `bid_count` | Number | Total number of bids placed. |
| `auction_end` | String | Auction end time, ISO 8601 UTC. |
| `status` | String | `live`, `sold`, `ended-no-sale`, or `buy-now`. |
| `seller` | String | Seller username or consignor name. |
| `highlights` | String | Seller-written highlights and equipment notes, pipe-separated. |
| `image_urls` | Array | Full-size gallery photo URLs. |
| `listing_url` | String | Canonical URL of the listing. |

***

### FAQ

#### How do I scrape Collecting Cars auction listings?

Run this actor with `auctionStage` set to `"all"`, `"live"`, or `"sold"` and a `maxItems` cap. You get back structured JSON — no need to open each listing yourself.

#### What data can I get from Collecting Cars?

Everything a listing page shows: make, model, year, VIN, mileage, transmission, current bid or final sale price, reserve status, bid count, seller, the full highlights write-up, and every gallery photo.

#### Can I get just the sold archive, or just live auctions?

Yes. Set `auctionStage` to `"sold"` for completed sales only, or `"live"` for auctions still accepting bids. Default is `"all"`.

#### Do I need an account or API key for Collecting Cars?

No. Collecting Cars Scraper needs no login and no API key — give it an input and it hands back listings.

#### What currency are prices in?

Whatever the listing was posted in — Collecting Cars runs auctions in GBP, EUR, USD, and AUD. Each record's `currency` field tells you which.

***

### Need More Features?

Need custom fields, filters, or a different target site? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use Collecting Cars Scraper?

- **Global coverage** — Collecting Cars runs UK, EU, US, and AU auctions, so you're not limited to one region's classic car market.
- **Full detail, not just headlines** — VIN, mileage, transmission, and reserve status come from the listing page itself, not a summary card. Clean structured JSON, ready to use without cleanup.
- **Resumable** — a run that stops partway through picks back up where it left off, at no extra charge for records you already have.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

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

Maximum number of records to scrape

## `auctionStage` (type: `string`):

Which auction listings to crawl: currently live auctions, the sold archive, or both.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "auctionStage": "all"
}
```

# Actor output Schema

## `results` (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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "auctionStage": "all"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/collectingcars-online-car-auction-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
    "auctionStage": "all",
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/collectingcars-online-car-auction-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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10,
  "auctionStage": "all"
}' |
apify call jungle_synthesizer/collectingcars-online-car-auction-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/collectingcars-online-car-auction-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/2rCg9kWcHsVghwVCP/builds/pakE767JolGWbd37k/openapi.json
