The CarQuery API no longer answers. Here's what replaces it

On November 11, 2026, carqueryapi.com did not serve the CarQuery API. Here is what its getMakes, getModels, getYears and getTrims calls did, which of them we replace, and the code to swap them.

If you're here, something that used to work stopped. Maybe a make and model dropdown on a WordPress site went blank, or a script that calls carqueryapi.com/api/0.3/ now fails with a certificate error or a 404.

It isn't your code. This page shows what we found when we checked CarQuery today, which part of its API has a working replacement, and how to swap the calls in a few minutes.

What happened to carqueryapi.com

We checked the site and the API directly on November 11, 2026:

What we requested What came back
The home page, in Chrome A browser security error: the server presents a certificate issued for *.naturalinsight.com, not for carqueryapi.com
The same page, ignoring the certificate A redirect to a login page (login.cfm) of another application
The API, /api/0.3/?cmd=getMakes 404 Not Found
Plain http:// A redirect to the HTTPS address

So a CarQuery call today fails in one of two ways: in a browser or any HTTP client that checks certificates (the default almost everywhere), with a certificate error; and if the check is turned off, with a 404. We don't know why the site changed, whether it's temporary, or who runs the server now, and we won't guess. If CarQuery comes back, we'll say so here.

Search engines have noticed too: carqueryapi.com no longer shows up in the top results for "carquery api" (SemRush, US, November 11, 2026), where it ranked first in early October.

What the CarQuery API did

CarQuery was a JSON API at https://www.carqueryapi.com/api/0.3/, called without a key and driven by a cmd parameter. The open-source CarQuery client on GitHub shows the calls and fields its users relied on:

CarQuery call What it returned Replacement
cmd=getYears The first and last year in the database (min_year, max_year) Per model: years_on_record on VehiclesDB
cmd=getMakes Makes for a year, with an id, a name, a "common" flag and a country VehiclesDB GET /makes
cmd=getModels Model names for a make and year, with optional sold_in_us and body filters VehiclesDB GET /makes/{make}/models
cmd=getTrims Every trim with about 40 spec fields: engine, power, torque, fuel, drive, transmission, dimensions, weight, consumption CarAPI or API Ninjas (paid); not VehiclesDB
cmd=getModel One trim's full detail The same

A year, make and model form needs only the first three, and those we replace, for free. The trims and specs we don't have, and we'd rather say it now than after you sign up.

getMakes and getModels on VehiclesDB

VehiclesDB is a make and model catalog built from the official vehicle registers of 18 countries, with 16,443 models across 972 makes: cars, motorcycles, mopeds, vans, trucks and buses. Two calls replace CarQuery's two most used ones.

Where CarQuery's getMakes gave you the makes, with sold_in_us=1 for the US ones:

curl "https://www.carqueryapi.com/api/0.3/?cmd=getMakes&year=2018&sold_in_us=1"

you now call:

curl "https://vehiclesdb.com/api/v1/makes?kind=car&country=us" \
  -H "Authorization: Bearer vdb_pk_YOUR_KEY"
{
  "makes": [
    { "name": "Acura", "slug": "acura", "kinds": ["car"], "aliases": [],
      "logo_url": "https://vehiclesdb.com/api/v1/makes/acura/logo" },
    { "name": "Alfa Romeo", "slug": "alfa-romeo", "kinds": ["car"], "aliases": ["Alfa"],
      "logo_url": "https://vehiclesdb.com/api/v1/makes/alfa-romeo/logo" },
    ...
  ],
  "count": 75,
  "dataset_version": "2026.11.9"
}

And where getModels gave you a make's models:

curl "https://www.carqueryapi.com/api/0.3/?cmd=getModels&make=honda&year=2018&sold_in_us=1"

you call:

curl "https://vehiclesdb.com/api/v1/makes/honda/models?kind=car&country=us" \
  -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 }, "aliases": [],
      "forms": ["2D Accord", "4D Accord", "5D Accord", "Accord Touring", "Accord Wagon"] },
    ...
  ],
  "count": 25,
  "dataset_version": "2026.11.9"
}

Those responses are real, from our API, trimmed with ... (each one also carries an attribution object). The count is what the data held on that date and moves with each release. Add order=popular to either call for the most registered first instead of A to Z.

Both calls cost 0 credits. The key starts with vdb_pk_: it's a public key, made to sit in your page's source where your CarQuery calls used to be, and you get one with a free account, no card. If you'd rather not call an API at all, the whole list is free with an account as CSV, JSON or SQLite.

Field by field

If your code reads CarQuery's fields, here's where each one went:

