The short answer
For a US-equities-and-options agent, Alpaca wins on developer ergonomics: stateless REST, a free IEX feed, first-class paper trading, and a flat 200 requests/minute limit. For multi-asset coverage (global equities, futures, FX, bonds), Interactive Brokers is the only real choice, at the cost of a stateful TWS/Gateway connection and finickier pacing.
For a US-equities-and-options agent, Alpaca wins on developer ergonomics: a stateless REST/JSON API, a free IEX feed, first-class paper trading, and a flat 200 requests/minute limit. For multi-asset-class coverage (global equities, futures, FX, bonds), Interactive Brokers is the only real choice, at the cost of a stateful TWS/Gateway connection and a finickier pacing model (50 messages/second, 60 historical requests per 10 minutes). The decision is asset coverage vs integration simplicity. Compare both in the Broker API Comparator.
TL;DR
| Dimension | Alpaca | Interactive Brokers |
|---|---|---|
| API style | Stateless REST/JSON + WebSocket | TWS/IB Gateway socket or Client Portal Web API |
| API fee | $0 | $0 (commission-based) |
| Trading rate limit | 200 requests/minute per account | ~50 messages/second to TWS |
| Historical-data pacing | standard rate limit | 60 requests / 10 minutes (strict) |
| Market-data lines | 30 symbols WebSocket (free), unlimited on Algo Trader Plus | 100 simultaneous lines default |
| Commission | $0 (PFOF on equities) | tiered/fixed commissions |
| Asset coverage | US equities, options, crypto | global equities, options, futures, FX, bonds |
| Paper trading | First-class, same API surface | Separate paper account |
| Geographic note | Canada not supported for live (early 2026) | broad global |
Alpaca and IBKR figures verified 2026-05-25 against official pages (see references).
API ergonomics: REST/JSON vs the TWS socket
This is the axis that decides developer effort.
Alpaca is a stateless HTTPS REST API with JSON payloads plus a WebSocket for market data. You authenticate with an API key and secret, make requests, and you are done; there is no long-lived process to babysit. The paper-trading environment uses the same endpoints at a different base URL, so code transfers from paper to live unchanged. Alpaca's official trading rate limit is 200 requests per minute per account, returning HTTP 429 on exceed (verified 2026-05-25).
Interactive Brokers offers two paths. The classic TWS API connects to a running TWS or IB Gateway process over a socket; it is the most capable but requires keeping that gateway alive, re-authenticating periodically, and handling disconnects. The newer Client Portal Web API is REST, but adds its own OAuth/session-management complexity. IBKR's pacing is documented: a maximum of 50 messages per second to TWS (implying up to 50 orders/second), and historical-data requests are capped hard at 60 per 10-minute window, with extra rules (no identical request within 15 seconds, no more than 6 requests for the same contract within 2 seconds), and a pacing violation throttles or disconnects the client.
Cost: commission-free vs commission-based
Alpaca is commission-free on US equities and options (payment-for-order-flow model), with regulatory pass-through fees. Its market data is free on the IEX feed; the full SIP tape (Algo Trader Plus) is $99/mo with a 10,000 calls/minute limit (verified 2026-05-25).
IBKR's API is free, but trading is commission-based (tiered per-share or fixed schedules), and market data is per-subscription. Forex and crypto need no extra market-data subscription, but most securities require at least a Level 1 top-of-book subscription to receive data through the API. The default market-data line limit is 100 simultaneous instruments, extendable via quote-booster packs or higher account commissions (verified 2026-05-25, IBKR TWS API docs).
So the cost framing: Alpaca is cheaper and simpler for US equities/options; IBKR's commissions buy global multi-asset reach and institutional execution.
Rate limits side by side
The two use fundamentally different limit models:
- Alpaca: one flat number, 200 requests/minute per account on the trading API; market-data limits scale with the subscription tier (10,000 calls/min on Algo Trader Plus).
- IBKR: a message-rate ceiling (50 msg/sec) plus separate, strict historical-data pacing (60 requests / 10 min) and a 100-line market-data cap. The historical-data pacing in particular bites agents that poll option chains or backfill bars aggressively.
For a high-frequency-of-requests agent, Alpaca's single 200/min number is easier to reason about; IBKR's multi-dimensional pacing requires careful request scheduling to avoid violations.
Asset coverage: the real differentiator
Alpaca covers US equities, US options, and crypto (a separate product line). It does not offer futures, forex, bonds, or international equities. IBKR covers all of those through one account: global equities, options, futures, forex, and bonds. If the strategy touches anything beyond US equities/options/crypto, IBKR is the only one of the two that can serve it.
The comparator's view
The Broker API Comparator scenario below models the US-equities-and-options agent: options required, free tier required, auth complexity ceiling of 2 (Alpaca's API-key model scores 1; IBKR's TWS-Gateway path scores 5). Alpaca fits at 3/3; IBKR scores 1/3, failing on free tier and auth. The verified output block at the foot of the page is computed live from the shipped engine bundle. Flip the scenario toward futures or international and IBKR becomes the only fit, which is the whole point of the trade-off.
Decision guidance
- US equities + options agent, want the simplest integration: Alpaca. REST/JSON, free IEX, paper parity.
- Anything multi-asset (futures, FX, bonds, international): Interactive Brokers. Only one of the two that covers it.
- High request volume, simple to reason about: Alpaca's flat 200/min beats IBKR's multi-dimensional pacing.
- Outside the US (e.g. Canada): check eligibility; Alpaca did not support Canada for live accounts in early 2026, while IBKR's global footprint is broader.
Related in this series
- Choosing a Broker API 2026: the five-broker decision framework.
- Interactive Brokers API Pricing and Rate Limits 2026: the IBKR spec page.
- Alpaca API Rate Limits 2026: the Alpaca spec page.
- Alpaca vs Tradier API 2026: the options-focused pair.
Connects to
- Broker API Comparator: the engine behind this page's comparison.
- Finance MCP Directory: MCP-server availability per broker.
- Production Claude Agent for Finance: the Alpaca-based scaffold.
References
- Alpaca. "Usage limit for API calls" and "About Market Data API." alpaca.markets/support/usage-limit-api-calls, docs.alpaca.markets/us/docs/about-market-data-api, verified 2026-05-25 (200 req/min, free IEX, Algo Trader Plus $99/mo, 10,000 calls/min).
- Interactive Brokers. "TWS API: Order Limitations, Historical Data Limitations, Streaming Market Data." interactivebrokers.github.io/tws-api, verified 2026-05-25 (50 msg/sec, 60 historical requests / 10 min, 100 market-data lines).
- Interactive Brokers. "Market Data Subscriptions." interactivebrokers.com/campus/ibkr-api-page/market-data-subscriptions, accessed 2026-05-25.
Verified engine output
Show the recompute-verified inputs and outputs
| require_options | true |
|---|---|
| require_futures | false |
| require_crypto | false |
| require_mcp | false |
| require_free_tier | true |
| max_auth_complexity | 2 |
| filters › require options | true |
|---|---|
| filters › require futures | false |
| filters › require crypto | false |
| filters › require mcp | false |
| filters › require free tier | true |
| filters › max auth complexity | 2 |
| results › row 1 › broker › id | alpaca |
| results › row 1 › broker › name | Alpaca |
| results › row 1 › broker › url | https://alpaca.markets/ |
| results › row 1 › broker › docs url | https://alpaca.markets/docs/ |
| results › row 1 › broker › auth | API Key + Secret |
| results › row 1 › broker › auth complexity | 1 |
| results › row 1 › broker › order types (10 items) | [...] |
| results › row 1 › broker › rate limits | 200 req/min (free), higher on paid tiers |
| results › row 1 › broker › market data › row 1 | IEX real-time (free) |
| results › row 1 › broker › market data › row 2 | Full SIP on Algo Trader Plus ($99/mo) |
| results › row 1 › broker › market data › row 3 | Historical bars + trades + quotes |
| results › row 1 › broker › mcp | official |
| results › row 1 › broker › mcp note | Official MCP V2, 61 actions, idempotent order submission |
| results › row 1 › broker › assets › stocks | true |
| results › row 1 › broker › assets › options | true |
| results › row 1 › broker › assets › futures | false |
| results › row 1 › broker › assets › crypto | true |
| results › row 1 › broker › assets › forex | false |
| results › row 1 › broker › assets › bonds | false |
| results › row 1 › broker › account minimum | 0 |
| results › row 1 › broker › commission | $0 (PFOF on equities) |
| results › row 1 › broker › good for | Solo AI operator, paper-to-live parity |
| results › row 1 › broker › has free tier | true |
| results › row 1 › broker › notes › row 1 | Free paper trading with same API surface as live |
| results › row 1 › broker › notes › row 2 | Options require Algo Trader Plus tier |
| results › row 1 › broker › notes › row 3 | Python/Go SDKs mature; rate-limit backoff documented |
| results › row 1 › score | 3 |
| results › row 1 › max score | 3 |
| results › row 1 › fits | true |
| results › row 2 › broker › id | tradier |
| results › row 2 › broker › name | Tradier |
| results › row 2 › broker › url | https://tradier.com/ |
| results › row 2 › broker › docs url | https://developer.tradier.com/ |
| results › row 2 › broker › auth | OAuth 2.0 |
| results › row 2 › broker › auth complexity | 3 |
| results › row 2 › broker › order types (8 items) | [...] |
| results › row 2 › broker › rate limits | 120 req/min market data, 60 req/min trading |
| results › row 2 › broker › market data › row 1 | Real-time equities + options (streaming) |
| results › row 2 › broker › market data › row 2 | Historical OHLC back ~5 years |
| results › row 2 › broker › market data › row 3 | No Level-2 depth |
| results › row 2 › broker › mcp | community |
| results › row 2 › broker › mcp note | Community MCP; idempotency is a manual patch |
| results › row 2 › broker › assets › stocks | true |
| results › row 2 › broker › assets › options | true |
| results › row 2 › broker › assets › futures | false |
| results › row 2 › broker › assets › crypto | false |
| results › row 2 › broker › assets › forex | false |
| results › row 2 › broker › assets › bonds | false |
| results › row 2 › broker › account minimum | 0 |
| results › row 2 › broker › commission | $0 equities (PFOF), $0.35/contract options Pro |
| results › row 2 › broker › good for | Options-first retail, multi-leg strategies |
| results › row 2 › broker › has free tier | true |
| results › row 2 › broker › notes › row 1 | Free sandbox with delayed data |
| results › row 2 › broker › notes › row 2 | Strong options chain + multi-leg order API |
| results › row 2 › broker › notes › row 3 | US-only account eligibility |
| results › row 2 › score | 2 |
| results › row 2 › max score | 3 |
| results › row 2 › fits | false |
| results › row 2 › fail reasons › row 1 | Auth ≤ 2 |
| results › row 3 › broker › id | schwab |
| results › row 3 › broker › name | Schwab |
| results › row 3 › broker › url | https://www.schwab.com/ |
| results › row 3 › broker › docs url | https://developer.schwab.com/ |
| results › row 3 › broker › auth | OAuth 2.0 (3-legged) |
| results › row 3 › broker › auth complexity | 4 |
| results › row 3 › broker › order types (9 items) | [...] |
| results › row 3 › broker › rate limits | 120 req/min per endpoint (published tier) |
| results › row 3 › broker › market data › row 1 | Real-time equities + options quotes |
| results › row 3 › broker › market data › row 2 | Historical bars (1m to daily) |
| results › row 3 › broker › market data › row 3 | No exchange depth via API |
| results › row 3 › broker › mcp | none |
| results › row 3 › broker › mcp note | No official or listed community MCP server |
| results › row 3 › broker › assets › stocks | true |
| results › row 3 › broker › assets › options | true |
| results › row 3 › broker › assets › futures | true |
| results › row 3 › broker › assets › crypto | false |
| results › row 3 › broker › assets › forex | true |
| results › row 3 › broker › assets › bonds | true |
| results › row 3 › broker › account minimum | 0 |
| results › row 3 › broker › commission | $0 equities, $0.65/contract options |
| results › row 3 › broker › good for | Established retail, post-TDA API migration |
| results › row 3 › broker › has free tier | true |
| results › row 3 › broker › notes › row 1 | API rebuilt after TD Ameritrade integration; still maturing |
| results › row 3 › broker › notes › row 2 | Requires individual developer registration and app review |
| results › row 3 › broker › notes › row 3 | Token refresh flow is finicky vs Alpaca/Tradier |
| results › row 3 › score | 2 |
| results › row 3 › max score | 3 |
| results › row 3 › fits | false |
| results › row 3 › fail reasons › row 1 | Auth ≤ 2 |
| results › row 4 › broker › id | robinhood |
| results › row 4 › broker › name | Robinhood |
| results › row 4 › broker › url | https://robinhood.com/ |
| results › row 4 › broker › docs url | https://docs.robinhood.com/ |
| results › row 4 › broker › auth | OAuth 2.0 (unofficial endpoints) |
| results › row 4 › broker › auth complexity | 4 |
| results › row 4 › broker › order types › row 1 | market |
| results › row 4 › broker › order types › row 2 | limit |
| results › row 4 › broker › order types › row 3 | stop |
| results › row 4 › broker › order types › row 4 | stop-limit |
| results › row 4 › broker › order types › row 5 | gtc |
| results › row 4 › broker › order types › row 6 | ioc |
| results › row 4 › broker › rate limits | Not publicly documented; low throughput |
| results › row 4 › broker › market data › row 1 | Delayed quotes in public tier |
| results › row 4 › broker › market data › row 2 | Limited historical depth |
| results › row 4 › broker › market data › row 3 | No public Level-2 |
| results › row 4 › broker › mcp | none |
| results › row 4 › broker › mcp note | No MCP; unofficial SDKs only |
| results › row 4 › broker › assets › stocks | true |
| results › row 4 › broker › assets › options | true |
| results › row 4 › broker › assets › futures | false |
| results › row 4 › broker › assets › crypto | true |
| results › row 4 › broker › assets › forex | false |
| results › row 4 › broker › assets › bonds | false |
| results › row 4 › broker › account minimum | 0 |
| results › row 4 › broker › commission | $0 (PFOF), $5/mo Gold for margin + extras |
| results › row 4 › broker › good for | Casual retail; not recommended for agents |
| results › row 4 › broker › has free tier | true |
| results › row 4 › broker › notes › row 1 | No officially supported public API in 2026 |
| results › row 4 › broker › notes › row 2 | Community SDKs break on auth changes without notice |
| results › row 4 › broker › notes › row 3 | Paper trading unavailable |
| results › row 4 › score | 2 |
| results › row 4 › max score | 3 |
| results › row 4 › fits | false |
| results › row 4 › fail reasons › row 1 | Auth ≤ 2 |
| results › row 5 › broker › id | ibkr |
| results › row 5 › broker › name | Interactive Brokers |
| results › row 5 › broker › url | https://www.interactivebrokers.com/ |
| results › row 5 › broker › docs url | https://www.interactivebrokers.com/en/trading/ib-api.php |
| results › row 5 › broker › auth | OAuth + TWS/IB Gateway |
| results › row 5 › broker › auth complexity | 5 |
| results › row 5 › broker › order types (10 items) | [...] |
| results › row 5 › broker › rate limits | ~50 msg/sec per connection; 50 orders/sec burst |
| results › row 5 › broker › market data › row 1 | Global equities via subscription bundles |
| results › row 5 › broker › market data › row 2 | Level-2 depth on most exchanges |
| results › row 5 › broker › market data › row 3 | Historical depth across asset classes |
| results › row 5 › broker › mcp | community |
| results › row 5 › broker › mcp note | Community CLI MCP; audit before production |
| results › row 5 › broker › assets › stocks | true |
| results › row 5 › broker › assets › options | true |
| results › row 5 › broker › assets › futures | true |
| results › row 5 › broker › assets › crypto | true |
| results › row 5 › broker › assets › forex | true |
| results › row 5 › broker › assets › bonds | true |
| results › row 5 › broker › account minimum | 0 |
| results › row 5 › broker › commission | Tiered per-share or fixed; ~$0.0035/sh tiered |
| results › row 5 › broker › good for | Multi-asset-class, international, scale |
| results › row 5 › broker › has free tier | false |
| results › row 5 › broker › notes › row 1 | Requires TWS or IB Gateway running locally |
| results › row 5 › broker › notes › row 2 | Idempotency via client-supplied orderId |
| results › row 5 › broker › notes › row 3 | Fully headless gateway is possible but under-documented |
| results › row 5 › score | 1 |
| results › row 5 › max score | 3 |
| results › row 5 › fits | false |
| results › row 5 › fail reasons › row 1 | Free tier |
| results › row 5 › fail reasons › row 2 | Auth ≤ 2 |
| fitting brokers › row 1 › broker › id | alpaca |
| fitting brokers › row 1 › broker › name | Alpaca |
| fitting brokers › row 1 › broker › url | https://alpaca.markets/ |
| fitting brokers › row 1 › broker › docs url | https://alpaca.markets/docs/ |
| fitting brokers › row 1 › broker › auth | API Key + Secret |
| fitting brokers › row 1 › broker › auth complexity | 1 |
| fitting brokers › row 1 › broker › order types (10 items) | [...] |
| fitting brokers › row 1 › broker › rate limits | 200 req/min (free), higher on paid tiers |
| fitting brokers › row 1 › broker › market data › row 1 | IEX real-time (free) |
| fitting brokers › row 1 › broker › market data › row 2 | Full SIP on Algo Trader Plus ($99/mo) |
| fitting brokers › row 1 › broker › market data › row 3 | Historical bars + trades + quotes |
| fitting brokers › row 1 › broker › mcp | official |
| fitting brokers › row 1 › broker › mcp note | Official MCP V2, 61 actions, idempotent order submission |
| fitting brokers › row 1 › broker › assets › stocks | true |
| fitting brokers › row 1 › broker › assets › options | true |
| fitting brokers › row 1 › broker › assets › futures | false |
| fitting brokers › row 1 › broker › assets › crypto | true |
| fitting brokers › row 1 › broker › assets › forex | false |
| fitting brokers › row 1 › broker › assets › bonds | false |
| fitting brokers › row 1 › broker › account minimum | 0 |
| fitting brokers › row 1 › broker › commission | $0 (PFOF on equities) |
| fitting brokers › row 1 › broker › good for | Solo AI operator, paper-to-live parity |
| fitting brokers › row 1 › broker › has free tier | true |
| fitting brokers › row 1 › broker › notes › row 1 | Free paper trading with same API surface as live |
| fitting brokers › row 1 › broker › notes › row 2 | Options require Algo Trader Plus tier |
| fitting brokers › row 1 › broker › notes › row 3 | Python/Go SDKs mature; rate-limit backoff documented |
| fitting brokers › row 1 › score | 3 |
| fitting brokers › row 1 › max score | 3 |
| fitting brokers › row 1 › fits | true |
Computed live at build time.
Frequently asked questions
- Alpaca or Interactive Brokers for algo trading?
- Alpaca for a US-equities-and-options agent that wants a simple stateless REST API and free paper trading. IBKR when the strategy needs futures, forex, bonds, or international equities (verified 2026-05-25).
- What are the rate limits, Alpaca vs IBKR?
- Alpaca: 200 requests/minute per account on the trading API. IBKR: about 50 messages/second to TWS, plus strict historical-data pacing of 60 requests per 10 minutes and a 100-line market-data cap.
- Is the Interactive Brokers API free?
- Yes, the API itself is free; IBKR makes money on commissions and market-data subscriptions. Most securities need at least a Level 1 market-data subscription to receive data through the API.
- Does Alpaca support international users?
- Alpaca supports many countries but not all; it did not support Canadian residents for live trading accounts in early 2026. Confirm eligibility for your jurisdiction with Alpaca support.