Vehicle Emissions Test Lookup (VIN + State)
Pricing
$100.00 / 1,000 emissions check delivereds
Vehicle Emissions Test Lookup (VIN + State)
For a VIN and a US state (plus county, where needed): does this vehicle need an emissions/smog test here? Decodes the VIN live via NHTSA's free vPIC service and joins it against a bundled ruleset covering all 50 states + DC. Charged only when confirmed.
Pricing
$100.00 / 1,000 emissions check delivereds
Rating
0.0
(0)
Developer
Kevin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
An independent tool. It is not affiliated with, endorsed by, or operated by
NHTSA, any US state government, or any state DMV/environmental agency. The
VIN decode is read live from NHTSA's own free vPIC service; each state's
emissions-testing rule is a periodically refreshed bundle built from public
sources, cited and dated in data/emissions_rules.json.
The VIN decode is live, on every run — the state rule is a bundle. A
VIN's model year, make and fuel type never change, so there is nothing to
bundle there; a state's testing rule changes at most every few years, so
re-parsing fifty different government sites inside every customer run would
buy nothing. See witnesses.py for how drift in the bundle is actually
caught.
Why this exists
Someone buying a used car, registering an out-of-state vehicle, or running
a small used-car lot faces one binary question with real cost if answered
wrong: does this specific vehicle need an emissions/smog test before it can
be registered here? The rules are free and public, but scattered — a
different state agency for each of the roughly 28 states (and often a
specific COUNTY within that state) that still test, each with its own
vehicle-age exemption and fuel-type exemption. No lookup found on the Apify
store answers this for a specific VIN today (see DOSSIER.md, "WHY IT IS
RELEVANT"). This Actor answers it in one call: decode the VIN, apply the
right state's (and county's) rule, done.
What you get per row
| Field | Meaning |
|---|---|
vin, state, county_given | What you asked about |
decoded_model_year, decoded_make, decoded_vehicle_type, decoded_fuel_category | Read live from NHTSA's vPIC decode |
state_has_program | Whether this state runs any emissions-testing program at all |
program_scope | statewide, county or null (no program) |
covered_counties | The counties this state restricts testing to, when it does |
test_required | true, false, or null when the answer could not be confirmed (see determination_basis) |
determination_basis | The specific reason: required, state_no_program, vehicle_too_new, vehicle_too_old, fuel_type_exempt, county_not_covered, county_required_not_given, county_list_unconfirmed, county_partial_verify_zip, or decode_failed |
test_frequency | annual, biennial, etc., when a test is required |
source_url, data_as_of | Where the state rule bundle came from, and when it was last checked |
charged / not_charged_reason | Whether this row cost you anything, and why not if it did not |
Coverage — read this before you rely on it
v1 covers all 50 states + DC. 28 of them currently run some form of
emissions/smog testing; the rest report a confident test_required: false
(state_no_program). Of the 28, county-level detail is fully sourced for
27; California and Pennsylvania's own official sources give only a count
of covered counties (41 of 58, and 25 of 67), never a list — for those
two, a lookup returns test_required: null rather than a guessed answer,
naming exactly which two government pages to check by hand.
Out of scope for v1: heavy-duty/commercial GVWR-based rules, and
diplomatic, military, farm-plate or other special-plate exemptions beyond
what each state's general passenger-vehicle rule already states. hybrid
is treated as gasoline unless a state's own rule names hybrids
specifically (none of the 28 currently does).
Input
{"lookups": [{"vin": "1HGCM82633A004352", "state": "NY", "county": ""},{"vin": "1FTFW1ET1BFC00001", "state": "GA", "county": "Fulton"}]}
Up to 20 vehicles per run. county is optional but required to get a
confirmed answer in a county-restricted state — omit it and you get a free,
indeterminate row naming the covered counties instead.
Output
{"vin": "1HGCM82633A004352","state": "NY","county_given": "","decoded_model_year": 2003,"decoded_make": "HONDA","decoded_vehicle_type": "PASSENGER CAR","decoded_fuel_category": "gasoline","state_has_program": true,"program_scope": "statewide","covered_counties": [],"test_required": false,"determination_basis": "vehicle_too_old","test_frequency": "annual","source_url": "https://en.wikipedia.org/wiki/Vehicle_inspection_in_the_United_States","data_as_of": "2026-08-29","charged": false,"not_charged_reason": ""}
A SUMMARY.json lands in the key-value store with how many vehicles were
requested, determined, indeterminate, charged and free.