Price doesn’t tell
the whole story.
Behind every candle, buyers and sellers leave a footprint. Fathom Charts makes it readable.
10 order flow indicators on futures, computed for you, delivered to your tools.
An API built for speed. Your indicators pushed over WebSocket on every trade, and the same calculations on historical data.
Bubbles: traded volume · Footprint: bid / ask · Frame: most traded price (POC) · Prices in points
THE MARKET MOVES. YOUR TOOLS FOLLOW.
We compute your indicators and push them over WebSocket. No polling: the stream comes to you.- CalculationServer-side, on every trade
- WebSocket APIupsert →
- Your toolsUpdated instantly
- messages replayed
- 0
- Fathom Trades ≥ 20
- 0
- contracts traded
- 0
- demo
- real session, replayed
Real trades, read by Fathom.
Replay of a real session · September 24, 2026
Ten indicators.
A sharper read.
Where is volume concentrating? Which levels are being defended? When does pressure switch sides? Each indicator answers one precise question.
Fathom Trades
Size leaves a trace. Isolate aggressive orders above your threshold and see exactly where they hit the market.
Explore this indicator ↗Replay of a real session · simplified previews for the demo.
All indicator pages ↗Less noise.
More context.
Not every trade matters. Move the Fathom Trades threshold to keep only the biggest ones. The chart follows, and so does your API request.
- big trades kept
- —
- per hour (projected)
- —
- total contracts
- —
- data received (bytes)
- —
Buy Sell · size = volume · grey dots = below the threshold
{
"t": "subscribe",
"sub": "bt",
"instrument": "NQ.front",
"indicator": "big-trades",
"params": {
"minimum": 30
},
"mode": "confirmed",
"from": "live"
}The stream keeps flowing.
Into your tools.
No more polling. The API pushes every update of your indicators over WebSocket, as it happens. The TypeScript SDK handles reconnection and resumes the stream right where it left off.
- wss Your indicators in real time, over a single connection
- REST The same calculations on historical data
- NDJSON Compressed exports for your backtests
import { FathomChartsStream } from '@fathom-charts/sdk';
import type { BigTradesData } from './fathom-charts-types.js';
const stream = new FathomChartsStream({
url: 'wss://stream.fathomcharts.com/v1',
apiKey: process.env.FATHOM_CHARTS_API_KEY!,
});
const bigTrades = stream.subscribe<BigTradesData>({
instrument: 'NQ.front',
indicator: 'big-trades',
params: { minimum: 30 },
mode: 'confirmed',
});
for await (const event of bigTrades) {
if (event.type === 'upsert') {
console.log(event.data.side, event.data.volume, event.data.price);
}
}npx wscat -c wss://stream.fathomcharts.com/v1 -H "Authorization: Bearer $FATHOM_CHARTS_API_KEY"
> {"t":"subscribe","sub":"bt","instrument":"NQ.front","indicator":"big-trades","params":{"minimum":30},"mode":"confirmed","from":"live"}
< {"t":"subscribed","sub":"bt","topic":"b2af53ed8e6cfc8620b4754c0836e0e2","cursor":"20720.111120.0"}
< {"t":"snapshot","sub":"bt","cursor":"20720.111120.0","items":[]}
< {"t":"upsert","sub":"bt","cursor":"20720.111434.0","id":"1790256600533489285:0","final":true,"ts":"1790256600535054015","data":{"side":"sell","volume":66,"trades":32,"start":"1790256600533489285","end":"1790256600533489285","first":122041,"last":122017,"price":122017,"vwap":122027.71212121213}}curl https://api.fathomcharts.com/v1/indicator-queries \
-H "Authorization: Bearer $FATHOM_CHARTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"instrument":"NQZ6","indicator":"big-trades","params":{"minimum":30},
"from":"1790256600000000000","to":"1790258100000000000"}'Start for free.
Go real time whenever you want.
Test your integration on the Sandbox, no credit card needed. Then add real time, historical data, or both: plans stack.
Scroll the table to see all three plans →
| YOUR ACCESS One engine. | 01SandboxFree Your first integration, no commitment. | 02LiveMonthly subscription Your indicators in real time, in your tools. | 03HistoricalOne-time purchase, lifetime access The full history for your research and backtests. |
|---|---|---|---|
| WebSocket stream | 10-min delay | Real time | 10-min delay |
| Concurrent connections | 1 | 5 | 1 |
| Concurrent subscriptions | 2 | 50 | 2 |
| Custom configurations | 1 | 25 | 1 |
| Historical API | Last 7 days | Not included | Full available history |
| Exports per month | Not included | Not included | 20 GB |
| REST requests per minute | 60 | 300 | 1,200 |
Live + Historical: real time and the full history, with the higher limits of both plans.
Prices include tax: in euros in France and the rest of Europe, in US dollars elsewhere.
Create my free account Compute budget, quotas and technical details: Limits.
Before you
get started.
Where does the data come from?
Our indicators are computed from market trades delivered by Databento, a licensed distributor. If the source is delayed or down, the stream tells you: no data is ever made up or filled in.
How can I try it for free?
Create an account with your email address: you start on the Sandbox, no credit card needed. 10-minute delayed stream, 7 days of history, the same calculations as in real time. When you move to Live, just create a real-time key: your code stays the same.
How does payment work?
Live is a monthly subscription, Historical a one-time purchase with lifetime access. Prices include tax, in euros in France and the rest of Europe, in US dollars elsewhere. Customers billed in France pay through Stripe; everyone else pays through Creem, our merchant of record. Details in Plans and billing.
Can I redistribute the streams?
No. The indicators are derived from market data: they are for the account holder only, under the market data license terms included in our terms of use. Any distribution to third parties (public app, resale, display to your clients) requires a specific license agreement.
Does historical data match the real-time stream?
Yes. Both use the same trades and the same calculation engine, and we compare results field by field on real sessions. If a period is not covered, the API answers NOT_COVERED instead of returning partial data.
Which instruments are covered?
The futures streamed by the service, listed with their tick size by GET /v1/instruments. An alias such as NQ.front follows the active contract and switches at rollover, announced by a reset message.
What if my app reads too slowly?
The API merges pending provisional updates and never drops a final result. If your app stays stuck, the connection is closed and you resume from the last cursor received. Thresholds and resumption are covered in the WebSocket protocol.
Does Fathom Charts place orders?
No. Fathom Charts provides indicators to feed your analysis: it does not connect to your broker, never places orders and gives no investment advice.
Look beyond
the candles.
Volume. Pressure. The levels taking shape.
Plug them into your tools today, for free.