All posts

Free VIN Decoder API Comparison 2026: NHTSA vs Cardog vs Auto.dev

Cardog Team13 min read
Free VIN Decoder API Comparison 2026: NHTSA vs Cardog vs Auto.dev

Free VIN Decoder API Comparison 2026: NHTSA vs Cardog vs Auto.dev

If you're building an automotive application, you need VIN decoding. Whether you're developing a marketplace, fleet management system, parts lookup tool, or AI agent, translating that 17-character Vehicle Identification Number into structured vehicle data is essential. The question is: which API should you use?

The free VIN decoder API landscape in 2026 ranges from government databases with no rate limits to commercial services with generous free tiers to enterprise-grade solutions costing thousands per month. Each option comes with trade-offs in accuracy, speed, coverage, and pricing that can significantly impact your application.

This comparison breaks down the major players honestly. We'll cover real-world performance characteristics, pricing gotchas, and which solution fits different use cases. No marketing fluff—just the information you need to make the right choice for your project.

What to Look for in a VIN Decoder API

Before diving into specific services, understand what differentiates VIN decoder APIs:

Accuracy: Does it return correct vehicle specifications? Some APIs have incomplete data for certain manufacturers, model years, or non-US vehicles. A decoder that returns "Unknown" for 10% of VINs isn't useful in production.

Response Time: Government APIs average 2-3 seconds per request. Optimized commercial APIs return results in under 100ms. If you're processing millions of VINs or building real-time applications, this matters enormously.

Data Richness: Basic decoders return make, model, year. Advanced APIs include engine specs, safety features, recall history, market data, and Canadian vehicle support. Know what fields you actually need.

Rate Limits: Free tiers typically cap at 50-1,000 requests per day. Some APIs throttle concurrent requests. Others have no limits but slower performance. Match the limits to your actual usage patterns.

Geographic Coverage: Most APIs focus on US market vehicles. If you need Canadian, European, or international vehicle support, coverage varies dramatically between providers.

The Contenders

We're comparing five VIN decoder APIs representing different market segments:

  1. NHTSA vPIC - Free government database
  2. Cardog API - Free tier with premium features
  3. Auto.dev - Pay-per-call commercial service
  4. VehicleDatabases - Subscription enterprise service
  5. DataOne - Enterprise-grade solution

Let's examine each in detail.

NHTSA vPIC: The Free Government Standard

The National Highway Traffic Safety Administration maintains the Vehicle Product Information Catalog (VPIC), the authoritative source for US vehicle data. Every commercial VIN decoder ultimately depends on this database.

API Endpoint: https://vpic.nhtsa.dot.gov/api/

What You Get

NHTSA vPIC provides comprehensive manufacturing data for every vehicle sold in the United States since 1981. The API returns 100+ fields including make, model, year, body style, engine type, fuel type, drive configuration, manufacturing plant, and safety equipment.

The data comes directly from manufacturer 565 submittals—the regulatory filings automakers must provide before selling vehicles in the US. This makes NHTSA data the most authoritative source available.

Performance Reality

Here's the honest assessment: NHTSA's API is slow. In our testing, average response times consistently exceed 2.5 seconds, with occasional requests taking 5+ seconds. The servers are government infrastructure optimized for regulatory compliance, not application performance.

bash
# Real-world NHTSA API response time
$ time curl "https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/5YJ3E1EA9NF123456?format=json"
real    3.247s

There are no official rate limits, but aggressive querying will get your IP temporarily blocked. The practical limit is roughly 10-15 requests per second before you start seeing errors.

NHTSA vPIC Pros

  • Completely free: No API key required, no payment, no signup
  • No rate limits: Technically unlimited (within reason)
  • Authoritative data: Direct from manufacturer regulatory filings
  • Comprehensive coverage: Every US market vehicle since 1981
  • Always available: Government uptime is typically excellent

NHTSA vPIC Cons

  • Slow response times: 2-3+ seconds average latency
  • US vehicles only: Limited data for Canadian-exclusive or international vehicles
  • No market data: Just manufacturing specs, no pricing or recalls
  • Clunky response format: Verbose JSON with redundant fields
  • No bulk operations: One VIN per request only

Best For

