File formats
The formats feeds are published in, how files are structured, and how the codebook joins to the data.
Feeds are published in two formats. You choose one per subscription.
JSONL
JSON Lines: one JSON object per line, UTF-8 encoded. Each line is a complete record, so you can stream a file without loading it all into memory.
{"saleId":"abc123","saleDate":"2026-06-18","vrm":"AB12CDE","cazanaId":48231,"salePrice":7450}
{"saleId":"abc124","saleDate":"2026-06-18","vrm":"LK19RGT","cazanaId":51904,"salePrice":15980}CSV
Comma-separated values with a header row, UTF-8 encoded. Suitable for loading straight into a warehouse or a spreadsheet.
sale_id,sale_date,vrm,cazana_id,sale_price
abc123,2026-06-18,AB12CDE,48231,7450
abc124,2026-06-18,LK19RGT,51904,15980Field naming
The field reference on each feed page lists names in camelCase, as they appear in JSONL. CSV delivers the same fields in snake_case, so cazanaId becomes cazana_id and saleDate becomes sale_date. The mapping is mechanical: a field shown as cazanaId is always the cazana_id column.
Structure
- One file per feed per day. Feeds are not combined into a single file. See the catalogue for the suite.
- Stable columns. Field names and order are stable within a feed, so your loader does not need to change between deliveries.
- Specification by reference. Feed rows carry a
cazanaIdrather than repeating the vehicle specification. Join it to the codebook for the full spec. - Arrays and nested values. JSONL carries arrays and objects natively. In CSV, a field that holds an array or object is written as a JSON string inside the cell. Today's feeds are flat, so this applies only to feeds that add nested fields later.
- Encoding. All files are UTF-8.
Joining the codebook
The codebook is published in the same format as your data feeds and on the same schedule. Load the day's codebook alongside your data files and join on cazanaId to expand each row to its full vehicle specification. See Codebook.