CarQuery field VehiclesDB field
Makes[].make_id ("ford") makes[].slug ("ford")
Makes[].make_display ("Ford") makes[].name
Makes[].make_is_common order=popular (most registered first)
Makes[].make_country Not in these calls
Models[].model_name models[].name (and models[].slug for your value)
Models[].model_make_id make.slug
sold_in_us=1 country=us
body=SUV models[].body_type ("suv"), on cars
Years.min_year, max_year years_on_record.first, .last

Two differences to know before you ship:

  • Years. CarQuery filtered makes and models by model year. We don't have a per-year list: each model has years_on_record, its first and last year of first registration in the official registers (null when they have none). That's enough to offer a sensible year list for a model, but registration years are not model years. For exact US model years, the free NHTSA vPIC API has GetModelsForMakeYear.
  • More than cars. CarQuery was cars. Change kind=car to motorcycle, van, truck or bus and the same two calls cover those, so one key covers, for example, every Honda from cars to motorcycles.

Trims and specs: who sells them now

If your integration called getTrims for engine sizes, power, dimensions or fuel economy, we can't replace that. Two APIs that can, as their own sites describe them on November 11, 2026:

  • CarAPI sells year, make and model data back to 1900 from $199 a year, with trims, engines and other specs from 1990 on its $299 a year Premium plan. It's focused on US cars.
  • API Ninjas has a cars API that returns generation, engine, power, transmission and a full spec sheet per car; that endpoint is marked "Premium only".

Prices change, so check their pages before you decide. Our comparison of vehicle data providers covers more options by job.

Swap the calls

Most CarQuery tutorials built a make select that fills a model select. Here's the same form on VehiclesDB, in plain JavaScript:

<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")

  // was: cmd=getMakes&sold_in_us=1
  get("/makes?kind=car&country=us&order=popular").then(({ makes }) => {
    for (const m of makes) make.add(new Option(m.name, m.slug))
  })

  // was: cmd=getModels&make=...&sold_in_us=1
  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&country=us`)
    for (const m of models) model.add(new Option(m.name, m.slug))
  })
</script>

From a server, in Python, the same two calls:

import requests

API = "https://vehiclesdb.com/api/v1"
HEADERS = {"Authorization": "Bearer vdb_pk_YOUR_KEY"}

# was: requests.get(CARQUERY, params={"cmd": "getMakes", "sold_in_us": 1})["Makes"]
makes = requests.get(f"{API}/makes", params={"kind": "car", "country": "us"}, headers=HEADERS).json()["makes"]

# was: params={"cmd": "getModels", "make": "honda", "sold_in_us": 1} -> ["Models"]
models = requests.get(f"{API}/makes/honda/models", params={"kind": "car", "country": "us"}, headers=HEADERS).json()["models"]

for m in models:
    print(m["name"], m["years_on_record"])

Or skip the code: the make and model dropdown is this form as one script tag, with search and logos, and it's free. 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.

If you stored CarQuery ids

CarQuery's make_id was already a slug like ford, and VehiclesDB slugs look the same, so most stored makes carry over as they are. Models are where it pays to move to stable ids: every VehiclesDB model has a canonical id like car/honda/accord (the Honda Accord), and when a model is renamed or merged its old id stays in former_ids, so an id you store today keeps working. If you have years of free-text make and model values from the CarQuery era, the resolve endpoint maps each one to a canonical id with a confidence score. Every account gets 100 free credits to try it.

The make and model calls above are the same ones the Edmunds API alternative uses, if you're also moving off that older API.

Questions people ask

Is the CarQuery API still working?

Not when we checked on November 11, 2026. The domain carqueryapi.com answered with a security certificate issued for a different company's domain, so browsers refuse to open it, and the API path /api/0.3/ answered 404 Not Found. We don't know why, and we'll update this page if it comes back.

What is the best free alternative to the CarQuery API?

For the make and model lists that most CarQuery integrations used, VehiclesDB's /makes and /makes/{make}/models calls cost 0 credits with a free public key, and the whole list is free with an account under CC BY 4.0. NHTSA vPIC is also free, for vehicles sold in the US.

Does VehiclesDB have CarQuery's trims and specs?

No. We have no trims, engine figures, dimensions, weights or fuel consumption, which is what getTrims and getModel returned. For those, CarAPI sells trims and specs for US cars, and API Ninjas sells a cars API with full spec sheets on its premium plans.

Can I still filter by year like CarQuery's getMakes?

Not per year. Each VehiclesDB model carries years_on_record, the first and last year the official registers record it as first registered, which is enough to build a year list for a model. If you need exact US model years, NHTSA vPIC's GetModelsForMakeYear has them.

What replaces CarQuery's sold_in_us filter?

The country parameter: country=us returns the makes and models that appear in the US data we hold. It means 'on record in that country', not 'currently on sale there'.