NHTSA vPIC is ideal for hobby projects, learning VIN structure, prototyping, or applications where response time doesn't matter. If you're building a proof-of-concept or processing VINs in batch jobs overnight, the free unlimited access is hard to beat.

Code Example

javascript
// NHTSA vPIC API - Basic decode
async function decodeVIN(vin) {
  const response = await fetch(
    `https://vpic.nhtsa.dot.gov/api/vehicles/decodevin/${vin}?format=json`
  );
  const data = await response.json();

  // Extract relevant fields from verbose response
  const results = {};
  for (const item of data.Results) {
    if (item.Value && item.Value !== "Not Applicable") {
      results[item.Variable] = item.Value;
    }
  }

  return {
    make: results["Make"],
    model: results["Model"],
    year: results["Model Year"],
    bodyClass: results["Body Class"],
    engineCylinders: results["Engine Number of Cylinders"],
    fuelType: results["Fuel Type - Primary"],
    driveType: results["Drive Type"],
    plantCountry: results["Plant Country"],
  };
}

Cardog API: Free Tier with AI Agent Support

Cardog provides a VIN decoder API designed for modern application development, with official SDKs for both TypeScript and Python, plus native support for AI agents through the Model Context Protocol (MCP).

API Endpoint: https://api.cardog.app Documentation: docs.cardog.app

Official SDKs:

  • TypeScript: @cardog/api on npm — includes React Query hooks
  • Python: cardog on PyPI — sync & async, Pydantic models

What You Get

The Cardog API combines VIN decoding with market intelligence. Beyond basic vehicle specs, you get recall data from both NHTSA and Transport Canada, market pricing analysis, and Canadian vehicle support. The official SDKs cover the full platform: VIN decoding, listings search, market analytics, recalls, charging stations, fuel prices, safety ratings, and more.

The standout feature is MCP server integration. If you're building AI agents with Claude, GPT, or other LLMs, Cardog provides a ready-to-use MCP server that gives your agent access to VIN decoding, recall lookups, and market data through natural language.

Pricing Structure

  • Free: 100 API calls per month
  • Pro: $50/month for 5,000 calls
  • Developer: $100/month for 10,000 calls
  • Business: $200/month for 100,000 calls
  • Enterprise: Custom pricing

Performance Characteristics

Cardog's API typically responds in 50-150ms for cached VINs, with cold lookups taking 200-400ms. The system caches decoded VINs aggressively, so popular vehicles return near-instantly.

bash
# Cardog API response time (cached VIN)
$ time curl "https://api.cardog.app/v1/vin/5YJ3E1EA9NF123456" -H "Authorization: Bearer $API_KEY"
real    0.089s

Cardog API Pros

  • Generous free tier: 100 calls/month to get started
  • Fast responses: Sub-100ms for cached VINs
  • Official SDKs: TypeScript (@cardog/api) and Python (cardog)
  • Canadian support: Full Transport Canada recall database
  • Market data included: Pricing, depreciation, market trends
  • MCP server: Native AI agent integration
  • Offline SDK: @cardog/corgi for local decoding
  • Batch decoding: Up to 1,000 VINs per request

Cardog API Cons

  • Newer service: Less market history than established players
  • Free tier limits: 100/month may not cover high-volume prototyping
  • Requires API key: Can't test anonymously like NHTSA
  • North American focus: Limited European/Asian market data

Best For

Cardog fits production applications that need Canadian vehicle support, AI agent integration, or market data alongside VIN decoding. The combination of a usable free tier, official SDKs for TypeScript and Python, and the offline Corgi library makes it practical for both prototyping and scaling.

Code Examples

TypeScript (@cardog/api):

typescript
import { CardogClient } from "@cardog/api";

const client = new CardogClient({ apiKey: "your_api_key" });

// Decode a VIN
const result = await client.vin.decode("5YJ3E1EA9NF123456");
const vehicle = result.components.vehicle;
console.log(`${vehicle.year} ${vehicle.make} ${vehicle.model}`);
// Output: 2022 Tesla Model 3

// Check recalls
const recalls = await client.recalls.search({
  country: "us",
  makes: ["Tesla"],
});
console.log(`Found ${recalls.meta.count} recalls`);

// Market overview
const market = await client.market.overview("Tesla", "Model 3", 2022);
console.log(`Median price: $${market.medianPrice}`);

Python (cardog):

