The Edmunds API is gone. Here's what to use instead

What happened to the Edmunds developer API, what each part of it was used for, and a working replacement for the make and model calls, with code.

Dotted illustration of a detour road sign beside an empty highway

If you're here, you probably followed a tutorial, a Stack Overflow answer or an old WordPress plugin that calls api.edmunds.com, and it doesn't work. You can't get a key, or the key you had returns errors.

You're not doing anything wrong. The public Edmunds API is gone, and it isn't coming back. The good news is that most of what people used it for has a replacement today, some of it free. This page goes through what happened, which replacement fits which part of the old API, and how to migrate a make and model dropdown in a few minutes.

What happened to the Edmunds API

For years Edmunds ran a developer API with free access to car and dealer data, which is why so many tutorials from that era use it. Its archived documentation is still online.

By January 2018 developers were sharing the news that Edmunds was closing its open API service. Today developer.edmunds.com is a portal for Edmunds partners and dealerships: content is served with an API key "provided for your dealership", and there's no self-serve signup for developers.

So when you search "how to get an Edmunds API key", the honest answer is: unless you're an Edmunds partner or a dealer in their program, you can't.

What you were using it for

The old Vehicle API described a car as five levels, make → model → year → trim → style, and offered a lot on top of that. Here's each piece and what replaces it now:

What the Edmunds API gave you Old endpoint (v2) Replacement today
List of makes and models /api/vehicle/v2/makes VehiclesDB (free), NHTSA vPIC (free, US)
Model years for a model /api/vehicle/v2/{make}/{model}/years NHTSA vPIC (US), CarAPI
Trims, styles, engines, options /api/vehicle/v2/styles/{id} CarAPI, CarsXE, vehicledatabases.com
VIN decoding /api/vehicle/v2/vins/{vin} NHTSA vPIC (US, free), Vincario, CarsXE
True Market Value® and cost to own Price API No open equivalent; MarketCheck and Auto.dev sell market pricing
Photos Media API CarsXE, Auto.dev, VehiclesDB images
Reviews and editorial content Editorial API No replacement; that's Edmunds' own content

The rest of this page focuses on the first row, because it's the one most tutorials used and the one we can replace completely. For the others, our comparison of vehicle data providers lists prices and coverage, checked on each vendor's site.

Makes, models and years: a free replacement

