Car & Classic [$1💰] | Full 46k catalogue | Beats 10k cap avatar

Car & Classic [$1💰] | Full 46k catalogue | Beats 10k cap

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Car & Classic [$1💰] | Full 46k catalogue | Beats 10k cap

Car & Classic [$1💰] | Full 46k catalogue | Beats 10k cap

Scrape the full Car & Classic catalogue of classic cars, bikes and commercials.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

16

Monthly active users

4 days ago

Last modified

Share

Car & Classic Scraper

Turn Car & Classic into a structured classic-car dataset — the whole catalogue, not the first 10,000. Scrape listings from carandclassic.com with price, year, mileage, engine, gearbox, steering side, colour, location with coordinates, seller details, photos, and live auction bids. Classic cars, motorcycles and commercial vehicles across the UK and Europe. JSON, CSV or Excel out, priced per result.

✨ Why use this scraper?

Car & Classic's own search API refuses to page beyond about 10,000 results. It doesn't return an error when you cross that line — it quietly hands back a 6-row page and stops. A scraper that pages until it runs out therefore looks like it finished, while silently dropping three quarters of a 46,000-listing catalogue.

  • 🔓 Gets past the 10,000 ceiling. When a search is bigger than the API will serve, the Actor automatically splits it into year slices, sweeps each, and de-duplicates. A full-catalogue run returns ~44,000 listings instead of ~10,000.
  • 📣 Tells you when it falls short. Every run compares what it collected against the total Car & Classic itself reports, and says so in the log. No silent truncation.
  • 🔗 Paste a search URL and it just works. Car & Classic's search URL uses the same parameters as its API, so a pasted URL reproduces the site's own result count exactly. Paste several to run several searches at once.
  • 📞 Dealer contact details included. Dealer listings carry the trading name, phone number and website, alongside verification year — with no extra requests.
  • 🔨 Live auctions with bids. Auction listings include the current bid, bid count, reserve status (set / met / lowered) and end time.
  • 🌍 Pan-European, not just UK. GB ~20,700, France ~8,600, Italy ~7,100, plus the Netherlands, US, Belgium, Germany, Spain and more — filterable by country, and each row carries latitude and longitude.
  • 100 listings per request, no per-car fetches. Everything comes from the search API, so ~44,000 rows takes about three minutes.

🎯 Use cases

TeamWhat they build
Classic dealers & tradersPricing benchmarks by model, generation and condition across Europe
CollectorsAlerts on a specific generation or variant coming to market
Auction watchersLive bid, reserve status and end-time tracking across every running auction
Market analystsClassic-car value trends by make, era and country
Lead generationDealer directories from sellerName, sellerPhone, sellerWebsite and town
Restorers & parts tradersFinding project cars by mileage, year and price band
ML / data teamsValuation training data with spec, location and listing history

📥 Supported inputs

You don't need a URL. Set the filters and run. startUrls is optional:

InputBehaviour
https://www.carandclassic.com/search?make=porsche&model=911Search — the query string maps 1:1 onto the API
Filters on the inputSame filters, set directly

Pasted search URLs are the easiest route. Build the search on carandclassic.com, copy the URL, paste it in. Paste as many as you like — each is scraped as its own search and results are de-duplicated by listing ID across all of them, so overlapping searches never bill twice. maxItems is a total across every URL.

If the Actor cannot read any filters from a URL you paste, it stops with an error rather than running. That's deliberate: an unreadable URL would otherwise fall through to scraping all ~46,000 listings instead of your selection.

Not supported: single-listing URLs as a starting point (Car & Classic has no per-listing API), and hosts outside carandclassic.com.

🔄 How it works

  1. Translate your filters, or the query string of any pasted search URL, into API parameters.
  2. Ask the API how many listings match — the same number the website prints.
  3. Slice if needed. Above ~10,000 the year range is bisected recursively until every slice fits under the ceiling.
  4. Sweep each slice at 100 listings per request, de-duplicating by listing ID.
  5. Report coverage — collected versus reported, with any shortfall stated explicitly.

⚙️ Input parameters

FieldTypeDescription
startUrlsarrayCar & Classic search URLs. Optional.
maxItemsintegerMaximum listings. Default 1000.
makesarrayMake slugs as they appear in a URL, e.g. ["porsche","alfa-romeo"]. Each runs as its own search.
model / variant / generationstringSlugs, e.g. 911, gt3, 991-2.
keywordsstringFree-text search.
vehicleTypestringCars, motorcycles or commercial vehicles.
listingTypestringAuctions only, classifieds only, or both.
priceMin / priceMaxintegerPrice range in whole currency units.
yearMin / yearMaxintegerYear range.
mileageMin / mileageMaxintegerMileage range.
engineSizeMinCc / engineSizeMaxCcintegerEngine capacity in cc.
coloursarrayExterior colour.
transmissionstringManual or automatic.
steeringPositionstringLHD or RHD.
sellerTypestringDealer or private.
countrystringISO country code, e.g. GB, FR, IT.
maxConcurrencyintegerParallel dataset writes. Default 10.

