<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: michaelakoster</title>
    <description>The latest articles on Forem by michaelakoster (@michaelakoster).</description>
    <link>https://forem.com/michaelakoster</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3832632%2F2723a8a0-6679-419a-9b87-61bcdffb33be.jpeg</url>
      <title>Forem: michaelakoster</title>
      <link>https://forem.com/michaelakoster</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/michaelakoster"/>
    <language>en</language>
    <item>
      <title>Free Alternatives to CarMD API for Vehicle Data</title>
      <dc:creator>michaelakoster</dc:creator>
      <pubDate>Wed, 18 Mar 2026 21:26:10 +0000</pubDate>
      <link>https://forem.com/michaelakoster/free-alternatives-to-carmd-api-for-vehicle-data-a27</link>
      <guid>https://forem.com/michaelakoster/free-alternatives-to-carmd-api-for-vehicle-data-a27</guid>
      <description>&lt;p&gt;If you've looked for vehicle maintenance data APIs, you've probably found CarMD -- and then seen their pricing. Here are some free and affordable alternatives for developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Vehicle Finder API
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;URL:&lt;/strong&gt; &lt;a href="https://vehicle-finder.com" rel="noopener noreferrer"&gt;vehicle-finder.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; 500 requests/month&lt;br&gt;
&lt;strong&gt;Paid:&lt;/strong&gt; Starting at $29/month for 10K requests&lt;/p&gt;

&lt;p&gt;Covers: VIN decoding, oil specs, recalls, TSBs, diagnostic codes, maintenance schedules, complaints, torque specs, towing capacity, fluid specs, and more.&lt;/p&gt;

&lt;p&gt;Uses free public data sources (NHTSA, OBDb, data.gov) so the data is the same quality -- just with a much better developer experience.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;\&lt;/code&gt;`bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Example: Get oil change specs for a 2020 Honda Civic
&lt;/h1&gt;

&lt;p&gt;curl -H "X-API-Key: YOUR_KEY" \&lt;br&gt;
  "&lt;a href="https://api.vehicle-finder.com/v1/oil?year=2020&amp;amp;make=Honda&amp;amp;model=Civic" rel="noopener noreferrer"&gt;https://api.vehicle-finder.com/v1/oil?year=2020&amp;amp;make=Honda&amp;amp;model=Civic&lt;/a&gt;"&lt;br&gt;
`&lt;code&gt;\&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. NHTSA vPIC API (Free, Government)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;URL:&lt;/strong&gt; vpic.nhtsa.dot.gov/api&lt;br&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; Unlimited (no auth required)&lt;/p&gt;

&lt;p&gt;Good for VIN decoding and basic vehicle info. Downsides: XML responses, inconsistent schema, no maintenance data, can be slow/unreliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. NHTSA Recalls API (Free, Government)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;URL:&lt;/strong&gt; api.nhtsa.gov/recalls&lt;br&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; Unlimited&lt;/p&gt;

&lt;p&gt;Specifically for safety recalls. Works but the data format is clunky.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. OBDb (Free, Open Source)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;URL:&lt;/strong&gt; github.com/nicholasgasior/obdb&lt;br&gt;
&lt;strong&gt;Free tier:&lt;/strong&gt; Fully free (download the data)&lt;/p&gt;

