VIN API - VIN Decoder for anyone
UPDATES:
See Phase II details for complete dataset information.
Take a look at the PHP examples and the .NET examples.
And ... while it's been great being able to give this information away freely for about a year now, we have to share some of the cost with our users, so please read about our pricing model.
END UPDATES
VIN API came about through lots of work on a current project of ours - Mr. Quotey. We are dealing with auto insurance and wanted a way to decode VINs. The other solutions we found (API-wise) were too expensive for our small, unfunded startup. So like the way most great things come about, we decided to build our own VIN decoding API.
Using VIN API:
This is explained in detail at VIN API's site, but I will give you a look at what it does here.
If you use Ruby on Rails like I do, then you have the option to use ActiveResource:
Then you can use it like this:
Current Limitations:
Right now each account is limited to 20 VIN requests a month, we are looking to take it slow and prevent abuse. If you do need more VIN decodings a month, feel free to let us know at Mr. Quotey, we'd be happy to up the max for your account.
Where to next?:
It is too soon to really tell. We'd like your feedback and to know if this service is useful. If it gets enough buzz, we would probably pursue it a bit more and drop the monthly limitations.

Nicely done, not sure I would ever use it, but outstanding nonetheless.
Thanks Mr. Wilson — it is sort of one of those niche needs isn’t it? It is picking up a little interest though.
I can’t login, there is some error
I see your account. I’ll email you.
Actually, I just added a “reset password” page for you off of the login page.
http://vinapi.skizmo.com/forgot
This is an awesome solution for a lot of companys, actually. Can’t thank you enough for providing this.
Super duper impressed with this API. I’ll definitely be using it. Couple of questions:
1) Do you have a rate limit?
2) Do the results come through in all-caps because that is how it is in your data? If you are capping it before sending it through the API, it is more useful for *some* (meaning me) to have the data in its original form (hopefully proper case).
1) It’s limited to 20 free, unique requests per month right now, since I am still getting feedback.
2) I don’t change any of the data, I send it in original form.
@Matthew - glad you like it, spread the word
Hi Charlie. I sent an email about possibly getting a larger rate limit in exchange for writing a C# library and never heard back from your team. Should I take that as a “no”?
Matthew - sorry about taking so long to get back to your email. It’s definitely not a “no” and we look forward to working with you.
I emailed a few days ago and haven’t received a reply back. I’d also like to know about changing the rate.
We are a few days behind on email with regards to VIN API and its 20 requests a month limit. A lot more interest than we anticipated
DO you have an example of using this with
PHP 5 and curl?
Hey John,
I can help you come up with one, but other than the curl example at the bottom of vinapi.skizmo.com, I don’t have anything for you.
I know that vinapi has been used with php, hopefully one of those users can offer up an example for you.
Here is an example of how to use this with php:
##SCRIPT##
##END OF SCRIPT##
In this instance I have this script triggered when a vin is set in the url (example.com/vin.php?vin=VIN_NUMBER_HERE)
You can just remove the if statement and set your own way to retrieve the vin and just use ## echo decodeVIN($vin); ## to trigger the function.
BTW DONT FORGET TO CHANGE THE “YOUR_API_KEY_GOES_HERE” WITH YOUR API KEY
Apparently the PHP script was cut out from above, so here it is below (hope it works this time).
##SCRIPT##
##END OF SCRIPT##
Anyone having success with the PHP implementation?
I’m getting “The XML page cannot be displayed” (IE8), “Invalid at the top level of the document. Error processing resource…” (FF3.5 always returns “1″).
Suggestions?
Maybe we have some invalid XML? I’ll try the PHP version tonight and see what I get.
Ok, so I think I figured it out.
curl_exec return true or false, not what we want, we want it to return the result set if it is works and false if it fails.
To do this, we need to set the return transfer option, so I added this line:
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
The php example has been updated to reflect this change.
@Mike - Let me know how it goes for you.
That worked like a charm! Thanks!
We are about to launch a Automotive CRM/ILM software and wanted to know if you would be able to support unlimited vin decode? I know currently you only support 20. Or would you know where I can get past and current vin decoder download where we can upload to our data base?
Regards,
Ruben
We have been bumping people to 2000 VINs per month, since we don’t have a pricing plan. Legally there is no way to offer unlimited VIN decodings, unless you want to sign a lot of contracts and pay some non-trivial amount of money. Sorry about that, but give me a solid estimate of VINs per month and we will work something out. I’ll tell you this though, our pricing plans will only have soft limits, meaning you will be charged the monthly rate for some number of VINs then charged for any additional VINs (based on whatever plan you pick), so it may work out, such that it seems unlimited
Oh and btw - I’ve upped your account to the 2000 VINs per month, so you can at least do something while we work out merchant account issues and pricing plans