VehiclesDB is a make and model catalog built from official vehicle data in 18 countries (15 national registration registers, one Swiss canton's register and the US and Canadian fuel economy listings): 15,068 models across 934 makes, for cars, motorcycles, mopeds, vans, trucks and buses. For the make and model part of what Edmunds did, it's a drop-in, and in two ways it covers more than Edmunds ever did: it isn't limited to the US market, and it isn't limited to cars.

The calls map one to one. Where Edmunds gave you:

curl "http://api.edmunds.com/api/vehicle/v2/makes?fmt=json&api_key=YOUR_KEY"

you now call:

curl "https://vehiclesdb.com/api/v1/makes?kind=car&order=popular&limit=3" \
  -H "Authorization: Bearer vdb_pk_YOUR_KEY"
{
  "makes": [
    { "name": "Honda", "slug": "honda", "kinds": ["car", "motorcycle", "moped", "van"] },
    { "name": "Mercedes-Benz", "slug": "mercedes-benz", "kinds": ["car", "van", "truck", "bus"] },
    { "name": "Suzuki", "slug": "suzuki", "kinds": ["car", "motorcycle", "moped", "van"] }
  ],
  "count": 3,
  "dataset_version": "2026.10.3"
}

And for a make's models, filtered to cars sold in the US, most registered first:

curl "https://vehiclesdb.com/api/v1/makes/honda/models?kind=car&country=us&order=popular" \
  -H "Authorization: Bearer vdb_pk_YOUR_KEY"
{
  "make": { "name": "Honda", "slug": "honda" },
  "models": [
    { "name": "Accord", "slug": "accord", "kind": "car", "body_type": "sedan", "popularity_decile": 2,
      "years_on_record": { "first": 1977, "last": 2026 } },
    { "name": "CR-V", "slug": "cr-v", "kind": "car", "body_type": "suv", "popularity_decile": 2,
      "years_on_record": { "first": 1997, "last": 2026 } },
    ...
  ]
}

The field mapping, if you're porting code that reads Edmunds responses:

Edmunds field VehiclesDB field
makes[].name makes[].name
makes[].niceName makes[].slug
models[].name models[].name
models[].niceName models[].slug
models[].years[] models[].years_on_record (first and last year, see below)

The key in those examples starts with vdb_pk_: it's a public key, made to sit in your page source, and the make and model endpoints cost 0 credits, so a dropdown never spends anything. You get one with a free account, no card. If you'd rather not call an API at all, the whole list is a free download as CSV, JSON or SQLite.

About years. This is the one place we're not a drop-in. Each model comes with years_on_record: the first and last year the official registers have it on record (null when they have none), which is what a make → model → year form needs to offer a sensible list of years. Those are registration years, not model years, and there is no per-year list of trims behind them; production runs are part of the enriched record on paid plans. If you need exact US model years, the free NHTSA vPIC API has them (GetModelsForMakeYear), and CarAPI sells years back to 1900.

Trims, specs and prices: who sells them now

We don't have trims, engine specs or prices, and we'd rather tell you than let you find out after signing up. If that's what your Edmunds integration did:

  • Trims and specs for US cars: CarAPI is the closest in spirit to the old Edmunds Vehicle API, with years from 1900 from $199 a year, and trims and specs from 1990 on the $299 a year Premium plan.
  • Trims and specs plus VIN, plates and market value: CarsXE and vehicledatabases.com bundle many data types behind one key.
  • Market prices and listings: MarketCheck and Auto.dev, both priced per call on top of a monthly plan.
  • True Market Value® specifically: that's Edmunds' own pricing model, and there's no public API for it anymore.

Prices and coverage for each are in the provider comparison.

Migrate a make and model dropdown in ten minutes

Most Edmunds tutorials built the same thing: a make select that fills a model select. Here's the whole thing on VehiclesDB, in plain JavaScript, using the two calls above:

<select id="make"><option value="">Make</option></select>
<select id="model" disabled><option value="">Model</option></select>

<script>
  const KEY = "vdb_pk_YOUR_KEY"
  const API = "https://vehiclesdb.com/api/v1"
  const get = (path) =>
    fetch(API + path, { headers: { Authorization: "Bearer " + KEY } }).then((r) => r.json())

  const make = document.getElementById("make")
  const model = document.getElementById("model")

  get("/makes?kind=car&order=popular").then(({ makes }) => {
    for (const m of makes) make.add(new Option(m.name, m.slug))
  })

  make.addEventListener("change", async () => {
    model.length = 1
    model.disabled = !make.value
    if (!make.value) return
    const { models } = await get(`/makes/${make.value}/models?kind=car&order=popular`)
    for (const m of models) model.add(new Option(m.name, m.slug))
  })
</script>

Or skip writing it: the make and model dropdown is exactly this as a one-line script tag, with search, logos and country filters, and it's free.

If you're on Rails, the vehicles gem ships the same data inside the gem, offline, with Vehicles.make_options and Vehicles.model_options(make) for your form helpers. No key, no network.

A note on storing the result

If your old integration stored Edmunds niceName values in your database, you'll want stable ids from now on. Every VehiclesDB model has a canonical id like car/honda/civic, and those ids are stable: when a model gets renamed or merged, the old id stays in former_ids, so an id you stored last year still points somewhere. And if you have years of messy make and model strings from the Edmunds era to clean up, the resolve endpoint maps each one to a canonical id with a confidence score and an audit trail. Every account gets 100 free credits to try it.