Export Schemas
An export schema defines how raw exchange data is transformed into structured columns in your exported CSV files. Each column maps to either system metadata (like timestamps) or a value extracted from the exchange’s JSON message.Built-in vs custom schemas
Every account has access to built-in schemas likeraw and normalized_trades. You can use them by name when creating an export:
Schema structure
A schema has aname, a stream_type it applies to, a list of columns, and an optional unfold configuration:
output_column (the column name in output) and exactly one of:
meta— extract a system metadata valuedata— extract from the exchange’s JSON message, with per-exchange rules
Meta columns
Meta columns extract system-level values that are consistent across all exchanges:| Value | Description |
|---|---|
collection_timestamp_ns | When Ticksupply received the message (nanoseconds) |
format field:
| Format | Output | Example |
|---|---|---|
ns (default) | Nanoseconds since epoch | 1705312800000000000 |
us | Microseconds since epoch | 1705312800000000 |
ms | Milliseconds since epoch | 1705312800000 |
s | Seconds since epoch | 1705312800 |
iso8601 | ISO 8601 string | 2024-01-15T10:00:00Z |
Data columns
Data columns extract values from the exchange’s raw JSON message. Because different exchanges use different JSON structures, you provide extraction rules per exchange.JSON extraction
Each exchange extractor has ajson field with:
path— dot-notation path into the JSON message (e.g.,"p","data.price","info.amount")type— output data type
| Type | Use for | Example |
|---|---|---|
decimal(N) | Prices, quantities (N = decimal places) | decimal(18) |
f64 | Floating-point values like percentages | f64 |
i64 | Integer values like trade IDs | i64 |
string | Text values like side (“Buy”/“Sell”) | string |
bool | Boolean flags | bool |
Transforms
When the raw value needs post-processing, add atransform — a SQL expression where {v} is the extracted value.
A common example: Binance represents trade side as a boolean (m = is the buyer the market maker?), while most downstream systems expect "buy" or "sell":
| Use case | Transform |
|---|---|
| Convert to lowercase | lower({v}) |
| Divide by 100 | {v} / 100 |
| Default for nulls | coalesce({v}, 0) |
| Extract substring | substring({v}, 1, 3) |
Unfold
Some exchanges pack multiple events into a single WebSocket message as a JSON array. For example, Bybit trade messages look like:data array becomes its own row — so the example above produces two rows.
Configure unfold per exchange by specifying the path to the array:
path values reference fields inside each array element. So "path": "p" extracts the p field from each individual trade object — not from the top-level message.
Unfold only applies to exchanges that batch events. Exchanges like Binance that send one event per message don’t need unfold rules — just omit them.
Creating schemas
Dashboard
The dashboard schema editor is the easiest way to create schemas. It provides a visual builder where you select exchanges, configure JSON paths and data types per column, set up unfold rules, and see a live JSON preview. You can switch between the visual editor and the raw JSON view at any time.API
To create a schema programmatically, use the Create export schema endpoint. Here’s a complete trade schema covering Binance and Bybit Linear with unfold:timestamp_ns, price, quantity, side — normalized across both exchanges.
Using schemas with exports
Once you have a schema (created via dashboard or API), you can reference it three ways when creating an export: By name — for built-in or saved custom schemas:Next steps
Create Export Schema
Save a reusable schema via the API
Create Export
Use your schema to export data
List Export Schemas
View all available schemas
Quickstart
End-to-end guide from subscription to export