VRM lookup API: decode a UK number plate or VIN

Last updated: 9 November 2026

POST a UK registration (vrm) or a VIN to /api/v1/vehicle/decode with your API key and you get the vehicle's identity and registration record as JSON: make, model, variant, engine, power, fuel, gearbox, body, keepers, plate changes, colour history, import and export, scrapped status and vehicle tax rates. It costs 16p a call on Pay As You Go, down to 6p on Enterprise. Sandbox keys are free and answer for the published test registrations (GET /v1/sandbox/vrms, no key needed), so you can build the whole integration before paying for a call.

The registration can be sent with or without spaces (2 to 8 letters and digits). A VIN can be 5 to 17 characters, without I, O or Q. When both are sent, the VIN is used.

Fields we do not hold for a vehicle are left out of the answer, never sent as null, so a missing field means "not held".

Prices per call

Prices in force today, per call, by package. Errors are not charged except where the API reference says so. Live keys only: sandbox calls are free.

EndpointPay As You GoStarterProEnterprise
Vehicle decode
POST /api/v1/vehicle/decode
Make, model, engine, keepers, plate changes, colour, import, export, scrapped and tax rates for a registration or VIN.
Daily cap per account: 300 / 1,000 / 3,000 / 10,000
16p10p8p6p
Tax and MOT
POST /api/v1/vehicle/tax-mot
Tax status, MOT status and the full MOT history for a registration.
5p4p3p2p
Specification
POST /api/v1/vehicle/spec
The factory standard equipment for the model and the optional extras offered for it.
Daily cap per account: 300 / 1,000 / 3,000 / 10,000
22p20p18p15p

Pay As You Go has no monthly fee (top up from £10). On Starter, Pro, Enterprise the monthly fee comes back as plan credit to spend on calls, expiring at the end of each monthly billing period. Package limits per second, minute and day are on the pricing page.

Example request and answer

Every endpoint is a JSON POST under https://www.dealerpricing.co.uk/api with your key in the X-API-Key header. This request uses a sandbox test value, so it is free with a sandbox key.

curl -X POST https://www.dealerpricing.co.uk/api/v1/vehicle/decode \
  -H "X-API-Key: your_sandbox_key" \
  -H "Content-Type: application/json" \
  -d '{"vrm":"SA22TLZ"}'

The answer (long lists shortened; fields not held for a vehicle are left out):

{
  "success": true,
  "data": {
    "vehicle": {
      "vrm": "SA22TLZ",
      "make": "Volkswagen",
      "model": "Polo",
      "model_description": "Polo Life TSi",
      "variant": "Life TSI",
      "series": "AW/BZ",
      "year": 2022,
      "registration_date": "2022-04-23",
      "date_of_manufacture": "2022-04-23",
      "colour": "BLUE",
      "fuel_type": "PETROL",
      "powertrain_type": "ICE",
      "transmission": "Manual",
      "gears": 5,
      "drive_type": "4x2",
      "body_type": "Hatchback",
      "wheelplan": "2 AXLE RIGID BODY",
      "engine_capacity_cc": 999,
      "engine_capacity_litres": 1,
      "engine_number": "DLAC899781",
      "vin": "WVWZZZAWZNU040975",
      "doors": 5,
      "seats": 5,
      "co2_emissions": 106,
      "euro_status": "6d",
      "power_bhp": 93.7,
      "power_kw": 70,
      "torque_nm": 175,
      "top_speed_mph": 116,
      "fuel_consumption_combined": 54.3,
      "gross_weight_kg": 1620,
      "kerb_weight_kg": 1097,
      "mass_in_service_kg": 1219,
      "previous_keepers": 0,
      "colour_changes": 0,
      "registration": {
        "first_registered": "2022-04-23",
        "first_registered_uk": "2022-04-23",
        "used_before_first_registration": false,
        "cherished_transfer_marker": false
      },
      "keeper_history": [],
      "v5c_issue_dates": [
        "2022-04-23"
      ],
      "plate_changes": [],
      "colour_history": {
        "current": "BLUE",
        "original": "BLUE",
        "changes": 0
      },
      "import_export": {
        "is_imported": false,
        "imported_from_ni": false,
        "imported_from_outside_eu": false,
        "is_exported": false
      },
      "scrapped": {
        "is_scrapped": false,
        "is_unscrapped": false,
        "certificate_of_destruction": false
      },
      "tax": {
        "co2_g_per_km": 118,
        "first_year_twelve_months_gbp": 455,
        "standard_six_months_gbp": 110,
        "standard_twelve_months_gbp": 200,
        "premium_vehicle_six_months_gbp": 352,
        "premium_vehicle_twelve_months_gbp": 640
      },
      "dvla": {
        "make": "VOLKSWAGEN",
        "model": "POLO LIFE TSI",
        "body_type": "5 DOOR HATCHBACK",
        "fuel_type": "PETROL",
        "wheelplan": "2 AXLE RIGID BODY",
        "engine_capacity_cc": 999,
        "power_kw": 70,
        "seats": 5,
        "gross_weight_kg": 1620,
        "mass_in_service_kg": 1219,
        "power_to_weight_ratio": 0,
        "max_braked_trailer_mass_kg": 1000,
        "max_unbraked_trailer_mass_kg": 580
      },
      "power_ps": 95,
      "torque_lb_ft": 129.2,
      "top_speed_kph": 187,
      "acceleration_0_100_kph": 10.8,
      "fuel_consumption_combined_l_100km": 5.2,
      "country_of_origin": "South Africa",
      "model_introduction_date": "2021-07-05",
      "model_start_date": "2021-10-13",
      "classification": {
        "type_approval_category": "M1",
        "vehicle_class": "Car",
        "taxation_class": "Car",
        "market_sector_code": "AA"
      },
      "engine": {
        "code": "1.0 95PS EU6",
        "manufacturer": "Volkswagen Cars",
        "cylinders": 3,
        "cylinder_arrangement": "Inline",
        "aspiration": "Turbocharged",
        "valves_per_cylinder": 4,
        "valve_gear": "DOHC",
        "bore_mm": 74,
        "stroke_mm": 76,
        "location": "Front"
      },
      "dimensions": {
        "length_mm": 4074,
        "width_mm": 1751,
        "height_mm": 1451,
        "wheelbase_mm": 2552
      },
      "weights": {
        "gross_combined_weight_kg": 1620,
        "gross_train_weight_kg": 2620
      },
      "body": {
        "wheelbase_type": "Short Wheelbase",
        "axles": 2,
        "fuel_tank_capacity_litres": 40,
        "platform_name": "MQB A0",
        "platform_shared_across_models": true
      },
      "safety": {
        "ncap_star_rating": 5,
        "ncap_adult_percent": 96,
        "ncap_child_percent": 85,
        "ncap_pedestrian_percent": 76,
        "ncap_safety_assist_percent": 59
      },
      "warranty": {
        "manufacturer_warranty_months": 36,
        "manufacturer_warranty_miles": 60000
      },
      "raw": {}
    }
  },
  "meta": {
    "request_id": "req_3f9a1c0d2b7e4a5f6c8d9e01",
    "cost_pence": 16,
    "balance_pence": 984,
    "is_sandbox": false
  }
}

