Check out the data set from this post over 1 and half years ago. On top of the basic data set's year, make and model, the complete data set comes with data like MSRP, MPG (city and highway), dealer invoice, gas tank size, etc.
We get tons of hits for basic data, but at no additional charge we also provide the complete data set. Just add a complete
=> "true" to your request. So simple and there's no performance hit.
For more information, check out or examples and faq.
Enjoy!
Here's another look at the data elements from a comprehensive query:
<?xml version="1.0" encoding="UTF-8"?> | |
<hash> | |
<telescopic-steering-column>Std.</telescopic-steering-column> | |
<front-split-bench-seat>N/A</front-split-bench-seat> | |
<powertrain-warranty-distance>36,000 mile</powertrain-warranty-distance> | |
<leather-seat>Std.</leather-seat> | |
<load-bearing-exterior-rack>N/A</load-bearing-exterior-rack> | |
<front-spring-type>Coil</front-spring-type> | |
<steel-wheels>N/A</steel-wheels> | |
<maximum-gvwr>No data lbs</maximum-gvwr> | |
<rear-wiper>N/A</rear-wiper> | |
<leather-steering-wheel>Std.</leather-steering-wheel> | |
<front-brake-type>Disc</front-brake-type> | |
<rear-brake-type>Disc</rear-brake-type> | |
<overall-length>187.60 in.</overall-length> | |
<pickup-truck-bed-liner>N/A</pickup-truck-bed-liner> | |
<front-side-airbag-with-head-protection>N/A</front-side-airbag-with-head-protection> | |
<second-row-side-airbag-with-head-protection>N/A</second-row-side-airbag-with-head-protection> | |
<cd-changer>Std.</cd-changer> | |
<second-row-folding-seat>Std.</second-row-folding-seat> | |
<am-fm-radio>Std.</am-fm-radio> | |
<locking-pickup-truck-tailgate>N/A</locking-pickup-truck-tailgate> | |
<fog-lights>Opt.</fog-lights> | |
<maximum-towing>1000 lbs</maximum-towing> | |
<msrp>$25,900 USD</msrp> | |
<genuine-wood-trim>N/A</genuine-wood-trim> | |
<powertrain-warranty-duration>36 month</powertrain-warranty-duration> | |
<cruise-control>Std.</cruise-control> | |
<front-power-lumbar-support>N/A</front-power-lumbar-support> | |
<power-sunroof>Std.</power-sunroof> | |
<towing-preparation-package>N/A</towing-preparation-package> | |
<city-mpg>21 miles/gallon</city-mpg> | |
<pickup-truck-cargo-box-light>N/A</pickup-truck-cargo-box-light> | |
<front-legroom>43.10 in.</front-legroom> | |
<first-aid-kit>N/A</first-aid-kit> | |
<mpg-hwy>30 miles/gallon</mpg-hwy> | |
<sliding-rear-pickup-truck-window>N/A</sliding-rear-pickup-truck-window> | |
<cargo-area-tiedowns>Std.</cargo-area-tiedowns> | |
<wheelbase>105.10 in.</wheelbase> | |
<electronic-parking-aid>N/A</electronic-parking-aid> | |
<second-row-side-airbag>N/A</second-row-side-airbag> | |
<rear-spring-type>Coil</rear-spring-type> | |
<driveline>FWD</driveline> | |
<dvd-player>Opt.</dvd-player> | |
<tow-hitch-receiver>N/A</tow-hitch-receiver> | |
<track-rear>61.20 in.</track-rear> | |
<deep-tinted-glass>N/A</deep-tinted-glass> | |
<maximum-payload>No data lbs</maximum-payload> | |
<anti-brake-system>4-Wheel ABS</anti-brake-system> | |
<abs-brakes>Std.</abs-brakes> | |
<model-year>2003</model-year> | |
<standard-gvwr>No data lbs</standard-gvwr> | |
<driver-multi-adjustable-power-seat>Std.</driver-multi-adjustable-power-seat> | |
<automatic-load-leveling>N/A</automatic-load-leveling> | |
<power-adjustable-exterior-mirror>Std.</power-adjustable-exterior-mirror> | |
<keyless-entry>Std.</keyless-entry> | |
<standard-seating>5</standard-seating> | |
<heated-exterior-mirror>N/A</heated-exterior-mirror> | |
<cassette-player>Opt.</cassette-player> | |
<tilt-steering-column>Std.</tilt-steering-column> | |
<limited-slip-differential>N/A</limited-slip-differential> | |
<trunk-anti-trap-device>Std.</trunk-anti-trap-device> | |
<transmission>5-Speed Automatic Overdrive</transmission> | |
<depth>No data in.</depth> | |
<highway-mpg>30 miles/gallon</highway-mpg> | |
<cargo-net>Std.</cargo-net> | |
<dealer-invoice>$23,305 USD</dealer-invoice> | |
<second-row-multi-adjustable-power-seat>N/A</second-row-multi-adjustable-power-seat> | |
<passenger-volume>88.00 cu.ft.</passenger-volume> | |
<engine-type>3.0L V6 SOHC 24V</engine-type> | |
<rear-shoulder-room>55.40 in.</rear-shoulder-room> | |
<rain-sensing-wipers>N/A</rain-sensing-wipers> | |
<warranty-duration>36 month</warranty-duration> | |
<driver-airbag>Std.</driver-airbag> | |
<interval-wipers>Std.</interval-wipers> | |
<tank>17.10 gallon</tank> | |
<remote-ignition>N/A</remote-ignition> | |
<wind-deflector-for-convertibles>N/A</wind-deflector-for-convertibles> | |
<warranty-distance>36,000 mile</warranty-distance> | |
<optional-seating>No data</optional-seating> | |
<exterior-color>Taffeta White</exterior-color> | |
<front-headroom>37.50 in.</front-headroom> | |
<destination-charge>No data USD</destination-charge> | |
<voice-activated-telephone>Opt.</voice-activated-telephone> | |
<air-conditioning>Std.</air-conditioning> | |
<interior-trim>Ivory Leather Interior</interior-trim> | |
<chrome-wheels>Opt.</chrome-wheels> | |
<child-safety-door-locks>N/A</child-safety-door-locks> | |
<second-row-sound-controls>N/A</second-row-sound-controls> | |
<front-suspension>Ind</front-suspension> | |
<electronic-brake-assistance>N/A</electronic-brake-assistance> | |
<cd-player>Std.</cd-player> | |
<overall-height>55.70 in.</overall-height> | |
<front-heated-seat>Std.</front-heated-seat> | |
<track-front>61.10 in.</track-front> | |
<year>2003</year> | |
<splash-guards>Opt.</splash-guards> | |
<locking-differential>N/A</locking-differential> | |
<cargo-length>No data in.</cargo-length> | |
<navigation-aid>N/A</navigation-aid> | |
<model>Accord</model> | |
<adjustable-foot-pedals>N/A</adjustable-foot-pedals> | |
<front-power-memory-seat>N/A</front-power-memory-seat> | |
<front-hip-room>54.20 in.</front-hip-room> | |
<run-flat-tires>N/A</run-flat-tires> | |
<power-windows>Std.</power-windows> | |
<second-row-removable-seat>N/A</second-row-removable-seat> | |
<alloy-wheels>Std.</alloy-wheels> | |
<glass-rear-window-on-convertible>N/A</glass-rear-window-on-convertible> | |
<rear-spoiler>Opt.</rear-spoiler> | |
<heated-steering-wheel>N/A</heated-steering-wheel> | |
<tire-pressure-monitor>N/A</tire-pressure-monitor> | |
<electrochromic-exterior-rearview-mirror>N/A</electrochromic-exterior-rearview-mirror> | |
<rust-duration>60 month</rust-duration> | |
<separate-driver-front-passenger-climate-controls>Std.</separate-driver-front-passenger-climate-controls> | |
<rear-hip-room>46.10 in.</rear-hip-room> | |
<cargo-volume>12.80 cu.ft.</cargo-volume> | |
<subwoofer>N/A</subwoofer> | |
<four_wd-awd>N/A</4wd-awd> | |
<cargo-area-cover>N/A</cargo-area-cover> | |
<removable-top>N/A</removable-top> | |
<ground-clearance>No data in.</ground-clearance> | |
<rear-suspension>Ind</rear-suspension> | |
<third-row-removable-seat>N/A</third-row-removable-seat> | |
<running-boards>N/A</running-boards> | |
<power-trunk-lid>N/A</power-trunk-lid> | |
<rear-headroom>36.10 in.</rear-headroom> | |
<side-head-curtain-airbag>Std.</side-head-curtain-airbag> | |
<trip-computer>N/A</trip-computer> | |
<manual-sunroof>Std.</manual-sunroof> | |
<standard-payload>No data lbs</standard-payload> | |
<overall-width>71.30 in.</overall-width> | |
<steering-wheel-mounted-controls>Std.</steering-wheel-mounted-controls> | |
<turning-diameter>35.40 in.</turning-diameter> | |
<body-style>COUPE 2-DR</body-style> | |
<front-shoulder-room>56.10 in.</front-shoulder-room> | |
<telematics-system>N/A</telematics-system> | |
<make>Honda</make> | |
<tachometer>Std.</tachometer> | |
<vehicle-stability-control-system>N/A</vehicle-stability-control-system> | |
<width-at-wheelwell>No data in.</width-at-wheelwell> | |
<second-row-heated-seat>N/A</second-row-heated-seat> | |
<manufactured-in>UNITED STATES</manufactured-in> | |
<tires>205/60R16</tires> | |
<power-door-locks>Std.</power-door-locks> | |
<automatic-headlights>Std.</automatic-headlights> | |
<daytime-running-lights>N/A</daytime-running-lights> | |
<front-air-dam>Std.</front-air-dam> | |
<electrochromic-interior-rearview-mirror>Opt.</electrochromic-interior-rearview-mirror> | |
<standard-towing>1000 lbs</standard-towing> | |
<front-side-airbag>Std.</front-side-airbag> | |
<curb-weight>No data lbs</curb-weight> | |
<power-sliding-side-van-door>N/A</power-sliding-side-van-door> | |
<trim-level>EX V6 coupe AT</trim-level> | |
<rear-legroom>31.90 in.</rear-legroom> | |
<passenger-multi-adjustable-power-seat>Std.</passenger-multi-adjustable-power-seat> | |
<steering-type>R&P</steering-type> | |
<width-at-wall>No data in.</width-at-wall> | |
<mpg-city>21 miles/gallon</mpg-city> | |
<traction-control>Std.</traction-control> | |
<rust-distance>Unlimited mile</rust-distance> | |
<vehicle-anti-theft>Std.</vehicle-anti-theft> | |
<high-intensity-discharge-headlights>N/A</high-intensity-discharge-headlights> | |
<passenger-airbag>Std.</passenger-airbag> | |
<skid-plate>N/A</skid-plate> | |
<full-size-spare-tire>N/A</full-size-spare-tire> | |
<rear-window-defogger>Std.</rear-window-defogger> | |
<tilt-steering>Std.</tilt-steering> | |
<front-cooled-seat>N/A</front-cooled-seat> | |
</hash> |
Anyway, we thought we'd share our little trick to get page headers using the spreadsheet gem.
module Spreadsheet | |
module Excel | |
module Writer | |
class Worksheet | |
alias_method :write_from_scratch_without_header, :write_from_scratch | |
def write_header | |
write_op opcode(:header), [@worksheet.header.bytesize, 0].pack("vC"), @worksheet.header | |
end | |
def write_from_scratch | |
write_header | |
write_from_scratch_without_header | |
end | |
end | |
end | |
end | |
class Worksheet | |
attr_accessor :header | |
def add_header(str) | |
@header = str | |
end | |
end | |
end |
So what you see here (above) goes into a config/initializer, something like RAILS_ROOT/config/initializer/enable_headers_in_spreadsheet_gem.rb. Here's what's going on:
1) We know that the write_from_scratch method is called when everything is said and done and the data is ready to be written to the spreadsheet file. So we make use of this and alias that method to write_from_scratch_without_header. Which opens us up to call our write_header method inside our write_from_scratch method which, of course, will call the original write_from_scratch method.
2) Our write_header method makes use of the already existing opcode for Header in the spreadsheet gem. It's not being used, so my guess is the developers intend on solving this issue at some point. We have to send the opcode, the length info and the string we want to write out. This was the trickiest part to figure out.
3) We expose an add_header method that simply takes a string and stores it in the header accessor. This means, to set the header, you simply say sheet.add_header("foo header").
To implement the footer, you'd just do the same thing, create a footer accessor, add a method to update it. Then build the writer_footer method with opcode(:footer) and append write_footer at the end of write_from_scratch.
Well, that took us some time to figure out, so enjoy and let me know if you have any questions.
]]>Ok, so what did we decide to do? Well first, and most importantly, we decided to keep the service up and running; for a while there it was looking pretty bleak and if you take a second to look at the numbers (financially) you can understand why. Anyway, to be as fair as possible, we did not feel this could be monetized as a subscription-based product, some months you need 500,000 VINs and some only a 1,000. Looking at the data for year, we had many questions - what plan would you pick? should the plan rollover it's unused decodings?
We discovered a lot of complexity in the subscription model, so we decided to setup the pay as you go plan, where you buy your decodings at various bulk levels. For instance, you could buy in groups of 1,000 or 10,000 or 100,000 such that you would realize savings on a price-per-VIN basis the larger the group you purchase. There is no use policy either, so you can sit on the VINs for as long as you want, or you can even buy decodings the day (even the minute) before you need them. No monthly credit card bill, no rollovers, just simple "buy what you need," and if you buy in bulk, you save.
Another consideration in doing this was having to maintain soft limits. For example, if the user purchases the 5,000 VINs per month plan, and the their site does well this month and they need 6000 VINs, should they have chosen the 10,000 VIN plan? We didn't think so, we figured no hard limit, just soft limits, and after the soft limit is hit, we would charge the additional VINs at the current rate per VIN to the user's next month's bill. We tried to explain this to a few current users that are helping us come up with reasonable rates and they were not all that thrilled about it. So we had a problem, we did not want users to pay for what they did not need, but at the same time we did not want to cut users off in the middle of a month when they hit their limit. That entire idea had to be scrapped and along with it went the idea behind the subscription plan itself. We like it though, it's simple now - buy your decodings and use your decodings, we will email you if you are getting low and may want to add decodings to your account.
Subscription models are great for static resources and static services, but not a single one of our customers decodes the same number of VINs each month, so it just won't work. So onward and upward, pay as you go and regardless of how the other API providers offer their service, we are excited to be a little different and lot cheaper as you will soon find out.
Enjoy!
]]><? | |
// VIN API decoder for PHP 4.x+ | |
define('ELEMENT_CONTENT_ONLY', true); | |
define('ELEMENT_PRESERVE_TAGS', false); | |
function getXML($vin) { | |
$curl = curl_init(); | |
curl_setopt ($curl, CURLOPT_URL, 'http://vinapi.skizmo.com/vins/'. $vin.'.xml'); | |
curl_setopt ($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'X-VinApiKey: #YOURAPIKEYGOESHERE#')); //use your API key here | |
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, true); | |
$result = curl_exec ($curl); | |
curl_close ($curl); | |
return $result; | |
} | |
function parseVIN($VIN) { | |
$info = array("model", "body-style", "country", "world-region", "vin", "engine-type", "transmission", "year", "make"); //include all values you want decoded | |
$info = sort($info); //alphabetical order | |
foreach ($info AS $type) { | |
$vin[$type] = parseDATA($type, $VIN); | |
} | |
return $vin; | |
} | |
function parseDATA($element_name, $xml, $content_only = true) { | |
if ($xml == false) { | |
return false; | |
} | |
$found = preg_match('#<'.$element_name.'(?:\s+[^>]+)?>(.*?)'. | |
'</'.$element_name.'>#s', $xml, $matches); | |
if ($found != false) { | |
if ($content_only) { | |
return $matches[1]; //ignore the enclosing tags | |
} else { | |
return $matches[0]; //return the full pattern match | |
} | |
} | |
// No match found: return false. | |
return false; | |
} | |
// Parse passed VIN to remove illegal characters | |
$vin = preg_replace("/[^A-Za-z0-9.]/", "", $_GET['vin']); | |
if(isset($_GET['vin'])) { | |
$data = getXML($vin); | |
$data = parseVIN($data); | |
if ($data != false) { | |
foreach ($data AS $key => $value) { | |
echo ucfirst($key) . ": " . $value . "<br />"; | |
} // outputs each XML node available | |
} else { | |
echo "VIN did not return any data."; | |
} | |
} | |
?> |
Public Function DecodeVIN(ByVal VIN As String, Optional ByVal Complete As Boolean = False) As String | |
Try | |
Dim aResponse() As Byte | |
Dim sResponse As String = "" | |
Dim oWebclient As New WebClient | |
Dim oEncoder As New System.Text.ASCIIEncoding | |
'Call the API | |
oWebclient = New WebClient | |
oWebclient.Headers.Add("X-VinApiKey", "APIKEYGOESHERE") | |
If Complete = True Then | |
aResponse = oWebclient.DownloadData("http://vinapi.skizmo.com/vins/" & VIN & ".xml?complete=true") | |
Else | |
aResponse = oWebclient.DownloadData("http://vinapi.skizmo.com/vins/" & VIN & ".xml") | |
End If | |
sResponse = oEncoder.GetString(aResponse) | |
'Debug.Print(sResponse) | |
Return sResponse | |
Catch ex As Exception | |
End Try | |
Return Nothing | |
End Function |
And for PHP, you have this:
<?php | |
function decodeVIN($vin){ | |
$curl = curl_init(); | |
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1); | |
curl_setopt ($curl, CURLOPT_URL, 'http://vinapi.skizmo.com/vins/'.$vin.'.xml'); | |
curl_setopt ($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'X-VinApiKey: YOUR_API_KEY_GOES_HERE')); | |
$result = curl_exec ($curl); | |
curl_close ($curl); | |
return $result; | |
} | |
$vin = preg_replace("/[^A-Za-z0-9.]/", "", $_GET['vin']); | |
if(isset($_GET['vin'])){ | |
$decoded_vin = decodeVIN($vin); | |
echo $decoded_vin; | |
} | |
?> |
Hope this helps and if you have examples for other programming languages, please let us know.
]]>If you use ruby (look for a future post with .NET and PHP examples), and want the complete dataset, you would setup your ActiveResource like this:
class VinApi < ActiveResource::Base | |
headers["X-VinApiKey"] = "YOUR_API_KEY_GOES_HERE" | |
self.site = "http://vinapi.skizmo.com" | |
self.element_name = "vin" | |
end |
And then call our API like this:
VinApi.find('1HGCM82633A004352', :params => {:complete => "true"}) |
The only change (for those of you who have already implemented phase I) is to send in a "complete" parameter with value of "true" ... upon doing so, VIN API will send you the complete dataset versus the basic (and default) dataset.
The results would look like this (in XML) and be prepared because it is lengthy:
<?xml version="1.0" encoding="UTF-8"?> | |
<hash> | |
<telescopic-steering-column>Std.</telescopic-steering-column> | |
<front-split-bench-seat>N/A</front-split-bench-seat> | |
<powertrain-warranty-distance>36,000 mile</powertrain-warranty-distance> | |
<leather-seat>Std.</leather-seat> | |
<load-bearing-exterior-rack>N/A</load-bearing-exterior-rack> | |
<front-spring-type>Coil</front-spring-type> | |
<steel-wheels>N/A</steel-wheels> | |
<maximum-gvwr>No data lbs</maximum-gvwr> | |
<rear-wiper>N/A</rear-wiper> | |
<leather-steering-wheel>Std.</leather-steering-wheel> | |
<front-brake-type>Disc</front-brake-type> | |
<rear-brake-type>Disc</rear-brake-type> | |
<overall-length>187.60 in.</overall-length> | |
<pickup-truck-bed-liner>N/A</pickup-truck-bed-liner> | |
<front-side-airbag-with-head-protection>N/A</front-side-airbag-with-head-protection> | |
<second-row-side-airbag-with-head-protection>N/A</second-row-side-airbag-with-head-protection> | |
<cd-changer>Std.</cd-changer> | |
<second-row-folding-seat>Std.</second-row-folding-seat> | |
<am-fm-radio>Std.</am-fm-radio> | |
<locking-pickup-truck-tailgate>N/A</locking-pickup-truck-tailgate> | |
<fog-lights>Opt.</fog-lights> | |
<maximum-towing>1000 lbs</maximum-towing> | |
<msrp>$25,900 USD</msrp> | |
<genuine-wood-trim>N/A</genuine-wood-trim> | |
<powertrain-warranty-duration>36 month</powertrain-warranty-duration> | |
<cruise-control>Std.</cruise-control> | |
<front-power-lumbar-support>N/A</front-power-lumbar-support> | |
<power-sunroof>Std.</power-sunroof> | |
<towing-preparation-package>N/A</towing-preparation-package> | |
<city-mpg>21 miles/gallon</city-mpg> | |
<pickup-truck-cargo-box-light>N/A</pickup-truck-cargo-box-light> | |
<front-legroom>43.10 in.</front-legroom> | |
<first-aid-kit>N/A</first-aid-kit> | |
<mpg-hwy>30 miles/gallon</mpg-hwy> | |
<sliding-rear-pickup-truck-window>N/A</sliding-rear-pickup-truck-window> | |
<cargo-area-tiedowns>Std.</cargo-area-tiedowns> | |
<wheelbase>105.10 in.</wheelbase> | |
<electronic-parking-aid>N/A</electronic-parking-aid> | |
<second-row-side-airbag>N/A</second-row-side-airbag> | |
<rear-spring-type>Coil</rear-spring-type> | |
<driveline>FWD</driveline> | |
<dvd-player>Opt.</dvd-player> | |
<tow-hitch-receiver>N/A</tow-hitch-receiver> | |
<track-rear>61.20 in.</track-rear> | |
<deep-tinted-glass>N/A</deep-tinted-glass> | |
<maximum-payload>No data lbs</maximum-payload> | |
<anti-brake-system>4-Wheel ABS</anti-brake-system> | |
<abs-brakes>Std.</abs-brakes> | |
<model-year>2003</model-year> | |
<standard-gvwr>No data lbs</standard-gvwr> | |
<driver-multi-adjustable-power-seat>Std.</driver-multi-adjustable-power-seat> | |
<automatic-load-leveling>N/A</automatic-load-leveling> | |
<power-adjustable-exterior-mirror>Std.</power-adjustable-exterior-mirror> | |
<keyless-entry>Std.</keyless-entry> | |
<standard-seating>5</standard-seating> | |
<heated-exterior-mirror>N/A</heated-exterior-mirror> | |
<cassette-player>Opt.</cassette-player> | |
<tilt-steering-column>Std.</tilt-steering-column> | |
<limited-slip-differential>N/A</limited-slip-differential> | |
<trunk-anti-trap-device>Std.</trunk-anti-trap-device> | |
<transmission>5-Speed Automatic Overdrive</transmission> | |
<depth>No data in.</depth> | |
<highway-mpg>30 miles/gallon</highway-mpg> | |
<cargo-net>Std.</cargo-net> | |
<dealer-invoice>$23,305 USD</dealer-invoice> | |
<second-row-multi-adjustable-power-seat>N/A</second-row-multi-adjustable-power-seat> | |
<passenger-volume>88.00 cu.ft.</passenger-volume> | |
<engine-type>3.0L V6 SOHC 24V</engine-type> | |
<rear-shoulder-room>55.40 in.</rear-shoulder-room> | |
<rain-sensing-wipers>N/A</rain-sensing-wipers> | |
<warranty-duration>36 month</warranty-duration> | |
<driver-airbag>Std.</driver-airbag> | |
<interval-wipers>Std.</interval-wipers> | |
<tank>17.10 gallon</tank> | |
<remote-ignition>N/A</remote-ignition> | |
<wind-deflector-for-convertibles>N/A</wind-deflector-for-convertibles> | |
<warranty-distance>36,000 mile</warranty-distance> | |
<optional-seating>No data</optional-seating> | |
<exterior-color>Taffeta White</exterior-color> | |
<front-headroom>37.50 in.</front-headroom> | |
<destination-charge>No data USD</destination-charge> | |
<voice-activated-telephone>Opt.</voice-activated-telephone> | |
<air-conditioning>Std.</air-conditioning> | |
<interior-trim>Ivory Leather Interior</interior-trim> | |
<chrome-wheels>Opt.</chrome-wheels> | |
<child-safety-door-locks>N/A</child-safety-door-locks> | |
<second-row-sound-controls>N/A</second-row-sound-controls> | |
<front-suspension>Ind</front-suspension> | |
<electronic-brake-assistance>N/A</electronic-brake-assistance> | |
<cd-player>Std.</cd-player> | |
<overall-height>55.70 in.</overall-height> | |
<front-heated-seat>Std.</front-heated-seat> | |
<track-front>61.10 in.</track-front> | |
<year>2003</year> | |
<splash-guards>Opt.</splash-guards> | |
<locking-differential>N/A</locking-differential> | |
<cargo-length>No data in.</cargo-length> | |
<navigation-aid>N/A</navigation-aid> | |
<model>Accord</model> | |
<adjustable-foot-pedals>N/A</adjustable-foot-pedals> | |
<front-power-memory-seat>N/A</front-power-memory-seat> | |
<front-hip-room>54.20 in.</front-hip-room> | |
<run-flat-tires>N/A</run-flat-tires> | |
<power-windows>Std.</power-windows> | |
<second-row-removable-seat>N/A</second-row-removable-seat> | |
<alloy-wheels>Std.</alloy-wheels> | |
<glass-rear-window-on-convertible>N/A</glass-rear-window-on-convertible> | |
<rear-spoiler>Opt.</rear-spoiler> | |
<heated-steering-wheel>N/A</heated-steering-wheel> | |
<tire-pressure-monitor>N/A</tire-pressure-monitor> | |
<electrochromic-exterior-rearview-mirror>N/A</electrochromic-exterior-rearview-mirror> | |
<rust-duration>60 month</rust-duration> | |
<separate-driver-front-passenger-climate-controls>Std.</separate-driver-front-passenger-climate-controls> | |
<rear-hip-room>46.10 in.</rear-hip-room> | |
<cargo-volume>12.80 cu.ft.</cargo-volume> | |
<subwoofer>N/A</subwoofer> | |
<four_wd-awd>N/A</4wd-awd> | |
<cargo-area-cover>N/A</cargo-area-cover> | |
<removable-top>N/A</removable-top> | |
<ground-clearance>No data in.</ground-clearance> | |
<rear-suspension>Ind</rear-suspension> | |
<third-row-removable-seat>N/A</third-row-removable-seat> | |
<running-boards>N/A</running-boards> | |
<power-trunk-lid>N/A</power-trunk-lid> | |
<rear-headroom>36.10 in.</rear-headroom> | |
<side-head-curtain-airbag>Std.</side-head-curtain-airbag> | |
<trip-computer>N/A</trip-computer> | |
<manual-sunroof>Std.</manual-sunroof> | |
<standard-payload>No data lbs</standard-payload> | |
<overall-width>71.30 in.</overall-width> | |
<steering-wheel-mounted-controls>Std.</steering-wheel-mounted-controls> | |
<turning-diameter>35.40 in.</turning-diameter> | |
<body-style>COUPE 2-DR</body-style> | |
<front-shoulder-room>56.10 in.</front-shoulder-room> | |
<telematics-system>N/A</telematics-system> | |
<make>Honda</make> | |
<tachometer>Std.</tachometer> | |
<vehicle-stability-control-system>N/A</vehicle-stability-control-system> | |
<width-at-wheelwell>No data in.</width-at-wheelwell> | |
<second-row-heated-seat>N/A</second-row-heated-seat> | |
<manufactured-in>UNITED STATES</manufactured-in> | |
<tires>205/60R16</tires> | |
<power-door-locks>Std.</power-door-locks> | |
<automatic-headlights>Std.</automatic-headlights> | |
<daytime-running-lights>N/A</daytime-running-lights> | |
<front-air-dam>Std.</front-air-dam> | |
<electrochromic-interior-rearview-mirror>Opt.</electrochromic-interior-rearview-mirror> | |
<standard-towing>1000 lbs</standard-towing> | |
<front-side-airbag>Std.</front-side-airbag> | |
<curb-weight>No data lbs</curb-weight> | |
<power-sliding-side-van-door>N/A</power-sliding-side-van-door> | |
<trim-level>EX V6 coupe AT</trim-level> | |
<rear-legroom>31.90 in.</rear-legroom> | |
<passenger-multi-adjustable-power-seat>Std.</passenger-multi-adjustable-power-seat> | |
<steering-type>R&P</steering-type> | |
<width-at-wall>No data in.</width-at-wall> | |
<mpg-city>21 miles/gallon</mpg-city> | |
<traction-control>Std.</traction-control> | |
<rust-distance>Unlimited mile</rust-distance> | |
<vehicle-anti-theft>Std.</vehicle-anti-theft> | |
<high-intensity-discharge-headlights>N/A</high-intensity-discharge-headlights> | |
<passenger-airbag>Std.</passenger-airbag> | |
<skid-plate>N/A</skid-plate> | |
<full-size-spare-tire>N/A</full-size-spare-tire> | |
<rear-window-defogger>Std.</rear-window-defogger> | |
<tilt-steering>Std.</tilt-steering> | |
<front-cooled-seat>N/A</front-cooled-seat> | |
</hash> |
That's it, just thought I'd share VIN API's Phase II.
]]>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:
class VinApi < ActiveResource::Base | |
headers["X-VinApiKey"] = "YOUR_API_KEY_GOES_HERE" | |
self.site = "http://vinapi.skizmo.com" | |
self.element_name = "vin" | |
end |
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.
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.
]]>