python
from cardog import Cardog

client = Cardog(api_key="your_api_key")

# Decode a VIN
result = client.vin.decode("5YJ3E1EA9NF123456")
vehicle = result.components.vehicle
print(f"{vehicle.year} {vehicle.make} {vehicle.model}")
# Output: 2022 Tesla Model 3

# Batch decode up to 1,000 VINs
batch = client.vin.batch(["5YJ3E1EA9NF123456", "1HGCM82633A123456"])
for item in batch.results:
    v = item.components.vehicle
    print(f"{item.vin}: {v.year} {v.make} {v.model}")

# Check recalls
recalls = client.recalls.search("us", makes=["Tesla"])
print(f"Found {recalls.meta.count} recalls")

# Market overview
overview = client.market.overview("Tesla", "Model 3", 2022)
print(f"Median price: ${overview.median_price}")

Offline Alternative: @cardog/corgi

For applications that can't depend on network latency or need unlimited local decoding, Cardog publishes the Corgi library—an optimized offline VIN decoder.

bash
npm install @cardog/corgi
javascript
import { decode } from "@cardog/corgi";

// No API call, no rate limits, ~12ms response
const vehicle = decode("5YJ3E1EA9NF123456");
console.log(vehicle.make);  // Tesla
console.log(vehicle.model); // Model 3

