Four official queries, one exact identity, explicit bounds, and a documented test that separates “the source returned nothing” from “the source did not answer”.
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
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.
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
There is no stored copy of the evidence behind these pages. Each lookup queries the official APIs at request time; source responses are briefly cached (about an hour for source responses, fifteen minutes for the evidence endpoint, a day for the model-name suggestion lists) purely to avoid hammering the upstream services. A correction made upstream therefore appears here within that window.
Which pages become permanent
The lookup tool covers any make, model and year. Permanent indexable pages are a separate decision: 5 model-year files are published, each individually reviewed for exact identity, source rights and empty-state behaviour, and chosen to cover different cases — mainstream, a comparator, an electric vehicle, a 1984 legacy vehicle and one with a verified empty recall result. The page renderer, the robots directives and the XML sitemap all read the same list, so a page that is not published cannot appear in the sitemap and a route that is not on the list returns a real 404.
Limits to hold on to
A complaint is an allegation, not a defect finding.
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.
Only US sources contribute to US claims. UK MOT, Canadian, New Zealand and European records are excluded.