{
  "calculator": "broker-api-comparator",
  "title": "Broker API Comparator",
  "site": "AI Fin Hub",
  "input": {},
  "defaults_used": {
    "max_auth_complexity": 5,
    "require_crypto": false,
    "require_free_tier": false,
    "require_futures": false,
    "require_mcp": false,
    "require_options": false
  },
  "result": {
    "filters": {
      "requireOptions": false,
      "requireFutures": false,
      "requireCrypto": false,
      "requireMcp": false,
      "requireFreeTier": false,
      "maxAuthComplexity": 5
    },
    "results": [
      {
        "broker": {
          "id": "alpaca",
          "name": "Alpaca",
          "url": "https://alpaca.markets/",
          "docsUrl": "https://alpaca.markets/docs/",
          "auth": "API Key + Secret",
          "authComplexity": 1,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "bracket",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "Trading API 200 req/min; market data 200/min free, 10,000/min on Algo Trader Plus",
          "marketData": [
            "IEX real-time (free)",
            "Full SIP on Algo Trader Plus ($99/mo)",
            "Historical bars + trades + quotes"
          ],
          "mcp": "official",
          "mcpNote": "Official open-source MCP server (V2 rewrite on FastMCP/OpenAPI); data, paper and live trading",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": true,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 (PFOF on equities)",
          "goodFor": "Solo AI operator, paper-to-live parity",
          "hasFreeTier": true,
          "notes": [
            "Free paper trading with same API surface as live",
            "Real-time OPRA options data needs Algo Trader Plus; Basic gets the indicative feed",
            "Python/Go SDKs mature; rate-limit backoff documented"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "tradier",
          "name": "Tradier",
          "url": "https://tradier.com/",
          "docsUrl": "https://developer.tradier.com/",
          "auth": "OAuth 2.0",
          "authComplexity": 3,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "120 req/min standard and market data, 60 req/min trading (production)",
          "marketData": [
            "Real-time equities + options (streaming)",
            "Historical OHLC back ~5 years",
            "No Level-2 depth"
          ],
          "mcp": "official",
          "mcpNote": "Official hosted MCP server (Streamable HTTP, personal API token); market data, accounts and order placement",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": false,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "Lite ($0/mo): $0.35/stock trade + $0.35/contract; Pro ($10/mo): $0 stocks + options",
          "goodFor": "Options-first retail, multi-leg strategies",
          "hasFreeTier": true,
          "notes": [
            "Free sandbox with delayed data",
            "API access included on every plan (Lite $0, Pro $10, Pro Plus $35 a month)",
            "Strong options chain + multi-leg order API",
            "US-only account eligibility"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "robinhood",
          "name": "Robinhood",
          "url": "https://robinhood.com/",
          "docsUrl": "https://docs.robinhood.com/",
          "auth": "API key (Crypto Trading API); Robinhood sign-in (Trading MCP)",
          "authComplexity": 3,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit"
          ],
          "rateLimits": "Not publicly documented",
          "marketData": [
            "Delayed quotes in public tier",
            "Limited historical depth",
            "No public Level-2"
          ],
          "mcp": "official",
          "mcpNote": "Official Robinhood Trading MCP (Agentic Trading): long equities, options and crypto, only in a dedicated agentic account; no multi-leg options",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": true,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 (PFOF), $5/mo Gold for margin + extras",
          "goodFor": "Agent-driven trading from an existing Robinhood account; no REST API for stocks or options",
          "hasFreeTier": true,
          "notes": [
            "Official REST API covers crypto only; stocks and options are reachable only through the Trading MCP",
            "Trade approvals are off by default for external MCP agents",
            "Paper trading unavailable"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "schwab",
          "name": "Schwab",
          "url": "https://www.schwab.com/",
          "docsUrl": "https://developer.schwab.com/",
          "auth": "OAuth 2.0 (3-legged)",
          "authComplexity": 4,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "120 req/min for non-order calls per app; order writes 0-120/min per account, set at app registration",
          "marketData": [
            "Real-time equities + options quotes",
            "Historical bars (1m to daily)",
            "No exchange depth via API"
          ],
          "mcp": "community",
          "mcpNote": "No official MCP; community servers wrap the Trader API (self-hosted, re-authorize when the 7-day refresh token expires)",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": false,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 equities, $0.65/contract options",
          "goodFor": "Established retail, post-TDA API migration",
          "hasFreeTier": true,
          "notes": [
            "API rebuilt after TD Ameritrade integration; still maturing",
            "Orders cover stocks, ETFs and options; futures and forex trade on thinkorswim, not through the API",
            "Requires individual developer registration and app review",
            "Token refresh flow is finicky vs Alpaca/Tradier"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "ibkr",
          "name": "Interactive Brokers",
          "url": "https://www.interactivebrokers.com/",
          "docsUrl": "https://www.interactivebrokers.com/en/trading/ib-api.php",
          "auth": "OAuth + TWS/IB Gateway",
          "authComplexity": 5,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "bracket",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "Market-data lines / 2 requests per second (50 on the default 100 lines); small-bar history 60 requests per 10 min",
          "marketData": [
            "Global equities via subscription bundles",
            "Level-2 depth on most exchanges",
            "Historical depth across asset classes"
          ],
          "mcp": "official",
          "mcpNote": "Official IBKR Connector: remote MCP at api.ibkr.com, IBKR sign-in, one account; drafts trade instructions that you submit as orders yourself",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": true,
            "crypto": true,
            "forex": true,
            "bonds": true
          },
          "accountMinimum": 0,
          "commission": "Tiered per-share or fixed; ~$0.0035/sh tiered",
          "goodFor": "Multi-asset-class, international, scale",
          "hasFreeTier": false,
          "notes": [
            "Requires TWS or IB Gateway running locally",
            "Idempotency via client-supplied orderId",
            "Fully headless gateway is possible but under-documented"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      }
    ],
    "fittingBrokers": [
      {
        "broker": {
          "id": "alpaca",
          "name": "Alpaca",
          "url": "https://alpaca.markets/",
          "docsUrl": "https://alpaca.markets/docs/",
          "auth": "API Key + Secret",
          "authComplexity": 1,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "bracket",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "Trading API 200 req/min; market data 200/min free, 10,000/min on Algo Trader Plus",
          "marketData": [
            "IEX real-time (free)",
            "Full SIP on Algo Trader Plus ($99/mo)",
            "Historical bars + trades + quotes"
          ],
          "mcp": "official",
          "mcpNote": "Official open-source MCP server (V2 rewrite on FastMCP/OpenAPI); data, paper and live trading",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": true,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 (PFOF on equities)",
          "goodFor": "Solo AI operator, paper-to-live parity",
          "hasFreeTier": true,
          "notes": [
            "Free paper trading with same API surface as live",
            "Real-time OPRA options data needs Algo Trader Plus; Basic gets the indicative feed",
            "Python/Go SDKs mature; rate-limit backoff documented"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "tradier",
          "name": "Tradier",
          "url": "https://tradier.com/",
          "docsUrl": "https://developer.tradier.com/",
          "auth": "OAuth 2.0",
          "authComplexity": 3,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "120 req/min standard and market data, 60 req/min trading (production)",
          "marketData": [
            "Real-time equities + options (streaming)",
            "Historical OHLC back ~5 years",
            "No Level-2 depth"
          ],
          "mcp": "official",
          "mcpNote": "Official hosted MCP server (Streamable HTTP, personal API token); market data, accounts and order placement",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": false,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "Lite ($0/mo): $0.35/stock trade + $0.35/contract; Pro ($10/mo): $0 stocks + options",
          "goodFor": "Options-first retail, multi-leg strategies",
          "hasFreeTier": true,
          "notes": [
            "Free sandbox with delayed data",
            "API access included on every plan (Lite $0, Pro $10, Pro Plus $35 a month)",
            "Strong options chain + multi-leg order API",
            "US-only account eligibility"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "robinhood",
          "name": "Robinhood",
          "url": "https://robinhood.com/",
          "docsUrl": "https://docs.robinhood.com/",
          "auth": "API key (Crypto Trading API); Robinhood sign-in (Trading MCP)",
          "authComplexity": 3,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit"
          ],
          "rateLimits": "Not publicly documented",
          "marketData": [
            "Delayed quotes in public tier",
            "Limited historical depth",
            "No public Level-2"
          ],
          "mcp": "official",
          "mcpNote": "Official Robinhood Trading MCP (Agentic Trading): long equities, options and crypto, only in a dedicated agentic account; no multi-leg options",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": true,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 (PFOF), $5/mo Gold for margin + extras",
          "goodFor": "Agent-driven trading from an existing Robinhood account; no REST API for stocks or options",
          "hasFreeTier": true,
          "notes": [
            "Official REST API covers crypto only; stocks and options are reachable only through the Trading MCP",
            "Trade approvals are off by default for external MCP agents",
            "Paper trading unavailable"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "schwab",
          "name": "Schwab",
          "url": "https://www.schwab.com/",
          "docsUrl": "https://developer.schwab.com/",
          "auth": "OAuth 2.0 (3-legged)",
          "authComplexity": 4,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "120 req/min for non-order calls per app; order writes 0-120/min per account, set at app registration",
          "marketData": [
            "Real-time equities + options quotes",
            "Historical bars (1m to daily)",
            "No exchange depth via API"
          ],
          "mcp": "community",
          "mcpNote": "No official MCP; community servers wrap the Trader API (self-hosted, re-authorize when the 7-day refresh token expires)",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": false,
            "crypto": false,
            "forex": false,
            "bonds": false
          },
          "accountMinimum": 0,
          "commission": "$0 equities, $0.65/contract options",
          "goodFor": "Established retail, post-TDA API migration",
          "hasFreeTier": true,
          "notes": [
            "API rebuilt after TD Ameritrade integration; still maturing",
            "Orders cover stocks, ETFs and options; futures and forex trade on thinkorswim, not through the API",
            "Requires individual developer registration and app review",
            "Token refresh flow is finicky vs Alpaca/Tradier"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      },
      {
        "broker": {
          "id": "ibkr",
          "name": "Interactive Brokers",
          "url": "https://www.interactivebrokers.com/",
          "docsUrl": "https://www.interactivebrokers.com/en/trading/ib-api.php",
          "auth": "OAuth + TWS/IB Gateway",
          "authComplexity": 5,
          "orderTypes": [
            "market",
            "limit",
            "stop",
            "stop-limit",
            "trailing-stop",
            "bracket",
            "oco",
            "gtc",
            "ioc",
            "fok"
          ],
          "rateLimits": "Market-data lines / 2 requests per second (50 on the default 100 lines); small-bar history 60 requests per 10 min",
          "marketData": [
            "Global equities via subscription bundles",
            "Level-2 depth on most exchanges",
            "Historical depth across asset classes"
          ],
          "mcp": "official",
          "mcpNote": "Official IBKR Connector: remote MCP at api.ibkr.com, IBKR sign-in, one account; drafts trade instructions that you submit as orders yourself",
          "assets": {
            "stocks": true,
            "options": true,
            "futures": true,
            "crypto": true,
            "forex": true,
            "bonds": true
          },
          "accountMinimum": 0,
          "commission": "Tiered per-share or fixed; ~$0.0035/sh tiered",
          "goodFor": "Multi-asset-class, international, scale",
          "hasFreeTier": false,
          "notes": [
            "Requires TWS or IB Gateway running locally",
            "Idempotency via client-supplied orderId",
            "Fully headless gateway is possible but under-documented"
          ]
        },
        "score": 1,
        "maxScore": 1,
        "fits": true,
        "failReasons": []
      }
    ]
  },
  "provenance": {
    "run": "https://aifinhub.io/api/run/broker-api-comparator",
    "page": "https://aifinhub.io/broker-api-comparator/",
    "methodology": "https://aifinhub.io/methodology/broker-api-comparator/",
    "contract": "https://aifinhub.io/contracts/broker-api-comparator.json",
    "engine": "https://aifinhub.io/engines/broker-api-comparator.js",
    "engine_sha256": "3bf1b8d0a4c8329dc53eb1daa256efa0fb3296434288c6f5d5b8c93c3a9048f7",
    "build": "9e8a56a16bda662ba90601b49561a2b176e9c379"
  },
  "disclaimer": "Planning estimates only — not financial, tax, or investment advice.",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "cite": "AI Fin Hub, Broker API Comparator (engine 3bf1b8d0a4c8), https://aifinhub.io/api/run/broker-api-comparator"
}