adapter.marketData) gives you both snapshot and streaming access to HIP-4 market data. You can poll for order books, prices, trades, and OHLCV candles, or subscribe to live WebSocket feeds that deliver updates as they arrive. All methods accept a marketId, which is the outcome ID as a string (e.g. "516"). Order book and trade feeds target side 0 (the first side) by default.
marketId is always the outcome ID as a string - not the event ID and not the coin string. For example, if the coin is "#5160", the market ID is "516".fetchOrderBook(marketId, sideIndex?)
Returns a full L2 order book snapshot for a given outcome side.
Parameters
string
required
The outcome ID as a string (e.g.
"516").number
default:"0"
Which side to fetch.
0 = first side (e.g. “Yes”), 1 = second side (e.g. “No”). Defaults to 0.Return type
Promise<PredictionOrderBook>
string
required
The outcome ID echoed back.
PredictionOrderBookLevel[]
required
Buy-side price levels, each with
price (string) and size (string).PredictionOrderBookLevel[]
required
Sell-side price levels, each with
price (string) and size (string).number
required
Server-side timestamp of the snapshot.
Example
fetchPrice(marketId)
Returns the current midpoint price for both sides of an outcome. Uses a 5-second cache backed by the allMids endpoint, so rapid successive calls avoid redundant network requests.
Parameters
string
required
The outcome ID as a string.
Return type
Promise<PredictionPrice>
string
required
The outcome ID echoed back.
array
required
One entry per side. Each entry contains:
name- generic label ("Side 0"or"Side 1"). For real side names, cross-referenceevent.markets[].outcomes[].name.price- current midpoint as a decimal string (0–1)."0"when no mid is available.midpoint- same value asprice(both fields are set identically).
number
required
Millisecond timestamp of the fetch.
The
name field returns generic labels ("Side 0", "Side 1"). To display real side names such as "Yes" or "Hypurr", fetch the event via adapter.events.fetchEvent() and cross-reference the outcome names by index.Example
fetchTrades(marketId, limit?)
Returns recent trades for a market outcome.
Parameters
string
required
The outcome ID as a string.
number
default:"50"
Maximum number of trades to return.
Return type
Promise<PredictionTrade[]>
string
required
Trade ID (from the Hyperliquid
tid field).string
required
The outcome ID.
string
required
Raw coin string (e.g.
"#5160").string
required
"buy" or "sell".string
required
Execution price as a decimal string.
string
required
Trade size.
number
required
Trade time in milliseconds.
Example
fetchCandles(marketId, interval?, start?, end?)
Returns OHLCV candle data for a market outcome.
Parameters
string
required
The outcome ID as a string.
string
default:"1h"
Candle interval. Common values:
"1m", "5m", "15m", "1h", "4h", "1d".number
Start of the time range as a Unix millisecond timestamp. Defaults to 14 days before
end.number
End of the time range as a Unix millisecond timestamp. Defaults to the current time.
Return type
Promise<HLCandle[]> - each candle contains:
Example
subscribeOrderBook(marketId, cb)
Opens a real-time WebSocket subscription to the L2 order book for a market outcome. The callback receives a full book snapshot on each update.
Parameters
string
required
The outcome ID as a string.
(book: PredictionOrderBook) => void
required
Callback invoked on each book update. Receives a
PredictionOrderBook snapshot.Return type
Unsubscribe - a () => void function. Call it to stop receiving updates and release the WebSocket subscription.
subscribePrice(marketId, cb)
Opens a real-time WebSocket subscription to midpoint prices for both sides of a market outcome. Updates are delivered whenever either side’s mid changes in the allMids feed.
Parameters
string
required
The outcome ID as a string.
(price: PredictionPrice) => void
required
Callback invoked whenever an update includes a new mid for either side of this outcome.
Return type
Unsubscribe
subscribeTrades(marketId, cb)
Opens a real-time WebSocket subscription to the trade stream for a market outcome. Each incoming trade is dispatched individually to your callback.
Parameters
string
required
The outcome ID as a string.
(trade: PredictionTrade) => void
required
Callback invoked for each individual trade.
Return type
Unsubscribe
Managing multiple subscriptions
You can hold multipleUnsubscribe functions and clean them all up together: