# Classic-Trader Classic Cars Scraper (`scrappinglatam/classic-trader-scraper`) Actor

Scrape classic cars for sale on Classic-Trader.com. Filter by category, brand, and production year. Returns full listing data: price, mileage, location, seller, and auction info.

- **URL**: https://apify.com/scrappinglatam/classic-trader-scraper.md
- **Developed by:** [ScrappingLatam](https://apify.com/scrappinglatam) (community)
- **Categories:** E-commerce, AI, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Classic-Trader Classic Cars Scraper

Extract full listings from [Classic-Trader.com](https://www.classic-trader.com), Europe's largest online marketplace for classic cars. Filter by **category**, **brand**, and **production year** — each run returns clean, spreadsheet-ready records with price, mileage, location, seller, and auction data.

### What it does

Classic-Trader lists ~8,000 classic cars for sale across dealers, auctions, and private sellers in Europe. This Actor pulls live listings and returns one flat record per ad — ready for BI tools, spreadsheets, or downstream enrichment.

### Use cases

- Price monitoring and market intelligence for classic-car dealers
- Lead generation for restoration shops and parts suppliers
- Academic research on collector-car valuation trends
- Feeding downstream enrichment or comparison pipelines (Hagerty, Collectible, RM Sotheby's, etc.)
- Monitoring upcoming auctions by brand or body type

### Input

| Field        | Type    | Description                                                                                                      |
|--------------|---------|------------------------------------------------------------------------------------------------------------------|
| `brand`      | Brand — e.g. `bmw`, `porsche`, `ferrari`, `mercedes-benz`. Leave empty for all. |
| `category`   | Built-in category (e.g. `classic-convertibles`, `muscle-cars`, `pre-war-cars`). Mutually exclusive with `brand`. |
| `year_min`   | Earliest production year. |
| `year_max`   | Latest production year. |
| `locale`     | Locale / language — `uk`, `de`, `fr`, `es`, etc. Controls language and displayed currency. |
| `max_items`  | Hard cap on total rows returned. |
| `max_pages`  | Optional limit on how many result pages to scan. |

### Output

Each dataset record contains:

| Field                         | Description                                                      |
|-------------------------------|------------------------------------------------------------------|
| `id`, `url`                   | Stable Classic-Trader listing id and canonical URL               |
| `title`, `title_by_seller`    | Listing title and seller-authored subtitle                       |
| `brand`, `brand_slug`         | Make                                                             |
| `model`, `model_slug`         | Model series                                                     |
| `model_specification`         | Sub-model / variant                                              |
| `manufacturer_code`           | Factory code                                                     |
| `year_of_production`          | Year of this specific vehicle                                    |
| `year_begin_of_production`    | First production year of the model series                        |
| `year_end_of_production`      | Last production year                                             |
| `body`, `body_detailed`       | Body type (coupe, convertible, saloon…)                          |
| `cubic_capacity_cc`           | Engine displacement                                              |
| `power_hp`, `power_kw`        | Engine power                                                     |
| `weight_kg`                   | Weight                                                           |
| `mileage_value`, `mileage_unit` | Odometer                                                       |
| `price_amount`, `price_currency` | Price in the locale's currency                                |
| `original_price_amount`, `original_price_currency` | Original asking price before FX conversion |
| `selling_method`              | `classified_ad_sale` / `auction_sale`                            |
| `is_replica`, `has_report`, `is_converted` | Flags                                               |
| `auction_*`                   | Bid count, reserve info, estimated range, starts/ends            |
| `seller_*`                    | Dealer / private / auction house, verification flag              |
| `location_*`                  | Country, city, postal code, lat/lng                              |
| `image_url`, `images_count`   | Primary image URL and gallery size                               |
| `publish_date`, `update_date` | Listing metadata                                                 |
| `scraped_at`                  | ISO-8601 UTC timestamp                                           |

### Example input

```json
{
  "brand": "bmw",
  "year_min": 1960,
  "year_max": 1975,
  "max_items": 50,
  "locale": "uk"
}
````

Scrape BMW classics from 1960 to 1975, returning up to 50 listings, priced in GBP.

### Notes

- Every listing is emitted at most once per run — duplicates across pages are filtered out automatically.
- Classic-Trader's search does not combine brand and category filters; use one or the other for the most specific results.
- Requests are paced to be polite to the source site.

### Legal

This Actor scrapes the public Classic-Trader.com website without authentication. Users are responsible for complying with Classic-Trader's [Terms of Service](https://www.classic-trader.com/uk/terms-of-use) and applicable data protection law.

# Actor input Schema

## `brand` (type: `string`):

Brand slug, e.g. bmw, porsche, ferrari, mercedes-benz, jaguar, alfa-romeo. Leave empty for all brands. Mutually exclusive with 'Category' — if both are set, 'Category' wins.

## `category` (type: `string`):

One of the built-in category pages. Mutually exclusive with 'Brand'.

## `year_min` (type: `integer`):

Earliest production-begin year. Leave empty for no lower bound.

## `year_max` (type: `integer`):

Latest production-end year. Leave empty for no upper bound.

## `locale` (type: `string`):

URL locale prefix. UK is the default and returns English labels with prices in GBP.

## `max_items` (type: `integer`):

Hard cap on total rows written to the dataset. 15 results per page.

## `max_pages` (type: `integer`):

Optional page-count cap. Leave empty to paginate until max\_items or end-of-results.

## Actor input object example

```json
{
  "brand": "",
  "category": "",
  "locale": "uk",
  "max_items": 50
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scrappinglatam/classic-trader-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("scrappinglatam/classic-trader-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call scrappinglatam/classic-trader-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrappinglatam/classic-trader-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Classic-Trader Classic Cars Scraper",
        "description": "Scrape classic cars for sale on Classic-Trader.com. Filter by category, brand, and production year. Returns full listing data: price, mileage, location, seller, and auction info.",
        "version": "0.0",
        "x-build-id": "6W80ls49wVxN0nKyD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrappinglatam~classic-trader-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrappinglatam-classic-trader-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrappinglatam~classic-trader-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrappinglatam-classic-trader-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrappinglatam~classic-trader-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrappinglatam-classic-trader-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "brand": {
                        "title": "Brand",
                        "type": "string",
                        "description": "Brand slug, e.g. bmw, porsche, ferrari, mercedes-benz, jaguar, alfa-romeo. Leave empty for all brands. Mutually exclusive with 'Category' — if both are set, 'Category' wins.",
                        "default": ""
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "",
                            "american-classics",
                            "british-classics",
                            "french-classics",
                            "german-classic-cars",
                            "italian-classics",
                            "japan-classic-cars",
                            "classic-convertibles",
                            "classic-race-cars",
                            "classic-roadster",
                            "mercedes-benz-gullwing",
                            "mercedes-benz-pagoda",
                            "mille-miglia",
                            "muscle-cars",
                            "pre-war-cars",
                            "vintage-cars"
                        ],
                        "type": "string",
                        "description": "One of the built-in category pages. Mutually exclusive with 'Brand'.",
                        "default": ""
                    },
                    "year_min": {
                        "title": "Year from (production begin)",
                        "minimum": 1886,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Earliest production-begin year. Leave empty for no lower bound."
                    },
                    "year_max": {
                        "title": "Year to (production end)",
                        "minimum": 1886,
                        "maximum": 2030,
                        "type": "integer",
                        "description": "Latest production-end year. Leave empty for no upper bound."
                    },
                    "locale": {
                        "title": "Locale",
                        "enum": [
                            "uk",
                            "de",
                            "ch",
                            "at",
                            "au",
                            "fr",
                            "es",
                            "nl",
                            "it"
                        ],
                        "type": "string",
                        "description": "URL locale prefix. UK is the default and returns English labels with prices in GBP.",
                        "default": "uk"
                    },
                    "max_items": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard cap on total rows written to the dataset. 15 results per page.",
                        "default": 50
                    },
                    "max_pages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Optional page-count cap. Leave empty to paginate until max_items or end-of-results."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