Corgi downloads a 21MB optimized database (compressed from NHTSA's 1.5GB original) and decodes VINs locally in ~12ms. For details on how we built this, see our technical deep dive on Corgi.

Auto.dev: Pay-Per-Call Simplicity

Auto.dev offers a straightforward pay-per-call model with no monthly commitments. You pay only for what you use.

API Endpoint: https://auto.dev/api Documentation: https://auto.dev/docs

What You Get

Auto.dev provides clean, well-documented VIN decoding with a developer-friendly response format. The API returns make, model, year, trim, engine specs, and standard equipment. Documentation is notably good, with clear examples in multiple languages.

Pricing Structure

  • Pay-as-you-go: $0.004 per API call (roughly $4 per 1,000 decodes)
  • No free tier: Must add payment method to start
  • No monthly minimum: Only pay for actual usage
  • Volume discounts: Available above 1M calls/month

The lack of a free tier is the main drawback for prototyping. You need to commit credit card details before making your first API call.

Performance Characteristics

Auto.dev delivers consistent 80-120ms response times. The infrastructure is optimized for developer experience, with detailed error messages and consistent response formatting.

Auto.dev Pros

  • Pay only for usage: No wasted monthly subscriptions
  • Excellent documentation: Clear examples, multiple languages
  • Consistent performance: 80-120ms typical response
  • Clean response format: Well-structured JSON
  • No commitment: Scale up or down instantly

Auto.dev Cons

  • No free tier: Requires payment to start
  • US focus: Limited international coverage
  • No market data: Just vehicle specs
  • No bulk endpoint: One VIN per request

Best For

Auto.dev works well for applications with unpredictable or variable VIN decoding needs. If your usage varies from 100 to 10,000 calls per month, pay-per-call avoids wasting money on unused subscription capacity.

Code Example

javascript
// Auto.dev API - Clean response format
async function decodeVIN(vin) {
  const response = await fetch(`https://auto.dev/api/vin/${vin}`, {
    headers: {
      "Authorization": `Bearer ${process.env.AUTODEV_API_KEY}`,
    },
  });

  const data = await response.json();

  return {
    make: data.make,
    model: data.model,
    year: data.year,
    trim: data.trim,
    engine: data.engine.description,
    transmission: data.transmission.type,
    drivetrain: data.drivetrain,
  };
}

VehicleDatabases: Subscription Enterprise

VehicleDatabases targets businesses needing comprehensive vehicle data beyond basic VIN decoding.

Website: https://vehicledatabases.com

What You Get

Beyond VIN decoding, VehicleDatabases provides market values, ownership costs, depreciation data, specification comparisons, and international vehicle coverage. The platform is designed for insurance companies, fleet managers, and automotive businesses.

Pricing Structure

  • Starter: $99/month for 5,000 calls
  • Professional: $299/month for 25,000 calls
  • Enterprise: Custom pricing

No free tier is available. The minimum commitment is $99/month.

VehicleDatabases Pros

  • Comprehensive data: Values, specs, ownership costs
  • International coverage: European and Asian vehicles
  • Business features: Bulk processing, webhooks
  • Historical data: Model year archives

VehicleDatabases Cons

  • No free tier: $99/month minimum
  • Complex integration: Enterprise-focused API design
  • Slower performance: 200-500ms typical response
  • Overkill for simple decoding: Paying for features you may not need

Best For

VehicleDatabases makes sense for businesses that need more than VIN decoding—if you need market values, international coverage, and ownership cost data, the comprehensive platform justifies the subscription cost.

DataOne: Enterprise Grade

DataOne is the enterprise standard for automotive data, serving major insurance companies, lenders, and OEMs.

Website: https://www.dataonesoftware.com

What You Get

DataOne provides the most comprehensive vehicle database available, including complete specification libraries, market values, image libraries, and integration support. Their data powers many applications you use without realizing it.

Pricing Reality

DataOne doesn't publish pricing. Expect enterprise-level contracts starting at $10,000+ annually, with costs scaling based on usage and data products. Implementation typically requires sales calls and contract negotiation.

DataOne Pros

  • Industry standard: Powers major insurance and lending platforms
  • Maximum accuracy: Highest data quality available
  • Complete coverage: Every vehicle, every market
  • Enterprise support: Dedicated integration assistance

DataOne Cons

  • Enterprise pricing: Not accessible for small projects
  • Long sales cycle: Can take months to get started
  • Complex contracts: Annual commitments required
  • Overkill for most: Built for enterprise requirements

Best For

DataOne is for enterprises where VIN data accuracy directly impacts business outcomes—insurance underwriting, lending decisions, or OEM systems. If you're building a startup or side project, look elsewhere.

Feature Comparison Matrix

FeatureNHTSA vPICCardogAuto.devVehicleDatabasesDataOne
Free TierUnlimited100/monthNoneNoneNone
Response Time2-3+ sec50-150ms80-120ms200-500ms~100ms
US CoverageExcellentExcellentExcellentExcellentExcellent
Canadian CoverageLimitedExcellentLimitedGoodExcellent
InternationalNoneLimitedLimitedGoodExcellent
Recall DataSeparate APIIncludedNoneIncludedIncluded
Market DataNoneIncludedNoneIncludedIncluded
Official SDKsNoneTypeScript + PythonNoneNoneNone
AI Agent SupportNoneMCP ServerNoneNoneNone
Offline SDKNone@cardog/corgiNoneNoneNone
Batch DecodeNoneUp to 1,000/requestNoneNoneVaries
Min. CostFreeFree~$0.004/call$99/month$10K+/year

Code Examples: Top 3 APIs

Here's how to implement VIN decoding with the three most accessible APIs.

NHTSA vPIC (Free)

javascript
// NHTSA vPIC - No API key required
const NHTSA_BASE = "https://vpic.nhtsa.dot.gov/api";

async function decodeVIN(vin) {
  const url = `${NHTSA_BASE}/vehicles/decodevin/${vin}?format=json`;
  const response = await fetch(url);
  const data = await response.json();

  // Parse NHTSA's verbose response format
  const vehicle = {};
  const fieldMap = {
    "Make": "make",
    "Model": "model",
    "Model Year": "year",
    "Body Class": "bodyStyle",
    "Engine Number of Cylinders": "cylinders",
    "Displacement (L)": "displacement",
    "Fuel Type - Primary": "fuelType",
    "Drive Type": "driveType",
    "Plant City": "plantCity",
    "Plant Country": "plantCountry",
  };

  for (const item of data.Results) {
    const field = fieldMap[item.Variable];
    if (field && item.Value && item.Value !== "Not Applicable") {
      vehicle[field] = item.Value;
    }
  }

  return vehicle;
}

// Usage
const vehicle = await decodeVIN("5YJ3E1EA9NF123456");
console.log(`${vehicle.year} ${vehicle.make} ${vehicle.model}`);
// Output: 2022 Tesla Model 3

Cardog API (100 free/month)

TypeScript — install with npm install @cardog/api:

typescript
import { CardogClient } from "@cardog/api";

const client = new CardogClient({ apiKey: process.env.CARDOG_API_KEY });

const result = await client.vin.decode("2HGFC2F58KH567890");
const vehicle = result.components.vehicle;
console.log(`${vehicle.year} ${vehicle.make} ${vehicle.model}`);
// Output: 2019 Honda Civic

const recalls = await client.recalls.search({
  country: "us",
  makes: ["Honda"],
  models: ["Civic"],
  year: { min: 2019, max: 2019 },
});
console.log(`Recalls: ${recalls.meta.count}`);

Python — install with pip install cardog:

python
from cardog import Cardog

client = Cardog(api_key="your_api_key")

result = client.vin.decode("2HGFC2F58KH567890")
vehicle = result.components.vehicle
print(f"{vehicle.year} {vehicle.make} {vehicle.model}")
# Output: 2019 Honda Civic

recalls = client.recalls.search("us", makes=["Honda"], models=["Civic"])
print(f"Recalls: {recalls.meta.count}")

Auto.dev ($0.004/call)

javascript
// Auto.dev - Clean pay-per-call API
const AUTODEV_BASE = "https://auto.dev/api";
const API_KEY = process.env.AUTODEV_API_KEY;

async function decodeVIN(vin) {
  const response = await fetch(`${AUTODEV_BASE}/vin/${vin}`, {
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
    },
  });

  if (!response.ok) {
    const error = await response.json();
    throw new Error(error.message);
  }

  return response.json();
}

