Classic.com Vehicles Scraper
Pricing
from $2.50 / 1,000 results
Classic.com Vehicles Scraper
Scrape Classic.com vehicle search results and listing pages from start URLs.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Fahim Mahmud Chisti
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
What does Classic.com Vehicles Scraper do?
Classic.com Vehicles Scraper extracts classic and collector vehicle listings from Classic.com search and detail pages. Paste a filtered search URL (odometer, query, sort, page) or a direct /veh/... listing URL, and the Actor returns structured fields that match the other vehicle scrapers in this monorepo—title, price, mileage, VIN, seller, location, images, and more.
Run it on the Apify platform for scheduling, API access, proxy rotation, monitoring, and dataset exports (JSON, CSV, Excel, HTML).
Why use Classic.com Vehicles Scraper?
- Track private-seller and auction inventory with your own Classic.com filters preserved in the start URL
- Monitor lot dates and prices for comps research
- Feed marketplaces, CRM tools, or valuation pipelines with consistent vehicle fields
- Paginate search results and optionally open each listing for full specs
How to use Classic.com Vehicles Scraper
- Open the Actor in Apify Console and go to the Input tab.
- Paste one or more Classic.com Start URLs (search or vehicle detail).
- Set Max items and Max pages per search (defaults are low for quick QA runs).
- Optionally enable Scrape item details for VIN, engine, colors, and description.
- Keep US residential proxies enabled if datacenter IPs are blocked.
- Click Start and download results from the Output / dataset tab.
Input
| Field | Description |
|---|---|
startUrls | Required. Classic.com /search/ or /veh/ URLs. Filters in the URL are kept. |
maxItems | Cap on saved listings (0 = unlimited). Default 5. |
maxPagesPerSearch | Pages to crawl per search URL. Default 1. |
maxListingAgeDays | Optional age filter using the listing lot/listed date. |
scrapeItemDetails | Open each vehicle page for richer fields. Default false. |
duplicateCheck | Skip detail scraping for listing URLs already known (default false). |
duplicateCheckApiUrl | Optional POST exists API; leave empty for Apify storage only. |
duplicateCheckStoreName | Named KV store (default vehicle-listing-urls). |
proxyConfiguration | Prefer Apify residential US proxies. |
Example input:
{"startUrls": [{"url": "https://www.classic.com/search/?filters%5Bodometer%5D%5Bend%5D=75000&filters%5Bodometer%5D%5Bstart%5D=0&page=1&q=Private+seller&sort=lotdate"}],"maxItems": 5,"maxPagesPerSearch": 1,"scrapeItemDetails": false}
Skip existing listings (duplicate check)
Classic.com detail scraping opens each vehicle in a browser with residential proxies. On scheduled re-runs, most results are often listings you already stored. Duplicate check skips those URLs so you do not pay again for detail pages you already have.
Enable it with duplicateCheck: true (default false).
Modes
- When
duplicateCheckApiUrlis set, the Actor POSTs batches of up to 500 listing URLs to your endpoint, then skips URLs returned inexisting. It also reads and updates the named Apify Key-Value store. A URL is skipped if either your API or the store marks it as known. - When
duplicateCheckApiUrlis empty, the Actor uses the Apify Key-Value store only (no external API).
API contract
// Request{ "listingUrls": ["https://example.com/listing/1", "https://example.com/listing/2"] }// Response{"existing": ["https://example.com/listing/1"],"missing": ["https://example.com/listing/2"]}
listingUrls may also be a single string. URLs are normalized (query string and trailing slash ignored). No auth header is required for public endpoints. If the API call fails, the Actor fail-opens and scrapes the batch.
After a listing is saved successfully, its URL is written to the named store under the KNOWN_LISTING_URLS record so future runs skip it even without an API.
Example:
{"startUrls": [{ "url": "https://www.classic.com/search/?q=Private+seller&sort=lotdate" }],"maxItems": 100,"duplicateCheck": true,"duplicateCheckApiUrl": "https://your-api.example.com/listings/exists","duplicateCheckStoreName": "vehicle-listing-urls"}
Output
Each dataset item uses the shared vehicle listing shape. You can download the dataset as JSON, HTML, CSV, or Excel.
{"itemId": "1957-ford-thunderbird-d7fh221629-WRGEy0p","title": "1957 Ford Thunderbird","listedAt": "2026-07-20T00:00:00.000Z","price": "50000","currency": "USD","location": "Payette County, Idaho, USA","seller": "Private Seller","year": "1957","make": "Ford","model": "Thunderbird","mileage": "53000","transmission": "Automatic","vin": null,"url": "https://www.classic.com/veh/1957-ford-thunderbird-d7fh221629-WRGEy0p/","imageUrl": "https://images.classic.com/vehicles/280becaa-df5b-4d08-ad50-23cf7acff4a1.jpg","images": ["https://images.classic.com/vehicles/280becaa-df5b-4d08-ad50-23cf7acff4a1.jpg"],"page": 1,"scrapedAt": "2026-07-20T17:00:00.000Z"}
With scrapeItemDetails: true, expect additional fields such as vin, engine, bodyType, driveType, exterior/interior colors, description, and specifics.
Data fields
| Field | Notes |
|---|---|
itemId | Classic.com vehicle slug from /veh/{slug}/ |
title | Listing title |
listedAt | Lot/listed date when shown on the card or detail page |
price / currency | Asking or sold price in USD when present |
mileage | Normalized miles (e.g. 53k → 53000) |
year / make / model | Parsed from title and detail specs |
seller / forSaleBy | e.g. Private Seller / owner |
vin | From detail specs when detail scraping is on |
images / imageUrl | Classic.com CDN vehicle images |
url / sourceUrl / page | Provenance and pagination |
Tips
- Build the search on Classic.com first (filters,
q,sort=lotdate), then copy the URL intostartUrls. - Keep
maxItemsandmaxPagesPerSearchsmall while testing; raise them for production runs. - Enable
scrapeItemDetailswhen you need VIN or full specs—each listing costs an extra request. - Enable
duplicateCheckon scheduled re-runs to skip listings you already stored. - Set
scrapeItemDetails: falsewhen search-card fields are enough. - Prefer skipping known listings over raising memory.
- Keep browser concurrency low.
- If results are empty, check the run key-value store for
DEBUG_PAGE_*HTML snapshots.
FAQ and support
This Actor is intended for legitimate research and inventory monitoring. Respect Classic.com terms of service and applicable laws. For bugs or feature requests, use the Actor Issues tab on Apify, or ask for a custom solution if you need marketplace-specific enrichments.