the record layer
Data.vin
One VIN opens the full record.
Every fact about every car, cataloged: seven canonical addresses, one featured crosswalk, one batch product — posted coverage, posted license, posted price, keyed to the same seventeen characters.
A VIN is 17 characters and never uses I, O, or Q.
- data.vinThe coverage manifest — which datasets hold rows, quoted as one typed bundle
- vhr.vinWhat happened to it — the full history record
- values.vinWhat it is worth — five numbers, each with its basis
- listings.vinIs it for sale — the live-listing corpus
- sticker.vinThe original window sticker, as printed
- recalls.vinOpen campaigns and remedy status
- specs.vinThe factory specifications
- build.vinThe OEM as-built record
- vindex.vinEvery provider’s ID for this car, on one spine
the coverage manifest at data.vin/{VIN}: free · every VIN · no account
01 · the catalog
The catalog.
Seven canonical addresses. Every alias resolves to one of them.
Each dataset is a consumer product at its own address and a licensable dataset here. The names the industry uses — odometer, comps, msrp, frontline — hold no address of their own: each serves its canonical, 301 and rel=canonical, zero separate identity.
The record a consumer reads is the record a dealer prices from. Same rows, both registers.
- values.vinWhat it is worth — five numbers with their basis: retail, private party, trade-in, wholesale, auction.
comps · valuation · valuations · worth · pricing · tcovalues.vin
- listings.vinIs it for sale — the live-listings spine: price, venue, days on market, and the decode-and-slug grammar.
listing · ymm · trim · aging · adf · inventories · stocking · syndication · merchandising · frontline · modelslistings.vin
- specs.vinThe factory specifications for the vehicle as designed.
- recalls.vinIs it safe — open campaigns and remedy status; the retention engine.
alertsrecalls.vin
- sticker.vinHow it left the factory — the window sticker, the birth record: MSRP and factory options, as printed.
msrp · invoice · invoicessticker.vinmanuals — held
- build.vinThe OEM as-built record for one serial number.
- vhr.vinflagshipThe full report — history, records, everything, in one paid document: owners, odometer readings, title events, each with its timestamp.
odometer · flood · theft · totaled · logbookvhr.vinowners — held
A live address links. A held or parked name renders as a plain mark until it returns — a data change, never a layout change.
7MMVABDM3RN163785
2024 Mazda CX-50
- Title recordin the record
- Odometer readingsin the record
- Recall checkrecalls.vin
- Window stickersticker.vin
- Market valuesvalues.vin
Figures render live at the address. This page states structure, not prices.
02 · featured
Vindex.vin
The Rosetta Stone of automotive industry data.
One neutral YMMTS spine — year, make, model, trim, style — with every industry provider’s IDs and trim, style, color, and option codes cross-mapped between all of them. A provider’s ID is a sameAs edge on the spine, never a join key; every other row in this catalog joins through it.
A mapping posts only once verified, with its timestamp. Confidence is a number the buyer reads, not an adjective this page uses.
- resolve(vin | provider:id) → the identity manifest: every known provider ID, each edge scored
- Pairwise resolution — provider A’s ID to provider B’s, neutral and scored
- Where the VIN bottoms out at pattern level, candidates enumerate with scores — never a silent pick
- Coverage posted per provider pair, per model year, before purchase
// 200 · every provider's ID for one VIN, evidence-stated { "type": "vindex.identity", "vin": "7MMVABDM3RN163785", "spine": { "year": 2024, "make": "Mazda", "model": "CX-50", "trim": <resolved, or candidates with scores>, "style": <resolved, or candidates with scores> }, "edges": [ { "provider": <provider mark>, "id": <that provider's ID>, "confidence": <posted, 0–1>, "verified": <RFC 3339> } ], "coverage": <posted per provider pair, per model year> }
03 · the batch product
Enrich.vin
Upload the file. The rows come back enriched.
CSV or XLSX, one VIN column. Every row returns with the VIN decoded and the record appended — year, make, model, trim, and the datasets the license names. The same capability runs as API and MCP through apis.vin.
- ininventory.csv · one VIN column
- outthe same file, every row appended: decode · the licensed datasets
- viaupload at enrich.vin · API and MCP through apis.vin
Per-row price posts at the address — a number is posted or it is absent.
04 · the seam
What and how.
data.vin sells the catalog. apis.vin sells the key.
The WHAT data.vin
Coverage · license · posted price · the x402 per-VIN bundle. The manifest at data.vin/{VIN} states which datasets hold rows and prices the full record as one typed bundle. It renders no member’s face and is noindex by construction — the readings live at the member addresses.
The bundle composes the members’ posted prices; it never undercuts a member’s gate, and a bundle containing the history report credits per vhr.vin’s posted rule — the member’s rule, restated, never re-priced.
- Freeread the catalog · quote any VIN$0
- Startermetered · per-call price postedposts live
- Growthmetered · volume tierposts live
- Scalemetered · volume tierposts live
- Bulk / firehosedataset licensing at portfolio scalepriced on paper
Bundles settle when the gate clears: the upstream data license must name catalog resale before any bundle settles; the manifest quotes today, free.
The HOW apis.vin
Key, SDK, quota, and MCP are apis.vin’s job — this page prices what it integrates. One MCP server for the whole platform: apis.vin/mcp. One account, every address: auth.vin.
Every paid action returns a typed, machine-readable offer — posted amount, x402 settlement, expiry — so the worst case is on paper before the first byte moves. An agent buying data reads this same page.
held at this layer
- records.vinthe full record corpus — decode, spec, build, history, valuation — reserved as its own future face
- battery · batteries · sohrecord facts, held until an EV source binds
- driversthe person referent; every address in this family keys to the vehicle
A held name is owned inventory with no bound source: it renders as a plain mark, never an anchor, until a source binds.
For the agent you send
The agent reads the same record you do. Same two routes, three representations — the numbers never differ between them.
motions: B2A · B2A2D
- B2A — the buyer is an agent — no human leaf; discover, bind, pay, worst-case cost posted before the call
- B2A2D — the capability embeds downstream — reserved acts route back to a credentialed human leaf
curl https://data.vin/ -H 'accept: text/markdown' → the markdown twin of this page
curl https://data.vin/{VIN} -H 'accept: application/json' → the record as typed evidence objects
curl https://data.vin/{VIN} -H 'accept: text/markdown' → the record's markdown twinMachine surfaces on this host: /llms.txt · /icp.json · /.well-known/agents.json · one estate MCP server — apis.vin/mcp (every door a lens; tool results carry the door URL).
Attribution: X-Client-Type: html | md | json | mcp — read for agent-led demand attribution; it never changes the record.