futures_blocks and futures_blocks:<SYMBOL>.
The channels are available on the Advanced API tier, or with the futures add-on. Contact [email protected], [email protected] or [email protected] for access.
You can find fully-functional examples that stream data from many channels here:
- Python: https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output
- Javascript: https://github.com/unusual-whales/api-examples/tree/main/examples/ws-multi-channel-multi-output-nodejs
wss://api.unusualwhales.com/socket?token=<YOUR_API_TOKEN>
then join the channel you wish to stream, for example futures_blocks:ESZ6 for block trades in ESZ6.
Omit the symbol suffix (futures_blocks) to receive block trades in every contract and strategy.
Each message carries one CME block trade in a futures contract or in a multi-leg futures strategy.
CME publishes a block trade after it executes: executed_at is when the trade executed and
reported_at is when CME reported it.
Delivery characteristics
- A block trade can be sent more than once. CME reports a block with the action
new, and reports it again withupdatewhen the block changes ordeletewhen CME removes it. The newest message for a block replaces the earlier ones. Identify a block bytrade_id,exchangeandtrade_datetogether, because CME reuses atrade_idin later sessions. A repeated report, or one older than the last message sent for the block, is not sent. - A multi-leg trade arrives as one message. For a multi-leg (
MLEG) block thelegsarray lists the legs. CME also reports each leg as a separate trade, and the channel does not send those. futures_blocks:<SYMBOL>matchessymexactly, and the symbol is case-sensitive. A multi-leg block goes to the channel of its strategy symbol, such asfutures_blocks:SR3:GN, not to the channels of its leg contracts.- Only futures and multi-leg blocks are sent.
sec_typeisFUTorMLEG. Block trades in options on futures are not sent on this channel. - The channel sends nothing when you join. To load earlier block trades, call
/futures/:contract/tradesor/futures/flowwithblocks_only=true. - Joining without access returns an error. Without the Advanced API tier or the
futuresadd-on, a join is answered with an{"error": "..."}frame and the connection stays open.
Field reference
price, qty and the leg prices and quantities are decimal strings with at most 8 decimal places.
Timestamps are Unix timestamps in milliseconds.
Each entry of
legs:
