Skip to main content

Real-time streaming

alpaca.trading.stream — TradingStream

Open the trading-updates WebSocket (order/trade events, JSON).

const updates = alpaca.trading.stream();
updates.onTradeUpdate((u) => console.log(u.event, u.order.symbol));
updates.subscribeTradeUpdates();
updates.connect();

alpaca.marketData.stockStream — StockDataStream

Open the US-equity market-data WebSocket (msgpack). Order imbalances are also available via subscribeForImbalances([...]) / onImbalance(...) — an equities-only, sparse channel that Alpaca emits mainly during limit-up/limit-down halts, so long quiet periods are expected even while subscribed.

const stocks = alpaca.marketData.stockStream({ feed: "iex" });
stocks.onBar((bar) => console.log(bar.symbol, bar.close));
stocks.onConnect(() => stocks.subscribeForBars(["AAPL", "MSFT"]));
stocks.connect();

alpaca.marketData.cryptoStream — CryptoDataStream

Open the crypto market-data WebSocket (msgpack).

const crypto = alpaca.marketData.cryptoStream();
crypto.onTrade((t) => console.log(t.symbol, t.price));
crypto.onConnect(() => crypto.subscribeForTrades(["BTC/USD"]));
crypto.connect();

alpaca.marketData.optionStream — OptionDataStream

Open the options market-data WebSocket (msgpack).

const opts = alpaca.marketData.optionStream();
opts.onTrade((t) => console.log(t.symbol, t.price));
opts.onConnect(() => opts.subscribeForTrades(["AAPL250117C00150000"]));
opts.connect();

alpaca.marketData.newsStream — NewsStream

Open the real-time news-headline WebSocket.

const news = alpaca.marketData.newsStream();
news.onNews((n) => console.log(n.headline));
news.onConnect(() => news.subscribeForNews(["AAPL", "TSLA"]));
news.connect();