contract 2026-10-05
Endpoints

CarValue

The CarValue tool over the API: value a car by VIN or by make and model, and read a VIN from a photo. Scope: carvalue, granted per contract, and the key’s account must also be granted CarValue.

GET

/api/carvalue/access

Whether the key’s account may use CarValue.

Requires the carvalue scope.

Example request

Request
GET https://api.thecarapi.com/api/carvalue/access

Example response

json
{
  "success": true
}
GET

/api/carvalue/options

What the valuation form can offer: makes, a make’s models, or a model’s years, engines, fuels, gearboxes and countries.

Requires the carvalue scope.

Parameters

brand_idstring · query string

With it, that make’s models.

Example 12·Where the value comes from /api/carvalue/options -> makes

model_idstring · query string

With brand_id, the model’s years, engines, fuels, gearboxes and countries.

Example 340·Where the value comes from /api/carvalue/options?brand_id=12 -> models

Example requests

Request
GET https://api.thecarapi.com/api/carvalue/options
GET https://api.thecarapi.com/api/carvalue/options?brand_id=12
GET https://api.thecarapi.com/api/carvalue/options?brand_id=12&model_id=340

Example response

json
{
  "success": true,
  "makes": [
    {
      "id": 12,
      "name": "BMW"
    }
  ]
}
GET

/api/carvalue/valuation

What a car is worth, by VIN or by make and model.

Requires the carvalue scope.

Parameters

vinstring · query string

Decoded to make, model, year, engine, fuel and gearbox, which then override those parameters.

Example WBA8E9G50GNU12345·Where the value comes from The car’s VIN, or POST /api/carvalue/scan.

brand_id / model_idstring · query string

The make and model, when no VIN is given.

Example 12 / 340·Where the value comes from /api/carvalue/options

yearinteger · query string

Registration year.

Example 2019·Where the value comes from The car being valued.

year_flexinteger · query string

Years either side of year for the range block. Default 1, maximum 5.

Example 1·Where the value comes from How wide a range you want.

enginenumber · query string

Litres.

Example 2.0·Where the value comes from The car being valued.

engine_flexnumber · query string

Litres either side of engine. Default 0.2, maximum 1.

Example 0.2·Where the value comes from How wide a range you want.

fuel / gearboxstring · query string

Fuel, and Automatic or Manual.

Example Diesel / Automatic·Where the value comes from /api/carvalue/options

conditionenum · query string

Default normal.

Example normal·Where the value comes from normal, damaged or any.

mileageinteger · query string

Adjusts the estimate.

Example 120000·Where the value comes from The odometer in km.

countrystring · query string

The car’s country.

Example DE·Where the value comes from /api/carvalue/options

trend_monthsinteger · query string

Maximum 24.

Example 12·Where the value comes from How much history to chart.

offers_kind / offers_offsetstring / integer · query string

Limit the reference offers to one kind of price, and page through them 24 at a time.

Example auction / 24·Where the value comes from Your offer list state.

Example requests

Request
GET https://api.thecarapi.com/api/carvalue/valuation?vin=WBA8E9G50GNU12345&mileage=120000
GET https://api.thecarapi.com/api/carvalue/valuation?brand_id=12&model_id=340&year=2019&fuel=Diesel

Example response

json
{
  "success": true,
  "valuation": {
    "exact": {},
    "range": {},
    "countries": [],
    "trend": {},
    "time_to_sell": null,
    "offers": []
  },
  "vehicle": {
    "vin": "WBA8E9G50GNU12345",
    "make": "BMW",
    "model": "320d",
    "year": 2019
  }
}

What you get back

valuationobject

Retail, auction and buy-now prices, per country, trend, time to sell, and reference offers 24 per page from offers_offset — the same document as /api/market/valuation, plus the offers.

vehicleobject | null

What the VIN decoded to; null without a VIN.

POST

/api/carvalue/scan

Read VINs from one photo or camera frame.

Requires the carvalue scope.

Parameters

bodybinary · JSON bodyrequired

The image itself as the request body, Content-Type image/jpeg or image/png, at most 1 MB (413 above).

Example @frame.jpg·Where the value comes from A camera frame or photo of the VIN plate or paperwork.

Example request

Request
curl -sS -X POST -H "X-API-Key: $API_KEY" -H "Content-Type: image/jpeg" --data-binary @frame.jpg "https://api.thecarapi.com/api/carvalue/scan"

Example response

json
{
  "success": true,
  "reads": [
    {
      "vin": "WBA8E9G50GNU12345",
      "quad": [
        [
          0.21,
          0.44
        ],
        [
          0.78,
          0.44
        ],
        [
          0.78,
          0.52
        ],
        [
          0.21,
          0.52
        ]
      ],
      "votes": 2
    }
  ]
}

What you get back

reads[]object[]

Up to three VINs, best first, each with quad (where it is printed, as fractions of the image size, or null) and votes (how many agreeing reads a scanner should collect before accepting it).