Which wiring harness, dash kit, steering-wheel-control adapter, reverse camera or CarPlay retrofit module fits a given car? This repo is the open client and dataset for an API that answers that in one request.
- 483,653 vehicle-to-part fitment links
- 64,820 vehicles, model years 1995–2026, across 140 makes
- 20,874 parts in 11 categories
- Normalized from manufacturer application data — Metra, Connects2, PAC, Scosche, Crux, Aerpro, iDatalink, CARAV and others — into one vehicle taxonomy
Docs: https://ymmfit.com/fitment-api · OpenAPI: openapi.json ·
Coverage: https://ymmfit.com/fitment-api/coverage
TecDoc covers mechanical and service parts — brakes, filters, suspension. This covers 12V installation fitment: harnesses, fascias, SWC adapters, antenna adapters, cameras, CarPlay retrofits. Different data, no overlap, and no TecDoc licence is required to use any of it.
If you have ever tried to answer "will this head unit fit a 2013 Golf?" from a manufacturer PDF, this is the data you were looking for.
# Everything that fits a 2013 VW Golf
curl "https://ymmfit.com/v1/parts?make=vw&model=golf&year=2013"
# Just the steering-wheel-control adapters
curl "https://ymmfit.com/v1/parts?make=vw&model=golf&year=2013&category=swc"{
"vehicle": { "year": 2013, "make": "VW", "model": "Golf" },
"count": 23,
"parts": [
{
"mpn": "CAVW02",
"brand": "Aerpro",
"category": "swc",
"title": "Infodapter to suit Volkswagen",
"note": "MK7",
"source": "aerpro"
}
]
}That note is the qualifier — the condition the fitment depends on. A 2013 Golf
spans two chassis generations and the adapter differs between them. Most fitment
exports drop this field; it is the one that decides whether the part actually works.
data/vehicles.csv — 64,820 rows, every year/make/model
in the catalog. data/makes.csv — 140 makes with counts
and year ranges.
Free to use, including commercially — see data/LICENSE. Building
a Year/Make/Model dropdown should not require a contract, and the vehicle list is
not the hard part to compile — the part-to-vehicle links are.
The compilation is given away outright. What it deliberately does not do is claim rights over the underlying source catalogues, which belong to the manufacturers who published them — so no Creative Commons licence is applied and you are responsible for your own compliance. The terms say exactly that, in plain language.
The same data is live at /v1/makes and /v1/models, unmetered and without a key.
| Make | slug | Models | Model-years | Years |
|---|---|---|---|---|
| Toyota | toyota |
479 | 4,748 | 1995–2026 |
| Mercedes | mercedes |
589 | 4,625 | 1995–2026 |
| BMW | bmw |
503 | 4,481 | 1995–2026 |
| Ford | ford |
444 | 3,980 | 1995–2026 |
| VW | vw |
335 | 3,276 | 1995–2026 |
| Lexus | lexus |
304 | 2,578 | 1995–2026 |
| Chevrolet | chevrolet |
271 | 2,465 | 1995–2026 |
| Audi | audi |
223 | 2,388 | 1995–2026 |
| Nissan | nissan |
216 | 2,346 | 1995–2026 |
| Hyundai | hyundai |
162 | 1,752 | 1995–2026 |
| Honda | honda |
164 | 1,534 | 1995–2026 |
| Dodge | dodge |
111 | 1,447 | 1995–2026 |
npm install @rokasmen/car-audio-fitmentimport { makes, models, parts, FitmentError } from "@rokasmen/car-audio-fitment";
const fits = await parts({ make: "vw", model: "golf", year: 2013, category: "harness" });
console.log(fits.count, "harnesses fit");
try {
await parts({ make: "audi", model: "a4", year: 2018 });
} catch (e) {
if (e instanceof FitmentError && e.code === "outside_sandbox") {
// The make IS in the catalog — this is an access limit, not missing data.
console.log(e.message);
}
}Zero dependencies. Node 18+ or any modern browser.
| File | What it does |
|---|---|
examples/what-fits-my-car.mjs |
Groups every part for one vehicle by category |
examples/build-a-ymm-dropdown.html |
A working YMM picker in one file, no build step |
examples/load-the-dataset.py |
Reads the CSV offline, no network |
| Endpoint | Returns | Key needed |
|---|---|---|
GET /v1/meta |
Catalog totals, categories, sources, sandbox coverage | No |
GET /v1/makes |
All 140 makes, with model counts and year ranges | No |
GET /v1/models?make= |
Every model under a make, with its years | No |
GET /v1/parts?make=&model=&year= |
Parts that fit one vehicle | Sandbox: no |
Plain GET, JSON responses, CORS open. Base URL https://ymmfit.com/v1.
Access. The taxonomy is complete and free. Fitment is open for BMW, Chevrolet, Ford, Mercedes, Toyota, VW from model year 2012 onward (98,218 links). Anything beyond that needs a key — request one.
A make that exists in the catalog but sits outside the sandbox returns
403 outside_sandbox, never an empty list, so restricted access is never
mistaken for missing data.
| Category | What it is | Parts |
|---|---|---|
dashkit |
Dash kit / fascia panel | 7,480 |
carplay |
CarPlay / Android Auto retrofit | 6,894 |
speaker |
Speaker adapter | 2,633 |
harness |
Wiring harness / ISO adapter | 1,442 |
camera |
Reverse camera interface | 1,310 |
swc |
Steering-wheel-control adapter | 593 |
antenna |
Antenna / DAB adapter | 309 |
amp |
Amplifier integration | 134 |
aux |
AUX / USB adapter | 76 |
parking |
Parking-sensor adapter | 2 |
dab |
DAB module | 1 |
Every fitment link carries a source naming the manufacturer application guide
it was normalized from.
| Source | Fitment links |
|---|---|
| metra | 114,956 |
| connects2 | 89,677 |
| carav | 48,239 |
| pac | 41,540 |
| carplay_stores | 35,833 |
| aerpro | 26,084 |
| metra_doc | 23,258 |
| housebrands | 17,460 |
| focal_inside | 17,415 |
| crux | 16,249 |
| idatalink | 11,793 |
| scosche_doc | 10,067 |
- Coverage is deepest for mainstream European and North American models from roughly 2005 onward. Pre-2000 vehicles, commercial vans and low-volume models are thinner.
- There is no
regionparameter. Both EU and US vehicles are in the catalog — a Cadillac Escalade and a VW Golf sit side by side — but per-row market tagging is not yet reliable enough to filter on. Shipping the parameter would mean quietly returning the wrong set, so it is withheld until the tagging is fixed. - Fitment is installation compatibility as published by the part manufacturer,
not a guarantee for a specific factory-option combination. That is what
noteis for; where it is absent, the fitment is unconditional as published. - Some model names still carry multi-model strings from their source guides
(
Silverado/gmc Sierra). Real data, imperfectly normalized.
Code — MIT (see LICENSE). The dataset in data/ is free to use commercially, with no rights asserted over the underlying source catalogues — see data/LICENSE.