Broker APIs with streaming
Streaming pushes each price or account update to you over a connection that stays open, so a program does not have to ask again and again. Providers do it over different protocols.
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.
Not recorded means this site holds no record. It does not mean the broker or platform lacks it. Rows are in name order, the order is not a ranking, and nothing here recommends a broker.
How each row is decided
Each record holds a sentence about streaming, not a yes or no field. A person read each sentence and entered yes, partial or no in the capability facts register only where the sentence's own words settle it. Yes means the record describes a connection that pushes data to you. It does not by itself say what is pushed: each row also says whether the record names prices, account updates, both or neither, and where an endpoint or error record names one, that record is cited. Partial means streaming on one route and not another. The status, the source and the date are the sentence's own. A sentence that settles nothing stays at not recorded.
- Yes
- A record on this site says so: a structured field, a record that exists, or a sentence in a record that was read and entered in the capability facts register, with the reason printed beside it. 17 of the 29 rows below.
- Partial
- A sentence in a record gives part of it: one route and not another, or a demo of the platform and not of the API. The reading is a row of the capability facts register, and the reason and the scope are printed beside it. 3 of the 29 rows below.
- No
- A record on this site says no: a structured field set to false, or a sentence in a record that says so, read and entered in the capability facts register. 1 of the 29 rows below.
- Not recorded
- This site holds no yes or no for it. That is a gap in this dataset. It is not a statement that the broker or platform lacks the capability. 8 of the 29 rows below.
3 of the rows rest on a record that is labelled unverified. Each says so beside its source.
Brokers
| Record | State | What the record holds | Source and date |
|---|---|---|---|
| Axi | Not recorded | The record holds no statement about streaming. | No record held |
| Bitget | Yes | The record describes a WebSocket with a public channel and a private channel that needs a login message. Recorded as streamed: prices, from the function or message record ticker; account updates, from the function or message record account.
| Bitget API quick start, WebSocketchecked |
| Capital.com | Yes | The record gives a WebSocket address, with up to 40 epics per subscription. Recorded as streamed: prices, from the function or message record marketdata-subscribe. Not recorded either way: whether account updates are streamed.
| Capital.com Public APIchecked |
| CMC Markets | Not recorded | The record holds no statement about streaming. | No record held |
| Deriv | Yes | The record says a WebSocket carries trading and market data. Scope: Market data and trading over WebSocket. Recorded as streamed: prices; account updates, from the function or message record balance.
| Deriv API: API overviewchecked |
| Dukascopy | Yes | The record says live data arrives through the JForex client once instruments are subscribed, and that the FIX API has a connection for the data feed. Scope: JForex API and the FIX data feed. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| Dukascopy wiki, JForex SDK clientchecked |
| eToro | Yes | The record gives a WebSocket address and an AsyncAPI document whose Subscribe message takes instrument topics and the private topic. Recorded as streamed: prices, from the function or message record instrument-rates; account updates, from the function or message record private.
| eToro WebSocket API, AsyncAPI documentchecked |
| Exness | Yes | The record says there is a WebSocket, throttled to roughly 100 to 500 ms. Not recorded either way: whether prices or account updates are streamed.
| Exness help centre: Exness APIchecked |
| FOREX.com / StoneX Trading (City Index) | Yes | The record says streams run over Lightstreamer and cover prices, news headlines, client account margin, orders and quotes. Scope: Lightstreamer over long lived HTTP connections, not WebSocket. Recorded as streamed: prices; account updates.
| StoneX API documentation, architecturechecked |
| FXCM | Yes | The record says ForexConnect pushes live prices. Scope: ForexConnect. The record says the legacy REST API that streamed over Socket.IO is retired. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| FXCM Socket REST API specchecked |
| FxPro | Not recorded | The record holds no statement about streaming. | No record held |
| IG | Yes | The record describes streaming over Lightstreamer, with up to 40 subscriptions on each connection by default. Recorded as streamed: prices, from the function or message record price; account updates, from the function or message record account.
| IG Labs Streaming API Guidechecked |
| Interactive Brokers | Yes | The record says the TWS API is event driven over its socket, and that the Web API has a websocket capped by market data lines. Scope: TWS API socket and Web API websocket. Recorded as streamed: prices; account updates, from the error record 2100-account-data-unsubscribed.
| IBKR Web API v1.0 documentation, websockets introductionchecked |
| OANDA | Yes | The record says streaming is HTTP chunked transfer encoding carrying JSON objects, with at most 20 active streams. Scope: HTTP streaming, not WebSocket. Recorded as streamed: prices, from the endpoint record pricing-stream; account updates, from the endpoint record transactions-stream.
| OANDA Development Guidechecked |
| Pepperstone | Not recorded | No state is taken from the record's sentence about streaming: the capability facts register holds no reading of it as a yes, a partial or a no, and it does not itself open with one of those words.
| UnverifiedPepperstone API tradingchecked |
| Saxo OpenAPI | Yes | The record says there is WebSocket streaming on the SIM and live hosts. Scope: WebSocket. Recorded as streamed: prices, from the endpoint record prices-subscribe; account updates, from the endpoint record balances-subscribe.
| Saxo Environmentschecked |
| Swissquote | Partial | The record says the forex FIX connections list streaming as their liquidity channel and digital assets have a FIX market data session, while no market data is available over FIX for securities. Scope: FIX for leveraged forex and digital assets. None for securities. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| Swissquote institutional Forex APIschecked |
| ThinkMarkets | Not recorded | The record holds no statement about streaming. | No record held |
| Tickmill | Not recorded | The record holds no statement about streaming. | No record held |
| Trading 212 | Not recorded | No state is taken from the record's sentence about streaming: the capability facts register holds no reading of it as a yes, a partial or a no, and it does not itself open with one of those words.
| Unverifiedno source opened |
| XTB | No | The record says API access was discontinued on 14 March 2025 and that streaming was part of that API.
| XTB help centre: Does XTB offer investment automation tools?checked |
Platform APIs
| Record | State | What the record holds | Source and date |
|---|---|---|---|
| cTrader Open API | Yes | The record says spot quotes, depth of market and execution events arrive on the same connection. Scope: Execution events are the account side. Recorded as streamed: prices; account updates.
| Messageschecked |
| DXtrade APIs | Yes | The record says there is a Push API over WebSockets for account and market data updates. Scope: WebSocket Push API. Recorded as streamed: prices; account updates.
| Devexperts blog: DXtrade API suitechecked |
| Match-Trader Platform API | Yes | The record says there is a WebSocket with STOMP for real-time market data and account updates. Scope: WebSocket with STOMP. Recorded as streamed: prices; account updates.
| Platform APIchecked |
| MetaApi | Yes | The record says a WebSocket API on the socket.io protocol pushes terminal state changes, quotes, candles, ticks and order book data in real time. Scope: The record names terminal state changes, and does not name account updates as such. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| MetaApi documentation, overviewchecked |
| MetaCopier | Yes | The record says a Socket API over STOMP and WebSocket gives real time updates of account information, history and open positions. Scope: Account updates. The record names no price stream. Recorded as streamed: account updates. Not recorded either way: whether prices are streamed.
| MetaCopier documentation, Socket APIchecked |
| MetaTrader 4 (MQL4) | Partial | The record says code in the terminal receives events such as a new tick, and that there is no external streaming API. Scope: In-terminal events only. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| MQL4 Referencechecked |
| MetaTrader 5 (Python package and MQL5) | Partial | The record says MQL5 Expert Advisors get tick events, while the Python package has no push API and polls ticks and bars. Scope: MQL5 in the terminal only. Python polls. Recorded as streamed: prices. Not recorded either way: whether account updates are streamed.
| MetaTrader for Pythonchecked |
| TradeLocker API | Not recorded | No state is taken from the record's sentence about streaming: the capability facts register holds no reading of it as a yes, a partial or a no, and it does not itself open with one of those words.
| UnverifiedTradeLocker public API, getting startedchecked |
Where to go next
- Streaming: every record's full wording
- The full capability grid
- Which brokers have their own API
- Broker API documentation links
- Broker APIs with a demo or sandbox
- Broker APIs with authentication described
- Broker APIs with published rate limits
- Broker APIs with an official SDK or library
- Broker APIs with a Python library
- Broker APIs with an official MCP server
- Broker APIs with a community MCP server
- Brokers reachable through a platform API
- Broker APIs with endpoints documented here
- Broker APIs with error codes decoded here
- Broker APIs with an OpenAPI file on this site
- Broker APIs with a quickstart on this site
- Broker APIs with dated changes recorded
- Download the grid as JSON
How to cite this
Broker APIs with streaming. Broker API Hub, https://openbrokerapi.com/capabilities/streaming, newest check .
Where you rely on a single figure, cite the source and the checked date printed beside it as well.