Historical inventory
Ended listings moved into the archive, separate from ended rows still in the live table. Requires the archive scope. A last observed price is not a confirmed sale price.
Search ended auctions
Requires the archive scope.
Parameters
sitestring · query stringComma-separated source slugs from `/api/sites`, OR within the parameter. Case-insensitive; padding and empty members are ignored. An unknown slug is a `400` naming the offender.
Example openlane,ecarstrade·Where the value comes from Current API reference
site_excludestring · query stringComma-separated source slugs to leave out. Same rules as `site`.
Example copart·Where the value comes from Current API reference
brandstring · query stringBrand display name, slug (from `/api/brands`), or numeric `brand_id`.
Example bmw·Where the value comes from Current API reference
modelstring · query stringModel name or slug.
Example 320d·Where the value comes from Current API reference
countrystring · query stringISO country code from `/api/countries`, or the pseudo-country `europe`. Accepted and ignored by `/api/sites` and `/load-models`.
Example DE·Where the value comes from Current API reference
fuelstring · query stringCanonical fuel group from `/api/fuels`.
Example Diesel·Where the value comes from Current API reference
gearboxstring · query stringCanonical gearbox group from `/api/gearboxes`.
Example Automatic·Where the value comes from Current API reference
year_frominteger · query stringLower bound on registration year, inclusive.
Example 2018·Where the value comes from Current API reference
year_tointeger · query stringUpper bound on registration year, inclusive.
Example 2024·Where the value comes from Current API reference
production_year_frominteger · query stringLower bound on production year, inclusive. `production_year` falls back to the registration year where the source publishes no build year, so missing build-year evidence falls back to the registration-year dimension.
Example 2018·Where the value comes from Current API reference
production_year_tointeger · query stringUpper bound on production year, inclusive.
Example 2024·Where the value comes from Current API reference
kilometers_frominteger · query stringLower bound on mileage in kilometres.
Example 0·Where the value comes from Current API reference
kilometers_tointeger · query stringUpper bound on mileage in kilometres.
Example 150000·Where the value comes from Current API reference
price_frominteger · query stringLower bound on the public EUR price.
Example 1000·Where the value comes from Current API reference
price_tointeger · query stringUpper bound on the public EUR price.
Example 30000·Where the value comes from Current API reference
archived_fromstring · query stringOnly lots archived on or after this date (`YYYY-MM-DD`). Anything else is a `400`.
Example 2026-07-01·Where the value comes from Current API reference
archived_tostring · query stringOnly lots archived on or before this date (`YYYY-MM-DD`). Inclusive of the whole day named.
Example 2026-08-31·Where the value comes from Current API reference
vinstring · query stringExact full-VIN filter. Punctuation and case are ignored. A value that is not a valid 17-character VIN is a `400`. VIN coverage varies; query /api/archive/stats before relying on it.
Example WBA8E9G50GNU12345·Where the value comes from Current API reference
sortstring · query stringResult ordering.
Example archived_desc·Where the value comes from Current API reference
limitinteger · query stringPage size. Capped at `pagination.max_limit` from `GET /api/contract` (100 by default); larger values are clamped down rather than rejected. Do not combine with `page_size` — that is a `400`.
Example 20·Where the value comes from Current API reference
offsetinteger · query string0-based row offset. Do not combine with `page` — that is a `400`. Bounded by `pagination.max_offset` (5000 by default) on archive, catalog, top-offers and classifieds; /api/search and /api/listVehicles have no offset cap.
Example 0·Where the value comes from Current API reference
pageinteger · query string1-based page number; maps to `offset = (page - 1) * limit`. Do not combine with `offset`.
Example 1·Where the value comes from Current API reference
page_sizeinteger · query stringAlias for `limit`. Do not combine with `limit`.
Example 20·Where the value comes from Current API reference
include_totalboolean · query string`false` returns `total: null` and skips the count, which is faster.
Example true·Where the value comes from Current API reference
Example requests
GET https://api.thecarapi.com/api/archive/search?site=japan&year_from=2020&limit=20GET https://api.thecarapi.com/api/archive/search?brand=bmw&archived_from=2026-09-01Example response
{
"success": true,
"results": [],
"total": 0,
"limit": 20,
"offset": 0,
"sort": "archived_desc",
"page": 1,
"page_size": 20,
"total_pages": 0,
"max_page": 0,
"contract_version": "2026-09-03"
}One archived auction in full
Requires the archive scope.
Parameters
site_slugstring · in the URL pathrequiredExample openlane·Where the value comes from Current API reference
auction_idinteger · in the URL pathrequiredThe source's auction id, as published on the search card.
Example 38112900·Where the value comes from Current API reference
Example request
GET https://api.thecarapi.com/api/archive/auction/encar/38112900Example response
{
"success": true,
"auction": {
"site_name": "encar",
"auction_id": 38112900,
"auction_id_str": "38112900",
"archived": true,
"archived_at": "2026-09-01T12:00:00",
"final_price": null
},
"contract_version": "2026-09-03"
}Archive coverage per source
Requires the archive scope.
Example request
GET https://api.thecarapi.com/api/archive/statsExample response
{
"success": true,
"total": 0,
"archived_from": null,
"archived_to": null,
"sources": [],
"contract_version": "2026-09-03"
}