One unified API for normalized inventory, CDN images, damages, market signals, price history, and past auctions from Auto1, OpenLane, Schadeautos, Copart DE, eCarsTrade, Encar, and Japanese auctions — plus 9.8M European retail classifieds listings from 681 portals across 39 countries. Skip custom indexing pipelines and proxy bans.
Plus European Classifieds — 9.8M retail listings from 681 origin portals across 39 European countries.
Interactive playground
Over one million live vehicles. One API.
Each platform publishes condition sheets differently. TheCarApi normalizes make, model, fuel, price, and damage — plus a 50M+ image vault on CDN. Stable identity site/auction_id.
500K+ top-offer signals, auction comps, and retail prices from 681 EU classifieds portals
Price history
Track source and public price changes for each auction
Production-grade delivery
Speed & reliability
Built for product traffic: low-latency reads, aggressive caching, continuous source sync, and transparent health endpoints — so your apps stay fast when inventory moves.
99.99%
Platform uptime
Rolling 90-day target
<100ms
p50 API latency
Cached search / facets
<250ms
p95 API latency
Under normal load
<3 min
Inventory freshness
Typical source lag
Edge-friendly caching
Many GETs cache 60–300s with X-Cache headers. Typical cache hit rate 95%+ on hot search and facet traffic.
Continuous multi-source sync
Indexing pipelines keep Auto1, OpenLane, Schadeautos, Copart DE, eCarsTrade, Encar and the Japanese auction houses fresh — each source held at 100% catalog coverage — plus a nightly sweep of 681 European classifieds portals, without you running proxies or parsers.
Observable by design
GET /api/health and contract versioning, X-Request-ID tracing, and auth lockouts protect uptime under bad-key storms.
We keep eyes on Auto1, OpenLane, Schadeautos, Copart, eCarsTrade, Encar, the Japanese auction houses and 681 EU classifieds portals so your engineers do not babysit proxies.
Building in-house indexing
Indexing vehicle lots is a moving target. Layout changes, bans, and storage overhead are constant drag.
✕Residential proxy overhead: High monthly proxy spend to bypass IP limits.
✕Constant rebuilds: Every platform update breaks selectors and stalls inventory.
✕Zero standardization: Thousands of lines to unify seven source schemas plus classifieds.
✕Anti-bot walls: Cloudflare challenges pause sync without ops coverage.
Using TheCarApi
Production multi-source inventory + query API. We handle ingestion; you ship product.
✓Image vault: 50M+ CDN WebP — no image pipeline to run.
✓Discovery tools: Live facets, catalog pages, SEO helpers, and EU retail comps from 39 countries.
✓History depth: 5M+ vehicles in main table + 500K+ archived.
1M+
Live vehicles
5M+
Vehicles ever indexed
50M+
Images in vault
500K+
Deal signals
One plan. Unlimited access.
A single flat price for the full API: search, detail, images, facets, catalog, SEO, and archive access. Up to 200,000 requests a month and no feature gates.
Evaluate the full API surface with a temporary key — perfect for demos, investor showcases, and proof-of-concepts. Contact us to get a free test key; no card required.
Do you provide bidding accounts or purchase rights on Auto1, OpenLane, Copart, eCarsTrade, etc.?
No. TheCarApi is a data and inventory API. We expose normalized search, detail, images, catalog data, and market signals. Bidding and purchasing require your own credentials with each platform.
How do I authenticate?
Send your API key via X-API-Key header or Authorization: Bearer <key>. Query-string api_key is optional and only if enabled server-side. Invalid keys return 401; repeated failures lock out the IP (5 fails / 5 min → 15 min lockout).
What is the stable public identity for a vehicle?
Always use site_slug + auction_id (e.g. auto1/48291033). Numeric-only legacy IDs can collide across sources and return HTTP 409 on ambiguous endpoints.
How large is the public inventory vs full database?
Public inventory is 1M+ live vehicles across Auto1, OpenLane, Schadeautos, Copart DE, eCarsTrade, Encar and the Japanese auction houses. Full indexed history exceeds 5M vehicles with 500K+ archived for historical / delta products. The 9.8M European retail classifieds listings are counted separately — they are a market-reference dataset, not auction inventory.
What is the European Classifieds Network and why is it not a site value?
It is 9.8M retail listings gathered from 681 classifieds portals, dealer sites and manufacturer stock pages across 39 European countries — asking prices, not auctions. Because those rows have no bidding, no auction end date, no detail payload and no gallery (one remote thumbnail per listing), they live in their own tables with their own vocabulary (seller type, origin portal). They are never merged into /api/search and never appear in /api/sites. Query them at /api/theparking/listings, /api/theparking/facets and /api/theparking/models under the theparking scope.
Is eCarsTrade a full source like the others?
Yes. eCarsTrade behaves like every other auction source: it is a valid site value for /api/search, /api/auction/{site}/{id}, /api/car-details, and the import calculator site_name fee model. Detail payloads are full; the gallery arrives under the ImageUrls key of car_identification.
How do I read condition, damages and paperwork without branching per source?
Use the vehicle_details block on /api/auction/{site}/{id} and /api/car-details. Each auction house names the same concepts differently — a downloadable file is Documents[] on Auto1 but ECarsTradeDocuments[] on eCarsTrade, while Documents on OpenLane is a dict of paperwork booleans and not a file list at all — so vehicle_details normalizes condition, documents, inspection reports, service history, equipment, warranty, specs and location into one shape. Coverage is not uniform: eCarsTrade has no per-panel damage list upstream, OpenLane publishes no document files, and only eCarsTrade has per-visit service rows. Reports are always links, never proxied files. Raw per-source data stays in car_identification.
Why do detail payloads not include auction fees, transport or delivery costs?
Because those figures are quoted to our buyer account and our delivery address, not yours — OpenLane gates them behind per-account visibility flags, Auto1 prices routes from our merchant profile, eCarsTrade quotes to our warehouse. Publishing them next to a public price would also expose our markup by subtraction. Fee, bid-history, transport and delivery blocks are stripped at the response boundary, along with anything identifying our account on a platform. Still served: the auction house’s own published asking prices, VAT scheme, estimated repair cost, and the seller/warehouse location. For landed cost, use the import calculator, which prices your own route.
How fresh is the data, and how do live prices work?
Prices are live across every source. All seven auction sources are refreshed continuously rather than on a slow batch schedule, so whatever you read — a search card, a facet count, a top-offer row, a detail response — is a current figure. There is no stale tier and no premium real-time upgrade; live pricing is the baseline for everything. On top of that baseline, a running auction with open bidding gets a second refresh: open one on a detail endpoint and the API re-reads its current bid from the auction house while serving your request, attaching a live_price block. An absent live_price block therefore never means a stale price — it means that listing did not need the second refresh. Read live_prices from /api/contract rather than hardcoding which listings qualify.
Do you provide CO2 emissions data?
Yes, in two clearly separated fields. co2 is the measured figure the auction house published, present on roughly half of EU lots. co2_estimated is derived for lots that publish none, and is never a measured value — an estimate must not be able to masquerade as a measurement. Because EU registration documents switched from NEDC to WLTP on 1 January 2021 and the same car reads 12-25% higher under WLTP, every estimate ships with co2_estimated_standard telling you which cycle it is on. Estimates are EU-market sources only: Korean, Japanese and American lots are homologated on different cycles, so no EU figure exists for them.
Does every source give the same fields?
No, and this is worth checking before you scope a feature. Auto1, OpenLane and eCarsTrade publish deep condition data; Schadeautos, Copart and Encar are moderate; the Japanese auction feed is shallow and its vehicle_details is often sparse or absent. Only eCarsTrade has per-visit service history rows. Only Auto1 has paint measurements and the DAT equipment catalogue. OpenLane publishes no document files at all, only paperwork booleans. The common core — identity, make/model/year, fuel, gearbox, mileage, prices, steering, images — is consistent everywhere. The Fields by source page in the documentation carries the full coverage matrix.
Are images included?
Yes. Listings include thumbnail annotations when ready. Full galleries via GET /api/auction-images/{site}/{id} return ready WebP vault/CDN URLs. 50M+ images are processed in the vault (~5 TB).
What is normalized vs raw?
Standard responses emphasize clean cross-source fields (make, model, year, fuel, mileage, public_price_eur, damage flags). Premium access includes car_identification and other JSONB blobs with source-specific damages, equipment, and reports.
Is rate limiting enforced?
Config supports RATE_LIMIT_PER_MINUTE (default 100). Brute-force protection on bad keys is active. Contact us for production quotas and multi-tenant key plans on the roadmap.
Can I access historical / archived lots?
Archived vehicles (full field fidelity + archived_at) power historical and delta products — 500K+ archive depth. Archive access and lifecycle fields (first_seen_at, content_hash, last_changed_at) are included in the plan.