# Free sample files & downloads

> Canonical HTML: https://cryptostruct.com/download · This document: https://cryptostruct.com/download.md · Shop: https://cryptostruct.com/shop (€1 per instrument-day) · Agents: https://cryptostruct.com/llms.txt

One complete recorded UTC day per curated instrument — the exact file the shop sells (zstd-compressed JSON lines, line 1 = instrument master data), free and without an account. Every sample also serves flat CSV/Parquet exports via `?format=`.

## Samples

| Venue | Instrument | Class | UTC day | Size (zstd) | Download |
| --- | --- | --- | --- | --- | --- |
| Binance USDT-M | BTCUSDT-PERP — High-volatility Bitcoin day — recorded 2026-07-06 | perpetual | 2026-07-06 | 1.64 GB | https://cryptostruct.com/api/download/sample/67824/2026-07-06 |
| Binance USDT-M | BTCUSDT-PERP | perpetual | 2026-10-02 | 1.69 GB | https://cryptostruct.com/api/download/sample/67824/2026-10-02 |
| Bybit | BTCUSDT-PERP | perpetual | 2026-10-02 | 327.2 MB | https://cryptostruct.com/api/download/sample/2449/2026-10-02 |
| Binance USDT-M | TSLAUSDT-PERP — Tesla (TSLA) tokenized-stock perpetual | perpetual | 2026-10-02 | 123.6 MB | https://cryptostruct.com/api/download/sample/8702/2026-10-02 |
| Binance USDT-M | SNDKUSDT-PERP — SanDisk (SNDK) tokenized-stock perpetual | perpetual | 2026-10-02 | 472.3 MB | https://cryptostruct.com/api/download/sample/8745/2026-10-02 |
| Kalshi | KXBTC15M-26SEP281100-00 — Bitcoin 15-minute up/down — the day's busiest contract | prediction | 2026-09-28 | 34.4 MB | https://cryptostruct.com/api/download/sample/19112572/2026-09-28 |
| Polymarket | btc-updown-5m-1790606700 — Bitcoin 5-minute up/down — the day's busiest contract | prediction | 2026-09-28 | 10.2 MB | https://cryptostruct.com/api/download/sample/19086267/2026-09-28 |
| Deribit | BTC-30OCT26-90000-C-CALL — Bitcoin option — most-traded contract, greeks included | call | 2026-10-01 | 7.9 MB | https://cryptostruct.com/api/download/sample/11751451/2026-10-01?s=deribit-btc-options |
| Deribit | ETH-16OCT26-2500-P-PUT — Ether option — most-traded contract, greeks included | put | 2026-09-30 | 6.9 MB | https://cryptostruct.com/api/download/sample/18532336/2026-09-30?s=deribit-eth-options |
| Okx | SOL-USD | spot | 2026-09-30 | 8.2 MB | https://cryptostruct.com/api/download/sample/242985/2026-09-30 |
| Coinbase | LTC-USD | spot | 2026-10-02 | 476.2 MB | https://cryptostruct.com/api/download/sample/15084/2026-10-02 |
| Binance Spot | BTCUSD | spot | 2026-10-02 | 13.0 MB | https://cryptostruct.com/api/download/sample/1859971/2026-10-02 |
| Binance Spot | ETHUSD | spot | 2026-10-02 | 8.3 MB | https://cryptostruct.com/api/download/sample/2431025/2026-10-02 |

Derived exports of any sample: append `?format=trades|bbo|liquidations` with `.csv.gz` or `.parquet` (e.g. `?format=trades.parquet`). Browser replay of a sample's order book: https://cryptostruct.com/analyze/orderbook.

## Derived formats

- **trades** (.csv.gz · .parquet): Every fill: `exchange_timestamp, adapter_timestamp, trade_id, side, price, quantity` — microsecond UTC timestamps, side = buy/sell.
- **bbo** (.csv.gz): Top of book: `bid_price, bid_quantity, ask_price, ask_quantity` per update — not on every venue (BitMEX, Coinbase, Kraken spot, Kalshi, Polymarket record depth only).
- **liquidations** (.csv.gz · .parquet): Forced liquidations with the bankruptcy price (derivatives venues, 2026+ files).

Local conversion with the bundled reader: `python3 cryptostruct_reader.py trades <file>.txt.zst --out trades.parquet`

## AI toolkit

- Agent Skill (zip, 45 KB): https://cryptostruct.com/skills/cryptostruct-market-data.zip — `unzip cryptostruct-market-data.zip -d ~/.claude/skills/`
- SKILL.md (readable standalone): https://cryptostruct.com/skills/cryptostruct-market-data/SKILL.md
- Tick-file format reference: https://cryptostruct.com/skills/cryptostruct-market-data/references/day-file-format.md
- Python reader (dependency-free): https://cryptostruct.com/skills/cryptostruct-market-data/scripts/cryptostruct_reader.py
- Market-data specification: https://docs.cryptostruct.com/market-data-api/protocol/ · spec package (SBE schema + sample messages, v3.88.0): https://cryptostruct.com/docs/marketdata-spec-package.zip

## Notes

