# Classic.com Cars Scraper (`shahidirfan/classic-com-cars-scraper`) Actor

Scrape classic & vintage car listings from Classic.com. Extract prices, specifications, descriptions, photos & seller details. Ideal for automotive market research, price tracking, inventory analysis & ML training datasets. Structured, production-ready data.

- **URL**: https://apify.com/shahidirfan/classic-com-cars-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 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 Cars Scraper

Extract vehicle listing data from Classic.com for classic, collectible, and enthusiast car research. Collect prices, locations, sellers, mileage, transmission details, images, listing status, and source URLs for market tracking, lead generation, pricing analysis, and inventory monitoring.

### Features

- **Classic.com records** - Collect listing or market records from search URLs or keyword searches
- **Pagination support** - Gather results across multiple search result pages
- **Clean dataset items** - Empty values are removed from each record
- **Flexible inputs** - Start from a URL or provide a keyword such as `porsche 911`
- **Useful vehicle fields** - Capture price, seller, location, mileage, image URLs, status, and more

---

### Use Cases

#### Classic Car Market Research
Track active listings across makes, models, years, and regions. Build datasets to compare prices, supply, seller types, and vehicle condition signals.

#### Dealer Lead Monitoring
Monitor Classic.com listings to find vehicles offered by dealers and auction houses. Use seller, price, location, and listing links to support outreach or inventory checks.

#### Pricing Analysis
Collect prices and vehicle attributes for comparable classic cars. Analysts can export records to CSV, Excel, or BI tools to study pricing ranges and market movement.

#### Inventory Watchlists
Run keyword searches for target models such as `ferrari dino`, `land cruiser`, or `porsche 911`. Schedule runs to keep a fresh feed of newly surfaced listings.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | `https://www.classic.com/search?result_type=listings` | Classic.com search URL. Takes priority over `keyword`. |
| `keyword` | String | No | - | Search keyword used when `startUrl` is empty. |
| `results_wanted` | Integer | No | `20` | Maximum number of listings to collect. |
| `max_pages` | Integer | No | `3` | Maximum number of result pages to fetch. |
| `result_type` | String | No | `listings` | Result type to request: `listings`, `markets`, or `all`. If `startUrl` already has a result type, the URL is respected. |
| `proxyConfiguration` | Object | No | Residential proxy | Proxy settings for reliable collection. |

---

### Output Data

Each dataset item can contain:

| Field | Type | Description |
|-------|------|-------------|
| `listing_id` | String | Classic.com listing identifier |
| `market_id` | String | Classic.com market identifier for market records |
| `record_type` | String | Record type, such as `market` for market rows |
| `title` | String | Vehicle listing title |
| `url` | String | Vehicle detail URL |
| `listing_url` | String | Seller listing URL |
| `seller` | String | Dealer, auction house, or seller name |
| `price` | String | Displayed listing price |
| `location` | String | Vehicle location |
| `image_url` | String | Primary vehicle image |
| `image_urls` | Array | All vehicle image URLs exposed on the result page |
| `photo_count` | Integer | Displayed number of photos |
| `result_page_image_count` | Integer | Number of image URLs found in the result card |
| `missing_gallery_image_count` | Integer | Displayed photos not exposed as image URLs on the result page |
| `gallery_note` | String | Note when full gallery URLs require the vehicle page |
| `lot_date` | String | Displayed listing or lot date |
| `condition` | String | Displayed condition category |
| `mileage` | String | Displayed mileage |
| `transmission` | String | Displayed transmission |
| `drive_side` | String | Left-hand or right-hand drive |
| `listing_status` | String | Sale status such as for sale or sold |
| `sale_type` | String | Sale format such as fixed price or auction |
| `for_sale_count` | Integer | Number of active for-sale listings for market records |
| `listings_count` | Integer | Total listing count shown for market records |
| `source_page_url` | String | Search result page where the listing was found |

---

### Usage Examples

#### Collect From a Search URL

