v1.0 schema lock. The set of keys documented on this page is the locked v1.0 contract for
vehicles[i] in the Fetch Inventory response. We will never remove a documented key, never rename a documented key, and never change a documented type without bumping to v2 (see Versioning). New fields may be added additively; your client must tolerate unknown keys.Stable schema — every documented key is always present. Every vehicle object returned by the API contains every documented field. When a value is unavailable for that vehicle, the field is populated with
null rather than omitted. Your client should expect every key to exist on every record and check for null to determine availability.Object shape
Core identifiers
VIN uniqueness is per-dealer, not global. Inventory is scoped to each dealership. The same VIN may legitimately appear as separate records at multiple dealerships when:
- A dealer group shares used-inventory across multiple rooftop websites (both sites publicly list the same physical vehicle, typically with identical
stocknumandprice) - A vehicle has recently transferred between dealers and the prior dealer’s site has not yet removed the listing
(dealership_id, vin) for uniqueness. If you need to deduplicate across dealers, prefer the record with the most recent last_seen timestamp. The internal id (UUID) is always globally unique and safe to store as a primary key on your side.Condition and certification
Specifications
Pricing fields
The API converts zero values to
null for these fields: msrp, price, internet_price, list_price, invoice_price, book_value, discount_amount, final_price, total_discounts, total_fees, city_mpg, hwy_mpg, age_days, and engine_cyl_count.price_components and photo_url_list are returned as native JSON objects/arrays, not as JSON strings. You can access them directly without parsing (e.g. vehicle.price_components.final_price in JavaScript or vehicle["price_components"]["final_price"] in Python).Colors
Dates and lifecycle
Media and features
Field availability varies by dealership website provider. Not all fields are populated for every vehicle. Fields that are not available from a given provider are returned as
null or 0.Field availability
Field availability varies per provider, per dealer, and per VIN. Plan for nulls on every field exceptid, vin, year, make, model, and condition. See Provider Coverage for per-provider field details.
How to get vehicle data
Use the Fetch Inventory endpoint to retrieve paginated vehicle records for any active dealership.Deeper per-VIN data
The base vehicle object captures the inventory fields every dealership publishes. For richer per-VIN data — third-party history records, dealer-provided service documentation, warranty paperwork, and more — see Premium Data Packages. Packages are optional add-ons, disabled by default, and enabled per-dealership through your account manager.Related concepts
- Dealerships — the dealership object and how resolution works
- Pricing Breakdown — the structured pricing object
- Premium Data Packages — optional paid add-ons for deeper per-VIN data