**Full archive & training data.** The samples are the shop files, byte for byte. What a day file holds, every product line and price and how to buy in bulk are on the [historical data overview](https://cryptostruct.com/historical-data); dataset sizes, labels and a Parquet pipeline for model builders are on the [training data page](https://cryptostruct.com/training-data).

**Compression.** Files are compressed with zstd — decompress with `zstd -d <file>` or any libzstd tooling.

**Timestamps.** Timestamps are taken from the exchange (if available) and recorded locally in the exchange’s specific colocation as soon as the event arrives.

**Instrument IDs.** Unique instrument IDs remain constant throughout an instrument’s existence within the CryptoStruct system — the same IDs you see in the Data Shop and the analytics.

**1-minute statistics.** Prefer 1-minute statistics over raw ticks? A rolling 24h CSV is free on every instrument’s [analyze page](https://cryptostruct.com/analyze/instrument) — 22 columns of OHLCV, VWAP, trades, spread and book depth, no parsing required. [Premium](https://cryptostruct.com/premium) extends it to a rolling 7-day CSV and to any recorded day.

**Bulk downloads.** Bought a lot of days? Never fetch prediction-bundle contracts one file at a time — a single request returns a whole series-day as one archive. On any order download URL: `?kind=series_day&zip=1` streams every contract file of that day, `&manifest=1` lists them, `&status=1` reports readiness, and `&restore=1` brings a whole day back from cold storage in one call. Add `&complete=1` for scripted pulls: it turns a partially-available day into an error instead of a short archive, so a successful response always means you got everything. Poll `&status=1` and fetch once it reports no cold files.

**Whole date ranges in one file.** For many days of the same series there is one request that covers all of them: `/api/download/order/{order}/{bundle}/range?kind=series_day&from=…&to=…` streams every owned day in that window as a single uncompressed `.tar` — the “Download N days (.tar)” button on a bundle in your account does exactly this. It is strict: the response carries an exact `Content-Length` and a strong `ETag`, and anything less than the full length is a truncated transfer, never a quietly shorter archive. That also makes it resumable — `curl -C -` picks up where it stopped. The window covers the days of ONE order, and it takes the same `&status=1`, `&restore=1` and `&manifest=1` companions.

## FAQ

**What do the free sample downloads contain?**

One complete, settled UTC trading day per curated instrument — tick-by-tick trades, full Level-2 order-book depth and liquidation events, byte-identical to the files sold in the [Data Shop](https://cryptostruct.com/shop). Most sample days roll forward daily, the prediction-market and Deribit option rows always pick the busiest recent contract (an option file also carries the mark-price stream with implied volatility and greeks), and one high-volatility Bitcoin day is pinned; no account or email required. Every prediction-series page under [/prediction-markets](https://cryptostruct.com/prediction-markets) and every option chain under [/options-data](https://cryptostruct.com/options-data) additionally offers its own free contract file.

**How do I download a large order without fetching every file separately?**

Request one archive per day instead of one request per file. A prediction-series day bundle can hold several thousand contract files, and the order download URL with kind=series_day and zip=1 streams all of them as a single archive — so a full series history is a few hundred requests, not hundreds of thousands. The same URL also accepts manifest=1 to list a day’s files, status=1 to check readiness, and restore=1 to bring an entire day back from cold storage in one call. For scripted downloads add complete=1, which makes a partially-available day return an error rather than a short archive, so a successful response always means every file is included. Days older than about a month sit in deep-archive storage and need roughly twelve hours to become retrievable after a restore, and they stay retrievable for about seven days. There is no per-account download quota that a paced archive-per-day loop would reach.

**Can I download a whole date range in one request?**

Yes, for prediction-series bundles: the range endpoint on an order download URL takes kind=series_day with from and to, and streams every owned day in that window as one uncompressed tar file. Your account shows it as a “Download N days (.tar)” button on the bundle. Because the archive layout is fixed, the response carries an exact content length and a strong entity tag, so the download resumes where it stopped with curl -C - and a short transfer is always a visible error rather than a quietly incomplete archive. The window covers the days of a single order, up to one hundred days per stream, and the same URL also accepts status=1 to check the whole range, restore=1 to bring it back from cold storage, and manifest=1 to list what it will contain.

**Can I download the data as CSV or Parquet?**

Yes — every sample and every purchased tick day also exports as gzipped CSV or Parquet at no extra cost, via the ▾ menu on any Download button: trades and liquidations (derivatives, 2026 onward) in both formats, top-of-book (BBO) quotes as CSV. Timestamps are integer microseconds UTC and the columns load straight into pandas, polars or DuckDB. BitMEX, Coinbase, Kraken spot and the prediction markets record full order-book depth without a separate BBO stream — there the free reader script converts depth locally.

**What is the native tick format?**

One zstd-compressed JSON-lines file per instrument per UTC day: the instrument masterdata header on line one, then every order-book update, trade, liquidation and funding event with nanosecond timestamps, in one schema across all venues — documented in the [market-data specification](https://docs.cryptostruct.com/market-data-api/protocol/).

**What is SBE (Simple Binary Encoding)?**

Simple Binary Encoding is the compact binary wire format our realtime feeds offer next to JSON — the same market-data messages, delivered over WebSocket or Unix domain socket. The spec package above ships the SBE schema XML plus sample messages for every type in both encodings; see the [SBE documentation](https://docs.cryptostruct.com/market-data-api/sbe/).

**How do I parse the multi-gigabyte tick files?**

Use the free stdlib-only Python reader from the AI toolkit — it streams files of any size and converts trades, depth-grid snapshots at any interval, prices and funding to CSV or Parquet locally. Agents can install the [Agent Skill](https://cryptostruct.com/download#ai-toolkit) for the full format reference and ready-made recipes.

## Buying the full archive

- Web: https://cryptostruct.com/shop (pick an instrument, then days in the calendar) — or a pre-filled link `https://cryptostruct.com/shop?i=<instrument_id>&d=<from>..<to>`
- MCP: https://cryptostruct.com/mcp (docs https://cryptostruct.com/docs/mcp.md) · HTTP: https://cryptostruct.com/docs/api.md
