Ergonomic helpers
alpaca.trading.orders — order builders
One typed builder per order kind; drops the postOrder wrapper and enforces required fields at compile time.
alpaca.trading.orders.market
Place one market order (exactly one of qty/notional) with a client ID for audit and recovery.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.market({ symbol: "AAPL", side: "buy", qty: 1, clientOrderId });
alpaca.trading.orders.limit
Place one limit order with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.limit({ symbol: "AAPL", side: "buy", qty: 1, limitPrice: 150, clientOrderId });
alpaca.trading.orders.stop
Place one stop (stop-market) order with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.stop({ symbol: "AAPL", side: "sell", qty: 1, stopPrice: 140, clientOrderId });
alpaca.trading.orders.stopLimit
Place one stop-limit order with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.stopLimit({ symbol: "AAPL", side: "sell", qty: 1, stopPrice: 140, limitPrice: 139, clientOrderId });
alpaca.trading.orders.trailingStop
Place one trailing-stop order (one of trailPrice/trailPercent) with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.trailingStop({ symbol: "AAPL", side: "sell", qty: 1, trailPercent: 5, clientOrderId });
alpaca.trading.orders.bracket
Place one bracket order (entry plus take-profit and stop-loss legs) with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.bracket({ symbol: "AAPL", side: "buy", qty: 1, takeProfit: { limitPrice: 160 }, stopLoss: { stopPrice: 140 }, clientOrderId });
alpaca.trading.orders.oco
Place one one-cancels-other order on a held position with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.oco({ symbol: "AAPL", side: "sell", qty: 1, takeProfit: { limitPrice: 160 }, stopLoss: { stopPrice: 140 }, clientOrderId });
alpaca.trading.orders.oto
Place one one-triggers-other order with a stable, unique client ID.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.oto({ symbol: "AAPL", side: "buy", qty: 1, limitPrice: 150, takeProfit: { limitPrice: 160 }, clientOrderId });
alpaca.trading.orders.submit
Place one near-raw order shape; include a stable, unique client ID and reconcile transport ambiguity explicitly.
const clientOrderId = crypto.randomUUID();
await alpaca.trading.orders.submit({ type: "market", symbol: "AAPL", side: "buy", qty: 1, clientOrderId });
alpaca.trading — workflow helpers
High-level trading flows that would otherwise be boilerplate.
alpaca.trading.validateConnection
Verify credentials/connectivity without throwing; returns { ok, account } or { ok: false, status, code, message }.
const check = await alpaca.trading.validateConnection();
alpaca.trading.submitAndWait
After server listening acknowledgement, place once and await a terminal update under one workflow deadline.
const clientOrderId = crypto.randomUUID();
const terminalOrder = await alpaca.trading.submitAndWait({ type: "market", symbol: "AAPL", side: "buy", qty: 1, clientOrderId }, { timeoutMs: 30_000 });
if (terminalOrder.status === "filled") console.log(terminalOrder.filledAvgPrice);
alpaca.trading.closeAllPositions
Close every open position (optionally cancel open orders first).
await alpaca.trading.closeAllPositions({ cancelOrders: true });
alpaca.trading — pagination helpers
Auto-paginated iterate/collect helpers for option contracts and account activities.
alpaca.trading.iterateOptionsContracts
Lazily yield option contracts across all pages.
for await (const contract of alpaca.trading.iterateOptionsContracts({
underlyingSymbols: "AAPL",
})) console.log(contract.symbol);
alpaca.trading.collectOptionsContracts
Eagerly collect all option contracts across pages into one array.
const contracts = await alpaca.trading.collectOptionsContracts({
underlyingSymbols: "AAPL",
});
alpaca.trading.iterateActivities
Lazily yield account activities across all pages.
for await (const activity of alpaca.trading.iterateActivities({
activityTypes: ["FILL"],
})) console.log(activity.id);
alpaca.trading.collectActivities
Eagerly collect all account activities across pages into one array.
const activities = await alpaca.trading.collectActivities({
activityTypes: ["FILL"],
});
alpaca.trading.iterateActivitiesByType
Lazily yield activities of a single type across all pages.
for await (const fill of alpaca.trading.iterateActivitiesByType({
activityType: "FILL",
})) console.log(fill.id);
alpaca.trading.collectActivitiesByType
Eagerly collect activities of a single type into one array.
const fills = await alpaca.trading.collectActivitiesByType({
activityType: "FILL",
});
alpaca.marketData — workflow helpers
High-level market-data flows that would otherwise be boilerplate.
alpaca.marketData.getLatestPrice
Latest trade price for a symbol as a number (or undefined).
const price = await alpaca.marketData.getLatestPrice("AAPL");
alpaca.marketData — normalized accessors
Auto-paginated, symbol-keyed accessors returning canonical Bar/Trade/Quote shapes (and chart-ready Candles), unified with the streaming layer. Each single-symbol *For(symbol) reads only the exact requested key and returns an empty array/Candles when absent.
alpaca.marketData.getStockBars
Historical stock bars as canonical Bars, auto-paginated and keyed by symbol.
const bars = await alpaca.marketData.getStockBars({
symbols: ["AAPL"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.getCryptoBars
Historical crypto bars as canonical Bars, keyed by symbol.
const bars = await alpaca.marketData.getCryptoBars({
loc: "us",
symbols: ["BTC/USD"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.getOptionBars
Historical option bars as canonical Bars, keyed by symbol.
const bars = await alpaca.marketData.getOptionBars({
symbols: ["AAPL250117C00150000"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.getStockTrades
Historical stock trades as canonical Trades, keyed by symbol.
const trades = await alpaca.marketData.getStockTrades({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getCryptoTrades
Historical crypto trades as canonical Trades, keyed by symbol.
const trades = await alpaca.marketData.getCryptoTrades({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getStockQuotes
Historical stock quotes as canonical Quotes, keyed by symbol.
const quotes = await alpaca.marketData.getStockQuotes({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getCryptoQuotes
Historical crypto quotes as canonical Quotes, keyed by symbol.
const quotes = await alpaca.marketData.getCryptoQuotes({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getIndexValues
Historical index values as canonical IndexValues (with full-precision timestampRaw), keyed by symbol.
const values = await alpaca.marketData.getIndexValues({
symbols: ["SPX"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getStockAuctions
Historical stock auctions as canonical DailyAuctions (each print with full-precision timestampRaw), keyed by symbol.
const auctions = await alpaca.marketData.getStockAuctions({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.getStockCandles
Historical stock bars as chart-ready columnar Candles, keyed by symbol.
const candles = await alpaca.marketData.getStockCandles({
symbols: ["AAPL"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.getCryptoCandles
Historical crypto bars as chart-ready columnar Candles, keyed by symbol.
const candles = await alpaca.marketData.getCryptoCandles({
loc: "us",
symbols: ["BTC/USD"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.getStockBarsFor
Exact-key stock bars as canonical Bar[]; returns [] when the requested symbol is absent.
const bars = await alpaca.marketData.getStockBarsFor("AAPL", { timeframe: TimeFrame.Day, start: new Date("2024-01-01") });
alpaca.marketData.getCryptoBarsFor
Exact-key crypto bars as canonical Bar[]; returns [] when the requested pair is absent.
const bars = await alpaca.marketData.getCryptoBarsFor("BTC/USD", { loc: "us", timeframe: TimeFrame.Day, start: new Date("2024-01-01") });
alpaca.marketData.getOptionBarsFor
Exact-key option bars as canonical Bar[]; returns [] when the requested contract is absent.
const bars = await alpaca.marketData.getOptionBarsFor("AAPL250117C00150000", { timeframe: TimeFrame.Day, start: new Date("2024-01-01") });
alpaca.marketData.getStockTradesFor
Exact-key stock trades as canonical Trade[]; never substitutes another symbol.
const trades = await alpaca.marketData.getStockTradesFor("AAPL", { start: new Date("2024-01-02") });
alpaca.marketData.getCryptoTradesFor
Exact-key crypto trades as canonical Trade[]; never substitutes another pair.
const trades = await alpaca.marketData.getCryptoTradesFor("BTC/USD", { loc: "us", start: new Date("2024-01-02") });
alpaca.marketData.getStockQuotesFor
Exact-key stock quotes as canonical Quote[]; never substitutes another symbol.
const quotes = await alpaca.marketData.getStockQuotesFor("AAPL", { start: new Date("2024-01-02") });
alpaca.marketData.getCryptoQuotesFor
Exact-key crypto quotes as canonical Quote[]; never substitutes another pair.
const quotes = await alpaca.marketData.getCryptoQuotesFor("BTC/USD", { loc: "us", start: new Date("2024-01-02") });
alpaca.marketData.getStockCandlesFor
Exact-key stock Candles; returns empty columns when the requested symbol is absent.
const candles = await alpaca.marketData.getStockCandlesFor("AAPL", { timeframe: TimeFrame.Day, start: new Date("2024-01-01") });
alpaca.marketData.getCryptoCandlesFor
Exact-key crypto Candles; returns empty columns when the requested pair is absent.
const candles = await alpaca.marketData.getCryptoCandlesFor("BTC/USD", { loc: "us", timeframe: TimeFrame.Day, start: new Date("2024-01-01") });
alpaca.marketData — pagination helpers
Auto-paginated iterate/collect helpers across every paginated market-data endpoint; the page token is managed for you and any revisited token stops traversal.
alpaca.marketData.iterateStockBars
Lazily yield { symbol, value } stock-bar records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateStockBars({
symbols: ["AAPL"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
})) console.log(symbol, value.c);
alpaca.marketData.collectStockBarsBySymbol
Collect stock bars merged into a { [symbol]: StockBar[] } map.
const bySymbol = await alpaca.marketData.collectStockBarsBySymbol({
symbols: ["AAPL", "MSFT"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateStockTrades
Lazily yield stock-trade records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateStockTrades({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.p);
alpaca.marketData.collectStockTradesBySymbol
Collect stock trades merged into a { [symbol]: StockTrade[] } map.
const bySymbol = await alpaca.marketData.collectStockTradesBySymbol({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateStockQuotes
Lazily yield stock-quote records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateStockQuotes({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.bp);
alpaca.marketData.collectStockQuotesBySymbol
Collect stock quotes merged into a { [symbol]: StockQuote[] } map.
const bySymbol = await alpaca.marketData.collectStockQuotesBySymbol({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateStockAuctions
Lazily yield daily-auction records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateStockAuctions({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.d);
alpaca.marketData.collectStockAuctionsBySymbol
Collect stock auctions merged into a { [symbol]: StockDailyAuctions[] } map.
const bySymbol = await alpaca.marketData.collectStockAuctionsBySymbol({
symbols: ["AAPL"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateCryptoBars
Lazily yield crypto-bar records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateCryptoBars({
loc: "us",
symbols: ["BTC/USD"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
})) console.log(symbol, value.c);
alpaca.marketData.collectCryptoBarsBySymbol
Collect crypto bars merged into a { [symbol]: CryptoBar[] } map.
const bySymbol = await alpaca.marketData.collectCryptoBarsBySymbol({
loc: "us",
symbols: ["BTC/USD"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateCryptoTrades
Lazily yield crypto-trade records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateCryptoTrades({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.p);
alpaca.marketData.collectCryptoTradesBySymbol
Collect crypto trades merged into a { [symbol]: CryptoTrade[] } map.
const bySymbol = await alpaca.marketData.collectCryptoTradesBySymbol({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateCryptoQuotes
Lazily yield crypto-quote records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateCryptoQuotes({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.bp);
alpaca.marketData.collectCryptoQuotesBySymbol
Collect crypto quotes merged into a { [symbol]: CryptoQuote[] } map.
const bySymbol = await alpaca.marketData.collectCryptoQuotesBySymbol({
loc: "us",
symbols: ["BTC/USD"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateOptionBars
Lazily yield option-bar records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateOptionBars({
symbols: ["AAPL250117C00150000"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
})) console.log(symbol, value.c);
alpaca.marketData.collectOptionBarsBySymbol
Collect option bars merged into a { [symbol]: OptionBar[] } map.
const bySymbol = await alpaca.marketData.collectOptionBarsBySymbol({
symbols: ["AAPL250117C00150000"],
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateOptionTrades
Lazily yield option-trade records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateOptionTrades({
symbols: ["AAPL250117C00150000"],
start: new Date("2024-01-02"),
})) console.log(symbol, value.p);
alpaca.marketData.collectOptionTradesBySymbol
Collect option trades merged into a { [symbol]: OptionTrade[] } map.
const bySymbol = await alpaca.marketData.collectOptionTradesBySymbol({
symbols: ["AAPL250117C00150000"],
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateIndexValues
Lazily yield index-value records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateIndexValues({
symbols: ["SPX"],
start: new Date("2024-01-01"),
})) console.log(symbol, value);
alpaca.marketData.collectIndexValuesBySymbol
Collect index values merged into a { [symbol]: IndexValue[] } map.
const bySymbol = await alpaca.marketData.collectIndexValuesBySymbol({
symbols: ["SPX"],
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateForexRates
Lazily yield forex-rate records across currency pairs and pages.
for await (const { symbol, value } of alpaca.marketData.iterateForexRates({
currencyPairs: ["EUR/USD"],
start: new Date("2024-01-01"),
})) console.log(symbol, value);
alpaca.marketData.collectForexRatesBySymbol
Collect forex rates merged into a { [pair]: ForexRate[] } map.
const byPair = await alpaca.marketData.collectForexRatesBySymbol({
currencyPairs: ["EUR/USD"],
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateOptionSnapshots
Lazily yield { symbol, value } option-snapshot records across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateOptionSnapshots({
symbols: ["AAPL250117C00150000"],
})) console.log(symbol, value);
alpaca.marketData.collectOptionSnapshotsBySymbol
Collect option snapshots into a { [symbol]: OptionSnapshot } map.
const bySymbol = await alpaca.marketData.collectOptionSnapshotsBySymbol({
symbols: ["AAPL250117C00150000"],
});
alpaca.marketData.iterateOptionChain
Lazily yield an underlying's option-chain snapshots across symbols and pages.
for await (const { symbol, value } of alpaca.marketData.iterateOptionChain({
underlyingSymbol: "AAPL",
})) console.log(symbol, value);
alpaca.marketData.collectOptionChainBySymbol
Collect an option chain's snapshots into a { [symbol]: OptionSnapshot } map.
const chain = await alpaca.marketData.collectOptionChainBySymbol({
underlyingSymbol: "AAPL",
});
alpaca.marketData.iterateStockBarSingle
Lazily yield a single symbol's stock bars across all pages.
for await (const bar of alpaca.marketData.iterateStockBarSingle({
symbol: "AAPL",
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
})) console.log(bar.c);
alpaca.marketData.collectStockBarSingle
Collect a single symbol's stock bars into one StockBar[] array.
const bars = await alpaca.marketData.collectStockBarSingle({
symbol: "AAPL",
timeframe: TimeFrame.Day,
start: new Date("2024-01-01"),
});
alpaca.marketData.iterateStockTradeSingle
Lazily yield a single symbol's stock trades across all pages.
for await (const trade of alpaca.marketData.iterateStockTradeSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
})) console.log(trade.p);
alpaca.marketData.collectStockTradeSingle
Collect a single symbol's stock trades into one StockTrade[] array.
const trades = await alpaca.marketData.collectStockTradeSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateStockQuoteSingle
Lazily yield a single symbol's stock quotes across all pages.
for await (const quote of alpaca.marketData.iterateStockQuoteSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
})) console.log(quote.bp);
alpaca.marketData.collectStockQuoteSingle
Collect a single symbol's stock quotes into one StockQuote[] array.
const quotes = await alpaca.marketData.collectStockQuoteSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateStockAuctionSingle
Lazily yield a single symbol's daily auctions across all pages.
for await (const auction of alpaca.marketData.iterateStockAuctionSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
})) console.log(auction.d);
alpaca.marketData.collectStockAuctionSingle
Collect a single symbol's daily auctions into one array.
const auctions = await alpaca.marketData.collectStockAuctionSingle({
symbol: "AAPL",
start: new Date("2024-01-02"),
});
alpaca.marketData.iterateNews
Lazily yield news articles across all pages.
for await (const article of alpaca.marketData.iterateNews({
symbols: ["AAPL"],
})) console.log(article.headline);
alpaca.marketData.collectNews
Collect news articles into one News[] array.
const articles = await alpaca.marketData.collectNews({ symbols: ["AAPL"] });
alpaca.marketData.iterateCorporateActionsPages
Yield valid corporate-action pages and stop before any revisited token, including longer cycles.
for await (const page of alpaca.marketData.iterateCorporateActionsPages({
symbols: ["AAPL"],
})) console.log(page.cashDividends);
alpaca.marketData.collectCorporateActions
Merge valid corporate-action pages, stopping before any revisited pagination token.
const actions = await alpaca.marketData.collectCorporateActions({
symbols: ["AAPL"],
start: new Date("2024-01-01"),
});