What you get

vehicle.make
Make, model, model_description and variant
vehicle.year
Year, registration_date and date_of_manufacture
vehicle.engine_capacity_cc
Engine size, fuel_type, transmission, gears and drive_type
vehicle.power_bhp
Power (bhp and kW), torque, top speed and fuel consumption
vehicle.co2_emissions
CO2 emissions and euro_status
vehicle.vin
VIN and engine_number
vehicle.previous_keepers
Number of previous keepers, with keeper_history dates
vehicle.plate_changes
Plate changes: previous and current registration and the date
vehicle.colour_history
Current and original colour and the number of colour changes
vehicle.import_export
Imported, imported from Northern Ireland or from outside the EU, exported
vehicle.scrapped
Scrapped and unscrapped markers with the date
vehicle.tax
CO2 band, tax band and the vehicle tax rates in pounds

Every field, with its type and meaning, is in the API reference.

What developers use it for

  • Fill a stock or part-exchange form from the registration instead of asking the customer for make, model and engine.
  • Check that a VIN matches the registration a seller gives you.
  • Flag imported, exported, scrapped and plate-changed cars before you buy.

Questions

What is a VRM lookup API?

A VRM (vehicle registration mark) lookup API takes a UK number plate and returns the vehicle it belongs to. DealerPricing's decode endpoint returns the make, model, engine, power, keepers, plate changes, colour history, import and export, scrapped markers and vehicle tax rates as JSON.

Can I look up a vehicle by VIN instead of the number plate?

Yes. Send vin instead of vrm (5 to 17 letters and digits, no I, O or Q). The same endpoint answers, at the same price. When you send both, the VIN is used.

How much does a number plate lookup cost?

16p a call on Pay As You Go, down to 6p on Enterprise. Packages: Pay As You Go 16p, Starter 10p, Pro 8p, Enterprise 6p. A vehicle that is not found is not charged.

Is there a free test key?

Sandbox keys are free and answer for the published test registrations (GET /v1/sandbox/vrms, no key needed), so you can build the whole integration before paying for a call.

Does the lookup include the MOT history?

No. The MOT history and tax status come from the tax and MOT endpoint, /api/v1/vehicle/tax-mot, which costs 5p a call on Pay As You Go.

Does it return the owner's name or address?

No. Keeper data is limited to the number of previous keepers and the dates keepers changed. No personal details of a keeper are returned.

Documentation and next steps