&lt;p&gt;Great for DTC code lookups. It's a static dataset though -- you'd need to host and serve it yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Vehicle Finder&lt;/th&gt;
&lt;th&gt;CarMD&lt;/th&gt;
&lt;th&gt;NHTSA Direct&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;VIN Decode&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oil Specs&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recalls&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TSBs&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DTC Codes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free Tier&lt;/td&gt;
&lt;td&gt;500/mo&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;From $29/mo&lt;/td&gt;
&lt;td&gt;From $49/mo&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;em&gt;Full disclosure: I built Vehicle Finder API. But I genuinely built it because I needed a CarMD alternative that wasn't $50+/month for a side project. The free tier gives you 500 requests/month which is enough to build and test with.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vehicle-finder.com/signup" rel="noopener noreferrer"&gt;Sign up free&lt;/a&gt; | &lt;a href="https://api.vehicle-finder.com/docs" rel="noopener noreferrer"&gt;API Docs&lt;/a&gt; | &lt;a href="https://vehicle-finder.com/pricing" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>data</category>
      <category>resources</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Look Up Vehicle Recalls by VIN in 3 Lines of Code</title>
      <dc:creator>michaelakoster</dc:creator>
      <pubDate>Wed, 18 Mar 2026 21:20:21 +0000</pubDate>
      <link>https://forem.com/michaelakoster/how-to-look-up-vehicle-recalls-by-vin-in-3-lines-of-code-3li7</link>
      <guid>https://forem.com/michaelakoster/how-to-look-up-vehicle-recalls-by-vin-in-3-lines-of-code-3li7</guid>
      <description>&lt;p&gt;Ever needed to check if a vehicle has open safety recalls? The NHTSA has this data, but their API is... not developer-friendly.&lt;/p&gt;

&lt;p&gt;I built &lt;a href="https://vehicle-finder.com" rel="noopener noreferrer"&gt;Vehicle Finder API&lt;/a&gt; to make this dead simple.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Quick Version
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: YOUR_KEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://api.vehicle-finder.com/v1/recalls?vin=1HGCM82633A004352"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You get back structured JSON with every recall for that VIN -- campaign number, description, remedy, completion status.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Not Use NHTSA Directly?
&lt;/h2&gt;

&lt;p&gt;You can! But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NHTSA's API returns XML by default and inconsistent JSON&lt;/li&gt;
&lt;li&gt;No authentication = no rate limiting = unreliable uptime&lt;/li&gt;
&lt;li&gt;Data is spread across multiple endpoints with different schemas&lt;/li&gt;
&lt;li&gt;No way to get recalls + TSBs + complaints in one place&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vehicle Finder API normalizes all of this into a consistent REST API with proper JSON responses, API key auth, and rate limiting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Full Example (Python)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vda_your_key_here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;BASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://api.vehicle-finder.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Decode a VIN
&lt;/span&gt;&lt;span class="n"&gt;vin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1HGCM82633A004352&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;vehicle&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/vehicles/vin/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vin&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Vehicle: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vehicle&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;year&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vehicle&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;make&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vehicle&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Get recalls
&lt;/span&gt;&lt;span class="n"&gt;recalls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/recalls?vin=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;vin&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;recall&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;recalls&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Recall: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;component&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;recall&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;summary&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Else Can You Look Up?
&lt;/h2&gt;

&lt;p&gt;Beyond recalls, the API covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Oil change specs&lt;/strong&gt; -- type, capacity, filter part number&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintenance schedules&lt;/strong&gt; -- manufacturer-recommended intervals&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagnostic codes&lt;/strong&gt; -- OBD-II DTC descriptions and common fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TSBs&lt;/strong&gt; -- Technical Service Bulletins from manufacturers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consumer complaints&lt;/strong&gt; -- crash/fire/injury reports from NHTSA&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Torque specs, towing capacity, fluid specs&lt;/strong&gt; -- and more&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at &lt;a href="https://vehicle-finder.com/signup" rel="noopener noreferrer"&gt;vehicle-finder.com&lt;/a&gt; (free, 500 requests/month)&lt;/li&gt;
&lt;li&gt;Confirm your email&lt;/li&gt;
&lt;li&gt;Create an API key from the dashboard&lt;/li&gt;
&lt;li&gt;Start making requests&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full docs: &lt;a href="https://api.vehicle-finder.com/docs" rel="noopener noreferrer"&gt;api.vehicle-finder.com/docs&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I built this because I needed it for my own project and figured other developers might too. The free tier is genuinely useful -- 500 requests/month is enough to build a side project or prototype. Feedback welcome!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>apiwebdevtutorialpython</category>
    </item>
  </channel>
</rss>