// Usage
const vehicle = await decodeVIN("1FTFW1E85PFC12345");
console.log(`${vehicle.year} ${vehicle.make} ${vehicle.model} ${vehicle.trim}`);
// Output: 2023 Ford F-150 SuperCrew

Recommendations by Use Case

Learning and Prototyping

Use NHTSA vPIC. It's free, requires no signup, and provides the authoritative data that all other services build upon. The slow response times don't matter when you're testing code locally.

Side Projects and MVPs

Use Cardog's free tier or @cardog/corgi. The 100 calls per month covers initial development and testing. Official SDKs are available for both TypeScript and Python, so you can get started in minutes regardless of your stack. If you need unlimited local decoding, install Corgi and eliminate API dependencies entirely.

Production Applications (North America)

Use Cardog or Auto.dev. Cardog offers better value if you need Canadian support, recall data, batch decoding (up to 1,000 VINs per request), or AI agent integration. The Python SDK supports both sync and async clients for high-volume workloads. Auto.dev wins if you prefer pure pay-per-call simplicity without free tier limits.

Production Applications (International)

Use VehicleDatabases. The $99/month minimum is reasonable for businesses needing European or Asian vehicle coverage.

Enterprise and Compliance-Critical

Use DataOne. When VIN accuracy affects underwriting decisions, lending risk, or regulatory compliance, DataOne's enterprise-grade data and support justify the cost.

The Offline Alternative

If your use case allows it, consider eliminating API dependencies entirely. The @cardog/corgi library provides offline VIN decoding by shipping an optimized version of NHTSA's database.

Advantages:

  • No rate limits, no API costs
  • 12ms average decode time
  • Works offline and in edge environments
  • 21MB download (vs. 1.5GB raw NHTSA)

Limitations:

  • US market vehicles only
  • Basic specs only (no recalls or market data)
  • Requires monthly database updates

For many applications, combining Corgi for basic decoding with API calls for recalls and market data provides the best of both worlds.

How Cardog Approaches VIN Intelligence

At Cardog, we built our VIN infrastructure to support our broader automotive intelligence platform. Our Corgi VIN decoder powers millions of daily decodes across the Cardog ecosystem, and we've made the library, official SDKs, and a generous API tier available to developers.

Get started with official SDKs for your language of choice:

  • TypeScript/JavaScript: npm install @cardog/apinpm | docs
  • Python: pip install cardogPyPI | GitHub
  • Offline (Node.js): npm install @cardog/corgiGitHub

The API extends beyond raw VIN data to include recall status from both NHTSA and Transport Canada, market pricing intelligence, and native integration with AI agents through our MCP server. If you're building automotive applications that need more than basic decoding, explore our API documentation or browse the VIN decoder tool to see it in action.

For developers building AI-powered automotive tools, our VIN decoder integrates directly with the MCP ecosystem—letting AI agents decode VINs, check recalls, and analyze market data through natural language.

Frequently asked questions