Massive's order imbalance data comes from one place, the NOI channel on the stocks WebSocket, and two limits trip people up. The feed is real-time only, with no REST endpoint or flat file to load past imbalances from. And no Stocks plan includes it, Stocks Advanced and Stocks Business among them: imbalances are a separate expansion you add.
Applies to
- Plans: the Imbalances Expansion, sold as NYSE Order Imbalances on the pricing page for individual use, or Imbalances Expansion Business. Stocks Basic, Starter, Developer, Advanced and Stocks Business do not include it.
- Feeds: the NOI channel on wss://socket.massive.com/stocks, in real time. It is not on wss://delayed.massive.com/stocks: a NOI subscribe there is refused even for a key that has the expansion.
- Asset classes: US stocks listed on the New York Stock Exchange.
Which stocks the imbalance feed covers
The order imbalance feed covers stocks listed on the New York Stock Exchange, and its messages carry NYSE's exchange id, 10, in x. The changelog entry that announced the feed says it "covers all NYSE-listed tickers", and the Net Order Imbalance documentation describes it as focused on NYSE-listed securities. Stocks listed on Nasdaq, NYSE Arca, NYSE American or Cboe BZX get no imbalance messages, so neither does an ETF such as SPY, which is listed on NYSE Arca. To check a ticker, read primary_exchange from /v3/reference/tickers/{ticker}: XNYS means the feed covers it.
How to subscribe to order imbalances
- Connect to wss://socket.massive.com/stocks.
- Send {"action":"auth","params":"YOUR_API_KEY"} and wait for auth_success.
- Subscribe to NOI.* for every NYSE-listed stock, or to named tickers such as NOI.JPM,NOI.KO.
{"action":"subscribe","params":"NOI.*"}
Response
[{"ev":"status","status":"success","message":"subscribed to: NOI.*"}]
Messages then arrive as JSON arrays. This is a closing auction message for JPM from the 8 October 2026 session:
[{"ev":"NOI","T":"JPM","t":1791489300635990818,"at":1600,"i":1184,"a":"C","x":10,"o":-94922,"p":744583,"b":329.11,"r":331.21}]
t is 15:55:00.636 ET, in nanoseconds since the Unix epoch. at 1600 and a C mark the 4:00 PM closing auction, and x 10 is the New York Stock Exchange in /v3/reference/exchanges. The imbalance quantity o is -94,922 shares and the paired quantity p is 744,583 shares.
What an order imbalance message contains
An order imbalance message carries these fields, as listed in the Net Order Imbalance documentation:
| Field | Meaning |
|---|---|
| ev | Event type, NOI |
| T | Ticker |
| t | Timestamp, in nanoseconds since the Unix epoch |
| at | Scheduled auction time as hour x 100 + minutes, Eastern Time: 930 is 9:30 AM, 1600 is 4:00 PM |
| a | Auction type, in the table below |
| i | Sequence number for the symbol |
| x | Exchange id, mapped by /v3/reference/exchanges |
| o | Imbalance quantity, in shares |
| p | Paired quantity, in shares |
| b | Book clearing price |
The order imbalance message has no separate buy or sell side field. The imbalance quantity o can be positive, zero or negative, as in the JPM message above, and the documentation does not say what the sign means. Messages also carry an r field that the documentation's field list does not include.
The auction type in a is one of these codes, with the documentation's notes on where each applies:
| a | Auction | Note in the documentation |
|---|---|---|
| O | Early Opening Auction | non-NYSE only |
| M | Core Opening Auction | none |
| H | Reopening Auction (Halt Resume) | none |
| C | Closing Auction | none |
| P | Extreme Closing Imbalance | NYSE only |
| R | Regulatory Closing Imbalance | NYSE only |
When order imbalance messages arrive
Order imbalance messages for the closing auction start at 3:50 PM ET, when NYSE begins publishing its closing imbalance information (NYSE opening and closing auctions fact sheet), and stop when the closing auction runs, just after 4:00 PM. Messages for the opening auction and for reopenings after a trading halt arrive around those auctions: the documentation names the open at 9:30 AM ET and the close at 4:00 PM ET as the usual times, with halts and mini-auctions in between. Outside those windows the channel is quiet.
Historical order imbalance data
Massive has no historical order imbalance data. The imbalance feed exists only on the WebSocket: the REST and flat-file documentation lists no imbalance endpoint or file, and the Net Order Imbalance documentation gives its plan history as "Not applicable". To build a history, record the messages as they stream.
Nasdaq-listed stocks
Nasdaq-listed stocks have no order imbalance data on Massive. Nasdaq publishes its own imbalance information for its opening and closing crosses, the Net Order Imbalance Indicator (NOII) (Nasdaq Opening and Closing Crosses FAQ), and Massive does not carry it, on the NOI channel or anywhere else.
What Massive does have for a Nasdaq-listed stock is the result of the closing cross, once it has run. The cross appears in /v3/trades as a condition 8 trade and a condition 15 print from Nasdaq, exchange 12, at the official closing price:
curl -X GET "https://api.massive.com/v3/trades/NVDA?timestamp.gte=1790884740000000000×tamp.lt=1790885700000000000&order=asc&sort=timestamp&limit=50000&apiKey=YOUR_API_KEY"
Response, trimmed to Nasdaq's closing cross on 1 October 2026:
{
"results": [
{ "conditions": [8, 9, 41], "exchange": 12, "price": 230.86, "sip_timestamp": 1790884800542415455, "size": 1.1786181e+07 },
{ "conditions": [15], "exchange": 12, "price": 230.86, "sip_timestamp": 1790884800542424374, "size": 1.1786181e+07 }
],
"status": "OK"
}
Both rows are at 16:00:00.542 ET: NVDA's closing cross executed 11,786,181 shares at 230.86. That is the cross's outcome, not the imbalance that led up to it. The trades endpoint is included in Stocks Developer, Stocks Advanced and Stocks Business, per the trades documentation.
If you see an error
{"ev":"status","status":"error","message":"not authorized"} in reply to a NOI subscribe means the key does not carry the Imbalances Expansion, or the subscribe went to the delayed cluster. A Stocks plan on its own, Stocks Advanced included, gets this reply, and so does any key on wss://delayed.massive.com/stocks, which has no NOI feed. Fix: connect to wss://socket.massive.com/stocks. If you do not have the expansion, add it from the pricing page, or from the business page for a business license. If you already have it:
- Check that your key carries it at massive.com/dashboard/products.
- If you added it recently, wait a few minutes and subscribe again.
- If it is still refused, start a chat at massive.com/contact.
A subscription confirmed with subscribed to: NOI.* and then nothing for a long time is not a fault. Messages arrive around scheduled auctions and trading halts, so the channel is quiet for most of the trading day.

