Search by VIN, company name, or USDOT number to pull a complete federal record — registration details, fleet info, cargo authority, insurance status, safety rating, and crash history. Free, no signup, sourced directly from FMCSA and NHTSA.
Already have a VIN and just want vehicle specs instead? Try our free VIN Decoder.
What This Tool Checks
Every search pulls live data straight from the Federal Motor Carrier Safety Administration’s Company Census File — the same registration database used by insurance underwriters and freight brokers. Depending on what you search, you’ll see:
Registration details
legal name, DBA, address, contact info, and current operating status
Fleet size
owned, term-leased, and trip-leased trucks, tractors, and trailers
Cargo authority
which of the 29 federally tracked cargo categories a carrier is authorized to haul
Insurance status
currently active or pending coverage, plus historical policies showing when and how past coverage ended
Safety record
safety rating, recordable crash rate, and any prior USDOT revocations
Crash and inspection history
reported crashes and roadside inspections tied to that carrier, including decoded vehicle details (year, make, model) wherever a VIN is on file
Who This Is For
This free lookup is useful any time you need to verify a trucking company is who they say they are:
Freight brokers and shippers
checking a carrier’s authority and safety standing before tendering a load
Truck buyers and sellers
researching a company before doing business with them
Anyone
trying to confirm a trucking company’s legitimacy, fleet size, or safety history
More Free Tools
Already have a VIN and just want vehicle specs instead? Try our free VIN Decoder. If you’re an owner-operator trying to figure out whether your rates are actually covering your costs, check your real cost per mile, just your fuel cost per mile, use our Rate Calculator to price out a specific load, or check your remaining drive time with our HOS Calculator.
Frequently Asked Questions
Is this data accurate and up to date?
Yes — every search queries FMCSA’s Company Census File directly, the same federal database insurance companies and brokers use. It’s updated daily, not pulled from a cached or outdated copy.
Why does my VIN search show no crash or inspection records?
Crash and inspection records only exist for vehicles that were actually in a reported crash or pulled into a roadside inspection. A clean result doesn’t mean a company has no trucks — it just means none of their vehicles happen to be in either of these two federal records.
Can I search for a company if I only know part of the name?
Yes — partial name matches work. If more than one company matches, you’ll see a list to pick from before the full report loads.
Is this free to use?
Completely free, with no signup or account required.
const dotInput = document.getElementById('dotInput'); const nameInput = document.getElementById('nameInput'); const vinInput = document.getElementById('vinInput'); const searchBtn = document.getElementById('lookupSearchBtn'); const resultsPanel = document.getElementById('resultsPanel'); const API_BASE = 'https://fmcsa-proxy-service.onrender.com'; vinInput.addEventListener('input', () => { vinInput.value = vinInput.value.toUpperCase().replace(/[^A-Z0-9]/g, ''); }); [dotInput, nameInput, vinInput].forEach(el => { el.addEventListener('keypress', e => { if (e.key === 'Enter') runLookup(); }); }); async function runLookup() { const dotNumber = dotInput.value.trim(); const name = nameInput.value.trim(); const vin = vinInput.value.trim(); const filledCount = [dotNumber, name, vin].filter(Boolean).length; if (filledCount === 0) { resultsPanel.innerHTML = '
Enter a USDOT number, company name, or VIN to search.
'; return; } if (filledCount > 1) { resultsPanel.innerHTML = '
Please fill in only ONE field — DOT number, name, or VIN — not multiple at once.
'; return; } if (vin && vin.length !== 17) { resultsPanel.innerHTML = '
VIN must be exactly 17 characters.
'; return; } searchBtn.disabled = true; searchBtn.innerText = 'Searching...'; resultsPanel.innerHTML = '
Querying federal records...
'; try { const params = new URLSearchParams(); if (dotNumber) params.set('dotNumber', dotNumber); if (name) params.set('name', name); if (vin) params.set('vin', vin); const resolveRes = await fetch(`${API_BASE}/api/resolve?${params.toString()}`); const resolveData = await resolveRes.json(); if (!resolveRes.ok) { resultsPanel.innerHTML = `
${resolveData.error || 'Search failed. Please try again.'}
`; return; } if (resolveData.type === 'none') { resultsPanel.innerHTML = '
No matching company found. Double-check the spelling or number and try again.
'; return; } if (resolveData.type === 'multiple') { renderCandidateList(resolveData.candidates); return; } // type === 'single' - go straight to the full report await loadFullReport(resolveData.candidates[0].dotNumber); } catch (err) { console.error(err); resultsPanel.innerHTML = '
Connection error. Please try again in a moment.
'; } finally { searchBtn.disabled = false; searchBtn.innerText = 'Search'; } } function renderCandidateList(candidates) { let html = `
Found ${candidates.length} possible matches — select the right one:
`; candidates.forEach(c => { const extra = c.matchedVia ? ` Matched via ${c.matchedVia}${c.matchedDate ? ' (' + c.matchedDate + ')' : ''}
`); } }); if (rows.length > 0) { censusHtml += `
${title}
${rows.join('')}
`; } }); // Cargo types - any crgo_ field with value 'X' const cargoRows = []; Object.entries(c).forEach(([key, val]) => { if (key.startsWith('crgo_') && val === 'X' && key !== 'crgo_cargoothr') { cargoRows.push(`
`); usedKeys.add(key); } }); if (c.crgo_cargoothr_desc) { cargoRows.push(`
`); usedKeys.add('crgo_cargoothr'); usedKeys.add('crgo_cargoothr_desc'); } if (cargoRows.length > 0) { censusHtml += `
Cargo Types Carried
${cargoRows.join('')}
`; } // Anything else populated that wasn't explicitly grouped above const extraRows = []; Object.entries(c).forEach(([key, val]) => { if (!usedKeys.has(key) && isUsableValue(val)) { extraRows.push(`
`); } }); if (extraRows.length > 0) { censusHtml += `
Additional Details
${extraRows.join('')}
`; } // Crash records let crashHtml = ''; if (e.crashRecordCount > 0) { e.crashRecords.forEach(r => { const dv = r.decodedVehicle; crashHtml += `
VIN: ${r.vehicle_identification_number || 'N/A'}
${dv ? `
${dv.modelYear || ''} ${dv.make || ''} ${dv.model || ''}
Crash Date: ${r.report_date || 'N/A'} — ${r.city || ''}, ${r.state || ''}
Fatalities: ${r.fatalities || 0} | Injuries: ${r.injuries || 0} | Tow-Away: ${r.tow_away || 'N/A'}
`; }); } else { crashHtml = '
No crash records found. This does not necessarily mean this carrier has no trucks - it means none of their vehicles have a reported crash on file.
'; } // Inspected vehicles let inspectedHtml = ''; if (e.inspectedVehicleCount > 0) { e.inspectedVehicles.forEach(v => { const dv = v.decodedVehicle; inspectedHtml += `
VIN: ${v.insp_unit_vehicle_id_number || 'N/A'}
${dv ? `
${dv.modelYear || ''} ${dv.make || ''} ${dv.model || ''}
License Plate: ${v.insp_unit_license || 'N/A'} (${v.insp_unit_license_state || 'N/A'})
`; }); } else { inspectedHtml = '
No inspected vehicles found on record. This does not necessarily mean this carrier has no trucks - inspections are spot-checks, not a check on every vehicle.
'; } // Insurance - active/pending first, then history sorted most-recent-first. // A historical record with cancl_method "CANCEL" (not "TERM/REPL") means it was // cancelled with nothing replacing it - flagged as the meaningful red flag. const ins = data.insurance || { activePolicies: [], historicalPolicies: [] }; let activeInsHtml = ''; if (ins.activePolicyCount > 0) { ins.activePolicies.forEach(p => { activeInsHtml += `
${p.name_company || 'Unknown Insurer'}
Policy #${p.policy_no || 'N/A'} — ${p.ins_type_desc || 'N/A'}
Coverage: $${Number(p.max_cov_amount || 0).toLocaleString()}k — Effective ${p.effective_date || 'N/A'}
`; }); } else { activeInsHtml = '
No currently active or pending insurance filing found for this carrier.
'; } let historyInsHtml = ''; if (ins.historicalPolicyCount > 0) { const sortedHistory = [...ins.historicalPolicies].sort((a, b) => { const dateA = new Date(a.cancl_effective_date || a.effective_date || 0); const dateB = new Date(b.cancl_effective_date || b.effective_date || 0); return dateB - dateA; }); sortedHistory.forEach(p => { const wasReplaced = p.cancl_method === 'TERM/REPL'; historyInsHtml += `
${p.name_company || 'Unknown Insurer'}
Policy #${p.policy_no || 'N/A'} — ${p.ins_type_desc || p.mod_col_3 || 'N/A'}
Effective ${p.effective_date || 'N/A'} through ${p.cancl_effective_date || 'N/A'}
${wasReplaced ? 'Replaced by a new policy' : 'Cancelled — ' + (p.cancl_method || 'no replacement on file')}
`; }); } else { historyInsHtml = '
No insurance history found for this carrier.
'; } resultsPanel.innerHTML = `
${c.legal_name || 'Unknown Company'}
USDOT# ${c.dot_number} ${c.dba_name ? '— DBA: ' + c.dba_name : ''}
${censusHtml}
Active/Pending Insurance (${ins.activePolicyCount || 0})
${activeInsHtml}
Insurance History (${ins.historicalPolicyCount || 0})
${historyInsHtml}
Crash Records (${e.crashRecordCount})
${crashHtml}
Inspected Vehicles (${e.inspectedVehicleCount})
${inspectedHtml}
Looking to Sell a Truck?
We buy semi trucks, box trucks, dump trucks, and more — nationwide, cash offers.