carVertical APIcarvertical.com ↗
Decode any 17-character VIN with the carVertical API. Get vehicle identity, specs, VIN structure breakdown, and report section previews in one call.
What is the carVertical API?
The carVertical API exposes the free pre-purchase VIN preview through a single endpoint, get_vin_preview, returning 7 top-level response fields including decoded vehicle specs, a full VIN component breakdown, and the list of report sections advertised by carVertical for a given market. Supply a VIN and an optional two-letter market code to retrieve make, model, model year, manufacture year, body type, and more without purchasing a full report.
curl -X GET 'https://api.parse.bot/scraper/c1e4565b-f093-4757-ba07-98deef82c07e/get_vin_preview?vin=WBA3A5C51CF256691&market=gb' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the free pre-purchase preview carVertical shows for one 17-character VIN, in one round trip. The result is one object: `headline` (the page's own status line in the market's language, e.g. one shape is 'Success! We've found data records for this BMW 328i'), `lookup_strategy` (the site's internal decode source tag as returned, e.g. 'vss' or 'vss-records'), `vehicle` (decoded identity and specs: make, model, series, generation, model_year, manufacture_year, body_type code as the site emits it such as 'sedan', fuel_types list, engine code/description/type, cylinders, rev at max power, doors, seats — every field is null or empty when the site does not decode it for that VIN, which is common for older or non-European VINs), `vin_components` (WMI/VDS/VIS split plus manufacturer, country and region of origin, and whether the check digit validates), and `report_may_include` (the labels of report sections the market page advertises for the paid report; this is a market-level list, not per-VIN record counts, and is empty for markets whose preview page does not render it, e.g. us and de — gb renders it). The site does not publish per-VIN record counts or per-record-type availability before purchase, so none are returned. A VIN the site rejects yields a stale_input (input_not_found) response.
| Param | Type | Description |
|---|---|---|
| vinrequired | string | 17-character Vehicle Identification Number (letters A-Z except I, O, Q, and digits). Case-insensitive; returned upper-cased. |
| market | string | carVertical market (2-letter lowercase country code) whose preview page is read; controls the language of `headline` and whether `report_may_include` is rendered. Confirmed values: us, gb, de. |
{
"type": "object",
"fields": {
"vin": "the VIN as the site echoes it (upper-case)",
"market": "market code the preview was read from",
"vehicle": "decoded vehicle object: make, model, model_label, series, generation, model_year (integer), manufacture_year (integer), body_type, fuel_types (array of strings), steering_wheel_placement, engine_code, engine_description, engine_type, number_of_cylinders, rev_at_max_power_rpm, number_of_doors, number_of_seats; unknown values are null / empty array",
"headline": "the preview page's status headline, in the market's language",
"vin_components": "VIN breakdown: wmi, vds, vis, manufacturer, country, region, checksum_valid (boolean)",
"lookup_strategy": "site's decode-source tag string (e.g. vss, vss-records)",
"report_may_include": "array of report-section labels the market advertises for the paid report (market-level, may be empty)"
},
"sample": {
"data": {
"vin": "WBA3A5C51CF256691",
"market": "gb",
"vehicle": {
"make": "BMW",
"model": "328",
"series": "3 Series",
"body_type": "sedan",
"fuel_types": [
"Gasoline"
],
"generation": "F30",
"model_year": 2012,
"engine_code": "N20",
"engine_type": "Internal Combustion",
"model_label": "328i",
"number_of_doors": 4,
"number_of_seats": 5,
"manufacture_year": null,
"engine_description": "i",
"number_of_cylinders": 4,
"rev_at_max_power_rpm": 5000,
"steering_wheel_placement": "LHD"
},
"headline": "Success! We’ve found data records for this BMW 328i",
"vin_components": {
"vds": "3A5C51",
"vis": "CF256691",
"wmi": "WBA",
"region": "Europe",
"country": "Germany",
"manufacturer": "BMW",
"checksum_valid": false
},
"lookup_strategy": "vss",
"report_may_include": [
"License plate change",
"Write-off & scrap",
"Market value",
"Vehicle identity check",
"Damage records",
"Mileage history",
"Theft records",
"Outstanding finance",
"Road tax",
"MOT"
]
},
"status": "success"
}
}About the carVertical API
What get_vin_preview returns
The get_vin_preview endpoint accepts a 17-character VIN (letters A–Z excluding I, O, and Q, plus digits; case-insensitive) and an optional market parameter. The vehicle object in the response includes make, model, model_label, series, generation, model_year (integer), manufacture_year (integer), and body_type — all decoded from the VIN without requiring a paid report. The headline field returns the preview page's status line in the market's language, which can confirm whether carVertical has data records for that specific VIN.
VIN structure and validation
The vin_components object breaks the identifier into its standard segments: wmi (World Manufacturer Identifier), vds (Vehicle Descriptor Section), and vis (Vehicle Identifier Section), alongside derived fields manufacturer, country, region, and checksum_valid (boolean). The checksum_valid boolean is useful for pre-validating a VIN before making downstream calls or purchasing a full carVertical report.
Market coverage and report section labels
The market parameter accepts a 2-letter lowercase country code corresponding to a carVertical regional storefront. This controls the language of the headline field and determines which report section labels are returned in report_may_include — an array of strings describing what the paid report would cover in that market. The array may be empty for markets with limited coverage. The lookup_strategy field returns a tag string (e.g., vss, vss-records) indicating how carVertical categorises its own decode result.
Scope
This API returns only data exposed on carVertical's public free preview — vehicle identity, VIN breakdown, and advertised report sections. Accident history, odometer records, ownership history, and other paid-report data are not included in this response.
The carVertical API is a managed, monitored endpoint for carvertical.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when carvertical.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official carvertical.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Pre-validate a VIN's checksum and structure before submitting it to downstream vehicle history services
- Decode make, model, model year, and body type from a raw VIN string for used-car listing enrichment
- Determine manufacture year vs. model year discrepancies from the
vehicleobject for fleet management tools - Localise vehicle identity data by querying with different
marketcodes to match a buyer's regional context - Audit which report sections carVertical advertises per market using
report_may_includefor competitive analysis - Surface
wmi,country, andmanufacturerfields to verify vehicle origin in import/export workflows - Display a status headline in the user's local language using the
headlinefield in a multilingual car-buying app
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does carVertical have an official developer API?+
What does get_vin_preview return for a VIN carVertical has no records for?+
vehicle object and vin_components derived from the VIN's structure itself. The headline field will reflect carVertical's own no-records status message for the selected market, and lookup_strategy may differ from a record-matched result (e.g., vss rather than vss-records).Does the API return accident history, mileage records, or ownership data?+
make, model, model_year, manufacture_year, body_type), VIN structure (wmi, vds, vis, checksum_valid), and the list of report section labels (report_may_include). You can fork this API on Parse and revise it to add an endpoint that handles paid-report data if you have the necessary access.How does the `market` parameter affect the response?+
lt, de, us) selects the carVertical regional storefront to read the preview from. This changes the language of the headline field and may change the contents of report_may_include, since different markets advertise different report sections. If omitted, a default market is used.