Offline NHTSA vehicle database. All U.S. vehicle makes and models from 1990–2026. Zero dependencies, ~189 KB on npm. No network requests needed.
Covers three vehicle types: Passenger Car, Truck, and Multipurpose Passenger Vehicle (MPV).
npm install @meterapp/vehicle-dbRequires Node.js 18+. Zero runtime dependencies — data is bundled as JSON.
import {
getVehicleTypes,
getMakes,
getModels,
getAvailableYears,
close,
} from "@meterapp/vehicle-db";
// List available vehicle types
const types = getVehicleTypes();
// => [
// { vehicleTypeId: 2, vehicleTypeName: "Passenger Car" },
// { vehicleTypeId: 3, vehicleTypeName: "Truck" },
// { vehicleTypeId: 7, vehicleTypeName: "Multipurpose Passenger Vehicle (MPV)" },
// ]
// Get all makes
const allMakes = getMakes();
// Get makes that have models in 2024
const makes2024 = getMakes({ year: 2024 });
// Get only truck makes for 2024
const truckMakes = getMakes({ year: 2024, vehicleTypeId: 3 });
// Get all Toyota models for 2024
const toyotaModels = getModels({ makeId: 474, year: 2024 });
// => [
// { modelId: 2469, modelName: "Camry", makeId: 474, makeName: "TOYOTA", vehicleTypeId: 2, vehicleTypeName: "Passenger Car" },
// { modelId: 2208, modelName: "Corolla", ... },
// ...
// ]
// Get only Ford trucks for 2024
const fordTrucks = getModels({ makeId: 460, year: 2024, vehicleTypeId: 3 });
// => [{ modelId: 1801, modelName: "F-150", ... }, ...]
// Get all available years
const years = getAvailableYears();
// => [1990, 1991, ..., 2026]
// Optional: close the DB connection when you're done
close();Returns all vehicle types in the database.
interface VehicleType {
vehicleTypeId: number; // e.g. 2
vehicleTypeName: string; // e.g. "Passenger Car"
}Returns makes, optionally filtered by year and/or vehicle type.
getMakes() // all makes
getMakes({ year: 2024 }) // makes with models in 2024
getMakes({ vehicleTypeId: 3 }) // truck makes (all years)
getMakes({ year: 2024, vehicleTypeId: 3 }) // truck makes in 2024interface Make {
makeId: number; // e.g. 460
makeName: string; // e.g. "FORD"
}Returns models, optionally filtered by year, vehicle type, and/or make.
getModels({ makeId: 474, year: 2024 }) // Toyota 2024 (all types)
getModels({ makeId: 460, year: 2024, vehicleTypeId: 3 }) // Ford trucks 2024
getModels({ vehicleTypeId: 3 }) // all trucks (all years)
getModels({ year: 2024 }) // everything in 2024interface Model {
modelId: number; // e.g. 1801
modelName: string; // e.g. "F-150"
makeId: number; // e.g. 460
makeName: string; // e.g. "FORD"
vehicleTypeId: number; // e.g. 3
vehicleTypeName: string; // e.g. "Truck"
}Returns all years present in the database, sorted ascending.
Closes the SQLite connection. Safe to call multiple times. The connection reopens automatically on the next query.
| Years | 1990 – 2026 |
| Vehicle types | 3 (Passenger Car, Truck, MPV) |
| Makes | 400 |
| Model entries | 51,270 |
| Data file | 1.2 MB (JSON) |
| npm package | 189 KB |
| npm package size | 1.5 MB |
To refresh the data from the NHTSA API:
npm run build:dbOr for a specific year range:
npm run build:db -- --start-year 2020 --end-year 2026The NHTSA API rate-limits aggressively. The build script retries failed requests, but some obscure makes may be skipped. Major manufacturers (Toyota, Honda, Ford, BMW, etc.) are always fetched successfully.
ISC