Read-only lookups over the current printed edition. Base URL: https://api.canadianbluebook.com.
Machine-readable spec: openapi.json · reference viewer:
/v4/redoc · terms of use.
Every request carries your key: Authorization: Bearer <key>. Keys are issued by
the publisher per client. A sandbox key answers from a frozen sample of the May 2026 edition
so you can build before signing; sandbox answers carry "sandbox": true. The sandbox is a 200-record
sample (100 motorcycles, 50 ATVs, 35 snowmobiles, 15 watercraft): an empty result on a sandbox key means the
vehicle is not in the sample, not that it is absent from the book. Browse /v4/types and the drill to see
what the sample holds.
| Question | Address |
|---|---|
| Here is a VIN, what is it? (first 11 characters are enough; the serial is never stored) | GET /v4/vin/{vin} |
| Here is an insurer VIC code, what is it? | GET /v4/vic/{vic} |
| Fetch a record again by the id you stored | GET /v4/record/{id} |
| Search by words, e.g. what a customer typed ("ninja 400") | GET /v4/search?q=ninja+400&type=motorcycle&year=2022 |
| Re-value a whole portfolio: many VINs and/or ids in one call (up to 200, counts as one call) | POST /v4/batch {"vins": [...], "ids": [...]} |
| What vehicle types do you carry? | GET /v4/types |
| Which years for a type? | GET /v4/{type}/years |
| Which makes for a type and year? | GET /v4/{type}/{year}/makes |
| Exact model names for a type, year and make | GET /v4/{type}/{year}/{make}/models |
| One record by exact model name | GET /v4/{type}/{year}/{make}/{model} |
| Which edition is live? | GET /v4/edition |
| Is the service up? (no key needed) | GET /v4/health |
{type} is one of motorcycle, atv, snowmobile, watercraft.
VIN lookup covers motorcycles today; ATV, snowmobile and watercraft answer by VIC code or by year, make and model.
{
"record": {
"id": "motorcycle:1810", "vehicle_type": "motorcycle",
"year": 2026, "make": "HONDA", "model": "CBR1000SP CBR1000RR-R Fireblade SP ABS",
"legacy_model_string": "CBR1000SP CBR1000RR-R Fireblade SP ABS*",
"category": "STREET", "vic_code": "H21V00", "model_code": "CMX500A", "vin_pattern": "JH2SC824*TK",
"msrp": 36499,
"retail": {"clean": null, "average": null, "rough": null},
"wholesale": {"clean": null, "average": 27800, "rough": null},
"specs": {"engine": "1000", "weight_lb": 445, "weight_is_wet": true, "fuel_l": 16.5},
"confidence": {"tier": "formula", "units": 0, "method": "recipe",
"basis": "recipe: prior book x brand multiplier x season, ladder, smoothing"},
"edition": "Sept–Dec 2026", "committed_at": "2026-08-19",
"source": "Canadian Powersports Blue Book, All Seasons Publications Ltd."
}
}
null means the book prints no value — never read it as $0.
Every record is stamped with the edition it came from. The id includes the vehicle type and is stable
across editions. Wet weight is a flag; the old trailing * lives on in legacy_model_string.{"error": {"code": "not_found", "message": "No record for 2026 HONDA 'CBR1000' (motorcycle) in this edition. Use /v4/motorcycle/2026/HONDA/models for the exact names."}}
Codes: missing_key 401 · invalid_key 403 · rate_limited 429 (see Retry-After) ·
bad_vin 400 · unknown_type / not_found 404.
Examples the sandbox holds: /v4/vin/ZD4KEU00*H · /v4/motorcycle/years ·
/v4/snowmobile/2017/SKI-DOO/models · /v4/search?q=outlander. Live keys answer for the whole current edition, e.g. /v4/vin/JH2SC824XTK.
Response appears here. Your key stays in this browser tab.