```json
{
  "startUrl": "https://www.classic.com/search?result_type=listings",
  "results_wanted": 20,
  "max_pages": 3
}
````

#### Search by Keyword

```json
{
  "keyword": "porsche 911",
  "results_wanted": 50,
  "max_pages": 5
}
```

#### Use a Model-Specific Classic.com URL

```json
{
  "startUrl": "https://www.classic.com/search?q=ferrari%20dino&result_type=listings",
  "results_wanted": 40,
  "max_pages": 4
}
```

#### Collect Market Results

```json
{
  "keyword": "corvette",
  "result_type": "markets",
  "results_wanted": 20,
  "max_pages": 1
}
```

***

### Sample Output

```json
{
  "listing_id": "1493745",
  "title": "2013 Chevrolet Corvette",
  "url": "https://www.classic.com/veh/2013-chevrolet-corvette-1g1ye3dw8d5101163-Wxob3Qn/",
  "listing_url": "https://www.classic.com/s/grahams-auto-truck-clinic-mWjvvbW/lots/2013-chevrolet-corvette-4yqA9X4",
  "seller": "Graham's Auto Truck Clinic",
  "price": "$27,995*",
  "location": "Dane County, Wisconsin, USA",
  "image_url": "https://images.classic.com/vehicles/example.webp?ar=16%3A9&fit=crop&h=338&w=600",
  "image_urls": [
    "https://images.classic.com/vehicles/example.webp?ar=16%3A9&fit=crop&h=338&w=600"
  ],
  "photo_count": 61,
  "result_page_image_count": 1,
  "missing_gallery_image_count": 60,
  "gallery_note": "Classic.com search results expose the primary image URL only; remaining gallery URLs require the vehicle page.",
  "lot_date": "Jul 11, 2026",
  "condition": "Original & Highly Original",
  "mileage": "44k mi",
  "transmission": "Automatic",
  "drive_side": "LHD",
  "listing_status": "For Sale",
  "sale_type": "Fixed-price",
  "source_page_url": "https://www.classic.com/search?result_type=listings"
}
```

***

### Tips for Best Results

#### Use Specific Searches

- Use model and year keywords for tighter datasets
- Start with known Classic.com search URLs when you need exact filters

#### Keep Test Runs Small

- Use `results_wanted` between 20 and 50 for quick checks
- Increase `max_pages` only when you need broader coverage

#### Export for Analysis

- Download JSON for integrations
- Use CSV or Excel for price comparison and reporting

***

### Integrations

Connect your data with:

- **Google Sheets** - Review listings in a spreadsheet
- **Airtable** - Build searchable vehicle databases
- **Slack** - Send listing updates to channels
- **Webhooks** - Forward records to custom systems
- **Make** - Create automated workflows
- **Zapier** - Trigger follow-up actions

#### Export Formats

- **JSON** - For developers and data pipelines
- **CSV** - For spreadsheet analysis
- **Excel** - For business reporting
- **XML** - For legacy systems

***

### Frequently Asked Questions

#### Can I use a Classic.com URL instead of a keyword?

Yes. `startUrl` takes priority over `keyword`, so you can paste a filtered Classic.com search URL directly.

#### Does the actor handle pagination?

Yes. Set `max_pages` to control how many result pages are fetched.

#### Why are some fields missing?

Some listings do not display every attribute. Empty values are removed from records to keep the dataset clean.

#### How many listings can I collect?

You can set `results_wanted` to the number you need. Larger runs may require more pages and proxy support.

#### Can I schedule recurring runs?

Yes. Use Apify schedules to run recurring searches for selected models or market segments.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with website terms of service and applicable laws. Use data responsibly and respect rate limits.

# Actor input Schema

## `startUrl` (type: `string`):

Classic.com search URL to scrape. This takes priority over Keyword.

## `keyword` (type: `string`):

Search keyword to use when Start URL is empty.

## `results_wanted` (type: `integer`):

Maximum number of listings to collect.

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

Maximum number of search result pages to fetch.

## `result_type` (type: `string`):

Classic.com result type.

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

Use Apify Proxy if requests are challenged or rate limited.

## Actor input object example

```json
{
  "startUrl": "https://www.classic.com/search?result_type=listings",
  "keyword": "porsche 911",
  "results_wanted": 20,
  "max_pages": 3,
  "result_type": "listings",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrl": "https://www.classic.com/search?result_type=listings",
    "keyword": "porsche 911",
    "results_wanted": 20,
    "max_pages": 3,
    "result_type": "listings"
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/classic-com-cars-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 = {
    "startUrl": "https://www.classic.com/search?result_type=listings",
    "keyword": "porsche 911",
    "results_wanted": 20,
    "max_pages": 3,
    "result_type": "listings",
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/classic-com-cars-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 '{
  "startUrl": "https://www.classic.com/search?result_type=listings",
  "keyword": "porsche 911",
  "results_wanted": 20,
  "max_pages": 3,
  "result_type": "listings"
}' |
apify call shahidirfan/classic-com-cars-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Classic.com Cars Scraper",
        "description": "Scrape classic & vintage car listings from Classic.com. Extract prices, specifications, descriptions, photos & seller details. Ideal for automotive market research, price tracking, inventory analysis & ML training datasets. Structured, production-ready data.",
        "version": "0.0",
        "x-build-id": "zfMRHI2GDPUCdlbnF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~classic-com-cars-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-classic-com-cars-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/shahidirfan~classic-com-cars-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-classic-com-cars-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/shahidirfan~classic-com-cars-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-classic-com-cars-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": {
                    "startUrl": {
                        "title": "Start URL",
                        "type": "string",
                        "description": "Classic.com search URL to scrape. This takes priority over Keyword."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search keyword to use when Start URL is empty."
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to collect.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Maximum pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of search result pages to fetch.",
                        "default": 3
                    },
                    "result_type": {
                        "title": "Result type",
                        "enum": [
                            "listings",
                            "markets",
                            "all"
                        ],
                        "type": "string",
                        "description": "Classic.com result type.",
                        "default": "listings"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use Apify Proxy if requests are challenged or rate limited.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