Example input

{
"startUrls": ["https://www.carandclassic.com/search?make=porsche&model=911"],
"maxItems": 500
}

Every live auction, with bids:

{
"listingType": "auctions",
"maxItems": 500
}

📊 Output overview

One row per listing. Classifieds and auctions share a single shape — auction-only fields come back null on classifieds, and dealer-only fields come back null on private sales, so the column set never changes between rows.

📦 Output sample

{
"listingId": "2241780",
"listingUrl": "https://www.carandclassic.com/la/C2131760",
"listingType": "basic",
"title": "2018 Porsche 911 GT3",
"make": "Porsche",
"model": "911",
"variant": "GT3",
"generation": "991.2",
"year": 2018,
"price": 149900,
"currency": "EUR",
"mileage": 43500,
"mileageUnit": "km",
"engineSizeCc": 4000,
"fuelType": "petrol",
"transmission": "automatic",
"gears": "7+",
"steeringPosition": "lhd",
"colour": "Red",
"bodyType": "Coupe",
"category": "Modern Cars",
"country": "France",
"countryCode": "FR",
"town": "Paris",
"latitude": 48.8247842,
"longitude": 2.3678611,
"sellerType": "dealer",
"sellerName": "Sportwagen Paris",
"sellerPhone": "+33187227763",
"sellerWebsite": "http://sportwagenparis.com",
"isAuction": false,
"currentBid": null,
"bidCount": null,
"imageCount": 11,
"createdAt": "2026-08-13T09:26:53+00:00",
"scrapedAt": "2026-08-18T15:17:25.862Z"
}

🗂 Key output fields

FieldNotes
listingIdStable ID. Use it to de-duplicate across scheduled runs.
priceAsking price, or the current bid on a live auction.
currencyCheck this. The site is pan-European, so GBP and EUR both appear.
mileage / mileageUnitCheck the unit — European listings are in km, UK ones in miles.
sellerPhone / sellerWebsiteDealer listings only; null for private sellers.
isAuctionTrue for live auctions. Auction fields are null on classifieds.
currentBid / bidCount / reserveMetLive auction state at the moment of scraping.
latitude / longitudeListing coordinates, useful for mapping or distance work.
generatione.g. 991.2 — Car & Classic is unusually good at generation data, which matters for valuation.

❓ FAQ

Why do other Car & Classic scrapers stop at around 10,000? Because the API stops serving real results past that point without raising an error. This Actor detects the ceiling and splits the search into year slices to get underneath it.

Can I get all ~46,000 listings? Close to it. A full sweep returns roughly 44,000. The gap is listings with no year (which fall outside every year slice) plus normal churn during a multi-minute run. The Actor reports the exact shortfall in the log rather than hiding it.

Can I get sold or completed auction results? No. Car & Classic's API only exposes currently-live auctions, so hasSold is effectively always false. Only live bidding state is available.

Do I need a proxy? No. Car & Classic sits behind Cloudflare, but the Actor's HTTP stack handles it without one, and direct connections are both faster and free.

Why is mileageUnit sometimes km? Because the listing is in mainland Europe. Always read mileage together with mileageUnit.

💬 Support

🛠 Additional services

  • Custom output shape, additional fields, or one-off datasets: muhamed.didovic@gmail.com
  • Need a similar scraper for another classic-car marketplace (Collecting Cars, Bring a Trailer, Classic Trader, Catawiki)? Drop an email.
  • For API access (no Apify fee, just a usage fee for the API): muhamed.didovic@gmail.com

🔎 Explore more scrapers

See other scrapers at memo23's Apify profile — including the PistonHeads and AutoTrader UK scrapers, plus job boards, real estate and more.


🤖 For AI Agents & LLM Apps

  • Deterministic input. All filters are plain JSON; make and model take the same slugs as the website URL.
  • Stable schema. Every field is present on every row (null when absent), so downstream parsing needs no defensive key checks.
  • Bounded cost. maxItems caps the result count exactly.
  • Honest coverage. The run states collected-versus-reported totals, so an agent can tell whether it has a complete set.
  • Grounding-friendly. listingUrl gives every row a citable public source; scrapedAt and modifiedAt support freshness reasoning.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Car & Classic Ltd or any of its subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available listing pages and the public search endpoint on carandclassic.com — no authenticated endpoints, dealer-only features, or content behind a login. Users are responsible for ensuring their use complies with Car & Classic's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.


SEO Keywords

car and classic scraper, carandclassic scraper, classic car scraper, classic car listings api, classic car data, scrape carandclassic.com, Apify car and classic, classic car marketplace scraper, classic car auction scraper, classic car prices uk, european classic car listings, vintage car scraper, collector car data, classic car dealer leads, porsche 911 listings scraper, classic car valuation data, car auction bids scraper, classic motorcycle listings scraper, bring a trailer alternative, collecting cars alternative, classic trader alternative, uk classic car market data