Methodology

How NHTSA safety evidence becomes a model-year file.

Bounded live queries plus reviewed bulk-import projections, one exact identity, and a documented separation between zero evidence, unavailable evidence and an official safety action.

01

Confirm the identity

The make, model and model year are checked against NHTSA vPIC (GetModelsForMakeYear). A model matches only when its official vPIC name matches your input exactly once punctuation, spacing and capitalisation are ignored. No badge is guessed, no alias is bridged and no manufacturer ownership is inferred from the make name.

02

Recalls first

NHTSA recallsByVehicle is queried for that literal make, model and model year. Every campaign returned is published in full: NHTSA campaign number, component, report-received date, summary, consequence, remedy and NHTSA's do-not-drive or park-outside flags, each linked to the official campaign page.

03

Complaints, bounded

NHTSA complaintsByVehicle supplies the complaint total, the counts of reports mentioning a crash, a fire, an injury or a death, and the six most frequently named component labels. Complaint narrative text and VIN fragments are never published, and the JSON response carries at most five recent records.

04

Investigations are reviews

The approved NHTSA ODI investigations flat-file import is matched to the same punctuation-insensitive exact make, model and model-year key. Action number, component, subject, opened/closed dates and an associated campaign number are retained; long narrative summaries are omitted. An opened investigation is not a defect finding, and a closed one is not vehicle clearance.

05

EPA configurations

FuelEconomy.gov is asked for the model menu, then up to eight matching model names, then up to twenty-four configuration records. Those records are collapsed into ranges (city, highway, combined, annual fuel cost, CO2, engine displacement, cylinders, electric range) and into distinct sets of vehicle classes, fuel types, drives and transmissions. When more variants exist than the bounded view covers, the page says so.

Empty is not the same as unavailable

NHTSA can answer an exact search with HTTP 400 while still reporting a successful, genuinely empty result. That specific payload shape is the only one treated as a verified empty source response: the status is 400, the message reports that results were returned successfully, the count is zero, and the results array is present and empty. Any other non-success response is reported as unavailable rather than as zero. A verified empty recall result means the queried source returned no matching model-level campaign at that moment. It is not safety clearance for the vehicle.

Why there is no single score

Complaint counts are raw report volumes. They rise with sales volume, vehicle age, mileage, media attention and the willingness of owners to file. Turning them into a rating would need validated vehicle-population denominators, age normalisation and a method that could be independently reproduced. None of those exist here, so ModelYearFacts publishes the separate evidence blocks and lets the reader compare like-for-like model years instead.

What is deliberately dropped

  • Complaint narrative text and any VIN fragment.
  • Owner contact and location fields.
  • Long ODI investigation summary narratives.
  • Model aliases beyond the exact vPIC canonical name.
  • Manufacturer ownership relationships, which are not inferred from make names.
  • Affiliate identifiers on outbound retailer links.

How current the data is

US dossiers still query official NHTSA and EPA APIs for bounded campaign details, complaint incident fields, identity and configurations. Cross-model search, complaint matrices, recall counts and investigation records use compact reviewed projections generated from the approved imported flat files; each page shows its projection timestamp and links the exact object register. Raw R2 is never bound to the public request path. UK MOT hubs separately ship a compact derived snapshot (make×model aggregates with a 500-test minimum), not live per-test queries and not the 109 million raw MOT rows.

Why CPSC equipment stays separate

The CPSC page selects only notices whose public heading or product name contains an explicit child-passenger, charging, lifting, tyre-care, towing, carrying or in-vehicle accessory term. It does not fuzzy-match long descriptions and does not join a consumer product to a make, model, year or VIN. CPSC remedy and company status can change, so the official notice always controls.

Which pages become permanent

US model-year files are gated on the EPA FuelEconomy.gov catalogue of vehicles sold in the US, which runs from 1984 to 2027 and yields 10,603 dossiers. UK MOT hubs use a separate gate: the compact derived MOT summary, min 500 tests, one URL per canonical make×model slug.

Limits to hold on to

  • A complaint is an allegation, not a defect finding.
  • An ODI investigation is an agency review, not by itself a defect finding or recall.
  • A model-level recall result does not establish whether one VIN is affected.
  • An empty result means only that the queried source returned no matching row at lookup time.
  • EPA fuel-cost figures are standardised estimates, not quotes or predictions for one driver.
  • US dossiers use only US sources. UK MOT statistics appear only on /mot hubs and are not mixed into NHTSA complaint or recall counts.