Subscribe to a stream: broker API endpoints compared
12 documented calls from 2 of the 12 APIs with endpoint records here, and 16 functions and messages from 8 APIs whose interfaces are not HTTP, each with the page it was read on.
Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.
What this task is
Streaming keeps one connection open and lets the provider push each update to you as it happens, in place of asking again and again. It suits live prices and notices of fills.
Only streams that start with a documented HTTP call appear in the table below. Some providers stream over a separate protocol with its own client library, which has no HTTP endpoint to list, so an absence here says nothing about whether a provider streams.
The documented endpoint, API by API
Ordered by the name of the broker or platform API, then by path. The order is not a ranking. Open a row for the parameters, the response and a sample request.
| Broker | Endpoint | What the record says it does | Source |
|---|---|---|---|
| OANDA | GET/v3/accounts/{accountID}/pricing/stream | Streaming prices over one long lived HTTP connection. Newline delimited JSON: PRICE and HEARTBEAT objects. | developer.oanda.comchecked |
| OANDA | GET/v3/accounts/{accountID}/transactions/stream | Streaming account activity (fills, cancels, funding) from the moment you connect. Newline delimited JSON. | developer.oanda.comchecked |
| Saxo OpenAPI | POST/chart/v3/charts/subscriptions | Sets up a streaming subscription on chart samples and returns the most recent completed ones as a first snapshot. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/accounts/subscriptions | Sets up a streaming subscription on a list of accounts and returns a first snapshot of them. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/balances/subscriptions | Sets up a streaming subscription on a balance and returns a first snapshot of it. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/closedpositions/subscriptions | Sets up a streaming subscription on a list of closed positions and returns a first snapshot of them. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/netpositions/subscriptions | Sets up a streaming subscription on a list of net positions and returns a first snapshot of them. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/orders/subscriptions | Sets up a streaming subscription on a list of open orders and returns a first snapshot of them. | developer.saxochecked |
| Saxo OpenAPI | POST/port/v1/positions/subscriptions | Sets up a streaming subscription on a list of positions and returns a first snapshot of them. | developer.saxochecked |
| Saxo OpenAPI | POST/root/v1/sessions/events/subscriptions | Sets up a streaming subscription on the session's capabilities, so a change in them is pushed to you. | developer.saxochecked |
| Saxo OpenAPI | POST/trade/v1/infoprices/subscriptions | Sets up a streaming subscription on info prices for a list of instruments and returns a first snapshot. | developer.saxochecked |
| Saxo OpenAPI | POST/trade/v1/prices/subscriptions | Sets up a streaming price subscription on one instrument and returns an initial snapshot. Updates then arrive on your WebSocket connection under the same ContextId and ReferenceId. | developer.saxochecked |
The same task where the interface is not HTTP
Some platform APIs, and the streaming interfaces of some broker APIs, are not sent as HTTP requests. A function is called from a program in its language, and a message is sent over an open connection. None has a method or a path, so each row is labelled with its kind and its interface. A record is put on this page by hand, from what the vendor's page says the call does, and one call can do several jobs, so the same function can be on more than one task page. Ordered by the name of the broker or platform API, then interface, then name.
| API | Call | What the record says it does | Source |
|---|---|---|---|
| Bitget | messageaccount Bitget WebSocket API | The unified trading account: equity, margin figures and the balance of each coin. Bitget says data is pushed on first subscribing, when orders are filled, when funds are settled and when a balance changes. | bitget.comchecked |
| Bitget | messageorder Bitget WebSocket API | The orders of the unified trading account. Bitget says nothing is pushed on first subscribing, and that a push follows when a spot, margin or futures order is placed, filled or cancelled. | bitget.comchecked |
| Bitget | messageticker Bitget WebSocket API | The latest price of one symbol with its best bid and ask and its 24 hour figures. Bitget says updates are pushed every 200 ms while the market is changing. | bitget.comchecked |
| Capital.com | messagemarketData.subscribe Capital.com WebSocket API | Subscribes to live price updates for a list of epics. Capital.com's page gives 40 as the most epics. An answer confirms each epic, then a quote message arrives for each price update. | open-api.capital.comchecked |
| Capital.com | messageOHLCMarketData.subscribe Capital.com WebSocket API | Subscribes to candlestick bar updates for a list of epics, at chosen resolutions and for a chosen bar type. An answer confirms each combination, then an ohlc.event message arrives for each update. | open-api.capital.comchecked |
| cTrader Open API | messageProtoOASubscribeLiveTrendbarReq cTrader Open API | Subscribes to live bars of one size for one symbol. The definition says the symbol's live prices have to be subscribed to first, and the bars arrive inside ProtoOASpotEvent. | help.ctrader.comchecked |
| cTrader Open API | messageProtoOASubscribeSpotsReq cTrader Open API | Subscribes to the live prices of one or more symbols. The definition says a first ProtoOASpotEvent with the latest price follows, and then one for each price update. | help.ctrader.comchecked |
| Deriv | messageticks Deriv WebSocket API | Asks for the latest price of one symbol or several. With subscribe set to 1 a new tick message follows each time the price changes, until the stream is stopped with forget. | developers.deriv.comchecked |
| Deriv | messagetransaction Deriv WebSocket API | Opens a stream of the account's transactions: a message arrives for each buy, sell, deposit and withdrawal. subscribe must be 1, and without it no records are returned. | developers.deriv.comchecked |
| DXtrade APIs | messageAccountPortfoliosSubscriptionRequest DXtrade Push API | Subscribes to the portfolios of chosen accounts, or of all. A snapshot comes first, then the whole portfolio is sent again whenever an order is issued, changed or cancelled, a position changes, or a cash balance changes. | demo.dx.tradechecked |
| DXtrade APIs | messageMarketDataSubscriptionRequest DXtrade Push API | Subscribes to market data for a list of symbols: quotes, which carry the latest bid and ask, or candles of a chosen width over a period. The server then sends MarketData messages. | demo.dx.tradechecked |
| eToro | messageSubscribe eToro WebSocket API | Starts delivery of one topic or several: instrument:{instrumentId} for live rates, candle:{instrumentId} for candles, or private for the logged in user's order updates. An acknowledgement follows, then the pushes. | api-portal.etoro.comchecked |
| IG | messageACCOUNT:{account identifier} IG Streaming API | Live figures for one account: profit and loss, margin, funds, equity and the cash available to trade, each sent again as it changes. | labs.ig.comchecked |
| IG | messagePRICE:{account identifier}:{epic} IG Streaming API | Live prices for one market, by account identifier and epic: the bid and ask ladder up to five tiers deep, the sizes at each tier, the day's high and low and the dealing state. IG's page says price availability depends on the account's permissions. | labs.ig.comchecked |
| IG | messageTRADE:{account identifier} IG Streaming API | Trade notifications for one account in three fields: CONFIRMS for deal confirmations, OPU for open position updates and WOU for working order updates. The value of each is a JSON object. | labs.ig.comchecked |
| MetaTrader 5 (Python package and MQL5) | functionmarket_book_add() MetaTrader5 Python package | Subscribes the terminal to changes in the depth of market for one instrument, which is what makes market_book_get() return data. | mql5.comchecked |
None documented here yet
These APIs have endpoint records on this site, but none is assigned to this task. That describes this dataset. It is not a statement that the API lacks such a call.
- Capital.com: none documented here yet
- Deriv: none documented here yet
- eToro: none documented here yet
- IG: none documented here yet
- Interactive Brokers: none documented here yet
- Trading 212: none documented here yet
- DXtrade APIs: none documented here yet
- Match-Trader Platform API: none documented here yet
- MetaApi: none documented here yet
- TradeLocker API: none documented here yet
Brokers and platforms with no endpoint records at all are not listed above. The broker directory shows what is recorded for each.