Skip to main content

Market data

Market data needs no account, session, or key — only a Nord client.

Exchange configuration

const info = await nord.getInfo(); // same payload Nord.new caches on the client

nord.markets; // marketId, symbol, priceDecimals, sizeDecimals, mode, imf, mmf, ...
nord.tokens; // tokenId, symbol, decimals, mintAddr, ...

Resolve marketId from a symbol through nord.markets rather than hardcoding it; IDs are per deployment. See Networks and endpoints.

Orderbook

const book = await nord.getOrderbook({ marketId: 0 });
// or by symbol: await nord.getOrderbook({ symbol: "BTCUSD" })

const [bestBidPrice, bestBidSize] = book.bids[0]!;
const [bestAskPrice, bestAskSize] = book.asks[0]!;

Levels are [price, size] pairs, best first, already descaled to decimals. Each snapshot carries an updateId, which is how you order it against the incremental deltas from WebSocket streams.

Live prices and stats

const allLive = await nord.getMarketsLive();
const live = await nord.getMarketLive({ marketId: 0 });
const stats = await nord.getMarketStats({ marketId: 0 });
const tokenStats = await nord.getTokenStats(0);

Live and stats payloads carry the market's current pricing state — including the index and mark prices described in Oracle, Index, and Mark Prices — and rolling market statistics.

Trades

const recent = await nord.getTrades({ marketId: 0, pageSize: 50 });

const window = await nord.getTrades({
marketId: 0,
since: "2026-08-01T00:00:00Z", // RFC3339, inclusive
until: "2026-08-02T00:00:00Z", // RFC3339, exclusive
pageSize: 500,
});

Filters: marketId, takerId, makerId, takerSide ("bid" / "ask"), since, until, pageSize. Paginate with startInclusive, which is a trade ID by default or an action ID when paginationMode: "actionId". Non-RFC3339 timestamps throw before the request is sent.

Per-order fills:

const order = await nord.getOrder(orderId);
const fills = await nord.getOrderTrades(orderId);

Fees

const brackets = await nord.getFeeBrackets();
const tier = await nord.getAccountFeeTier(accountId);
const quotedFee = await nord.getMarketFee({ marketId: 0, feeKind, accountId });

getMarketFee quotes the fee for a fill role in quote-token units; a negative value is a fee charged. Fee tiers and rates are described in Fees.

Streaming

Polling is fine for low-frequency reads. For anything latency-sensitive, subscribe instead — see WebSockets.

These materials are provided for informational purposes only and do not constitute financial, investment, legal, or tax advice, or an offer or solicitation to buy or sell any asset. Trading digital assets and derivatives involves substantial risk, including the possible loss of some or all capital. Products may not be available in all jurisdictions. Users are responsible for evaluating suitability and complying with applicable laws.