The Charles Schwab Trader API is live for individual developers in 2026: you register on developer.schwab.com, create an app for the Trader API (Individual), and wait for Schwab's manual approval, which the widely used schwab-py library documents as taking "up to a few days"1. Order throttling is set per app at registration: an "Order Limit" of order-related requests per minute, which schwab-py recommends setting to the maximum of 1201. Access tokens last 30 minutes and refresh tokens 7 days, so an unattended bot has to re-run the login flow weekly2. The TD Ameritrade API that preceded it stopped working in May 20243. Compare Schwab with other brokers in the Broker API Comparator.

A sourcing note: Schwab's developer portal renders client-side and did not return readable content to automated checks on 2026-10-11, so the operational details here come from the schwab-py documentation, which describes the registration form and token behaviour field by field. Confirm limits in your own app dashboard before relying on them.

Is the Schwab Trader API available to individuals?

Yes. The path is: create a developer account with your Schwab credentials, create an application, choose the API product, set the order limit and callback URL, and submit1. schwab-py notes that a new app shows "Approved - Pending" at first, which does not mean usable; the app is ready only when its status reads "Ready For Use", and that can take up to a few days1. You then receive an app key and secret for the OAuth flow.

What is the Schwab Trader API rate limit?

The documented control is the per-app Order Limit: "the number of order-related requests your app will be permitted to place each minute. If you make, cancel, or replace more than this many orders each minute, you'll be throttled and your orders will be rejected", with 120 recommended as the setting for most users1. This is an order throttle configured at registration, not a flat per-endpoint request limit, so read the effective value from your app settings and back off on throttling errors.

How long do Schwab API tokens last?

Token Lifetime Consequence
Access token 30 minutes Refreshed automatically by client libraries
Refresh token 7 days Re-run the browser login flow weekly

Source: schwab-py authentication docs, read 2026-10-112. Requests for a new access token with a refresh token older than seven days are rejected with an invalid_client error2. schwab-py suggests cycling the token before the market opens each week so it does not expire mid-session3.

What happened to the TD Ameritrade API?

It is gone. schwab-py's transition guide states that as of May 13, 2024 the API behind the old tda-api library "is no longer working", and that all former users must move to the Schwab API3. Code pointed at TD Ameritrade endpoints must be rebuilt on the Schwab Trader API, with its new app approval and seven-day token rule.

Is there a thinkorswim API?

No separate one. thinkorswim continues as a Schwab platform and thinkScript runs inside it for studies and alerts, but programmatic order placement goes through the Schwab Trader API.

Where does Schwab fit?

  • Existing Schwab account holders: the natural choice for programmatic access to an account you already hold.
  • Starting fresh: the app review and weekly re-login make Alpaca or IBKR faster to stand up.
  • Former TD Ameritrade developers: migrate; the old API no longer works.
  • Cost: stock and ETF trades are $0 online and options carry $0.65 per contract on Schwab's pricing page (read 2026-10-11)4.

Connects to

References

Footnotes

  1. schwab-py. "Getting Started" (developer account, app creation, API product, Order Limit field and the recommended 120, approval "can take up to a few days", Ready For Use status). Read 2026-10-11. https://schwab-py.readthedocs.io/en/latest/getting-started.html ↩ ↩2 ↩3 ↩4 ↩5

  2. schwab-py. "Authentication and Client Creation" (access tokens valid for thirty minutes; refresh tokens older than seven days rejected). Read 2026-10-11. https://schwab-py.readthedocs.io/en/latest/auth.html ↩ ↩2 ↩3

  3. schwab-py. "Transitioning from TDAmeritrade and tda-api" (old API no longer working as of May 13, 2024; seven-day tokens; weekly token cycling). Read 2026-10-11. https://schwab-py.readthedocs.io/en/latest/tda-transition.html ↩ ↩2 ↩3

  4. Charles Schwab. "Pricing" ($0 online equity commissions; $0.65 per options contract). Read 2026-10-11. https://www.schwab.com/pricing ↩

Verified engine output

Show the recompute-verified inputs and outputs
Brokers covering both options and futures
Inputs
require_futures1
require_options1
Result
filters › require optionstrue
filters › require futurestrue
filters › require cryptofalse
filters › require mcpfalse
filters › require free tierfalse
filters › max auth complexity5
results › row 1 › broker › idibkr
results › row 1 › broker › nameInteractive Brokers
results › row 1 › broker › urlhttps://www.interactivebrokers.com/
results › row 1 › broker › docs urlhttps://www.interactivebrokers.com/en/trading/ib-api.php
results › row 1 › broker › authOAuth + TWS/IB Gateway
results › row 1 › broker › auth complexity5
results › row 1 › broker › order types (10 items)[...]
results › row 1 › broker › rate limitsMarket-data lines / 2 requests per second (50 on the default 100 lines); small-bar history 60 requests per 10 min
results › row 1 › broker › market data › row 1Global equities via subscription bundles
results › row 1 › broker › market data › row 2Level-2 depth on most exchanges
results › row 1 › broker › market data › row 3Historical depth across asset classes
results › row 1 › broker › mcpofficial
results › row 1 › broker › mcp noteOfficial IBKR Connector: remote MCP at api.ibkr.com, IBKR sign-in, one account; drafts trade instructions that you submit as orders yourself
results › row 1 › broker › assets › stockstrue
results › row 1 › broker › assets › optionstrue
results › row 1 › broker › assets › futurestrue
results › row 1 › broker › assets › cryptotrue
results › row 1 › broker › assets › forextrue
results › row 1 › broker › assets › bondstrue
results › row 1 › broker › account minimum0
results › row 1 › broker › commissionTiered per-share or fixed; ~$0.0035/sh tiered
results › row 1 › broker › good forMulti-asset-class, international, scale
results › row 1 › broker › has free tierfalse
results › row 1 › broker › notes › row 1Requires TWS or IB Gateway running locally
results › row 1 › broker › notes › row 2Idempotency via client-supplied orderId
results › row 1 › broker › notes › row 3Fully headless gateway is possible but under-documented
results › row 1 › score3
results › row 1 › max score3
results › row 1 › fitstrue
results › row 2 › broker › idalpaca
results › row 2 › broker › nameAlpaca
results › row 2 › broker › urlhttps://alpaca.markets/
results › row 2 › broker › docs urlhttps://alpaca.markets/docs/
results › row 2 › broker › authAPI Key + Secret
results › row 2 › broker › auth complexity1
results › row 2 › broker › order types (10 items)[...]
results › row 2 › broker › rate limitsTrading API 200 req/min; market data 200/min free, 10,000/min on Algo Trader Plus
results › row 2 › broker › market data › row 1IEX real-time (free)
results › row 2 › broker › market data › row 2Full SIP on Algo Trader Plus ($99/mo)
results › row 2 › broker › market data › row 3Historical bars + trades + quotes
results › row 2 › broker › mcpofficial
results › row 2 › broker › mcp noteOfficial open-source MCP server (V2 rewrite on FastMCP/OpenAPI); data, paper and live trading
results › row 2 › broker › assets › stockstrue
results › row 2 › broker › assets › optionstrue
results › row 2 › broker › assets › futuresfalse
results › row 2 › broker › assets › cryptotrue
results › row 2 › broker › assets › forexfalse
results › row 2 › broker › assets › bondsfalse
results › row 2 › broker › account minimum0
results › row 2 › broker › commission$0 (PFOF on equities)
results › row 2 › broker › good forSolo AI operator, paper-to-live parity
results › row 2 › broker › has free tiertrue
results › row 2 › broker › notes › row 1Free paper trading with same API surface as live
results › row 2 › broker › notes › row 2Real-time OPRA options data needs Algo Trader Plus; Basic gets the indicative feed
results › row 2 › broker › notes › row 3Python/Go SDKs mature; rate-limit backoff documented
results › row 2 › score2
results › row 2 › max score3
results › row 2 › fitsfalse
results › row 2 › fail reasons › row 1Futures
results › row 3 › broker › idtradier
results › row 3 › broker › nameTradier
results › row 3 › broker › urlhttps://tradier.com/
results › row 3 › broker › docs urlhttps://developer.tradier.com/
results › row 3 › broker › authOAuth 2.0
results › row 3 › broker › auth complexity3
results › row 3 › broker › order types (8 items)[...]
results › row 3 › broker › rate limits120 req/min standard and market data, 60 req/min trading (production)
results › row 3 › broker › market data › row 1Real-time equities + options (streaming)
results › row 3 › broker › market data › row 2Historical OHLC back ~5 years
results › row 3 › broker › market data › row 3No Level-2 depth
results › row 3 › broker › mcpofficial
results › row 3 › broker › mcp noteOfficial hosted MCP server (Streamable HTTP, personal API token); market data, accounts and order placement
results › row 3 › broker › assets › stockstrue
results › row 3 › broker › assets › optionstrue
results › row 3 › broker › assets › futuresfalse
results › row 3 › broker › assets › cryptofalse
results › row 3 › broker › assets › forexfalse
results › row 3 › broker › assets › bondsfalse
results › row 3 › broker › account minimum0
results › row 3 › broker › commission$0 equities (PFOF), $0.35/contract options Pro
results › row 3 › broker › good forOptions-first retail, multi-leg strategies
results › row 3 › broker › has free tiertrue
results › row 3 › broker › notes › row 1Free sandbox with delayed data
results › row 3 › broker › notes › row 2Strong options chain + multi-leg order API
results › row 3 › broker › notes › row 3US-only account eligibility
results › row 3 › score2
results › row 3 › max score3
results › row 3 › fitsfalse
results › row 3 › fail reasons › row 1Futures
results › row 4 › broker › idrobinhood
results › row 4 › broker › nameRobinhood
results › row 4 › broker › urlhttps://robinhood.com/
results › row 4 › broker › docs urlhttps://docs.robinhood.com/
results › row 4 › broker › authAPI key (Crypto Trading API); Robinhood sign-in (Trading MCP)
results › row 4 › broker › auth complexity3
results › row 4 › broker › order types › row 1market
results › row 4 › broker › order types › row 2limit
results › row 4 › broker › order types › row 3stop
results › row 4 › broker › order types › row 4stop-limit
results › row 4 › broker › rate limitsNot publicly documented
results › row 4 › broker › market data › row 1Delayed quotes in public tier
results › row 4 › broker › market data › row 2Limited historical depth
results › row 4 › broker › market data › row 3No public Level-2
results › row 4 › broker › mcpofficial
results › row 4 › broker › mcp noteOfficial Robinhood Trading MCP (Agentic Trading): long equities, options and crypto, only in a dedicated agentic account; no multi-leg options
results › row 4 › broker › assets › stockstrue
results › row 4 › broker › assets › optionstrue
results › row 4 › broker › assets › futuresfalse
results › row 4 › broker › assets › cryptotrue
results › row 4 › broker › assets › forexfalse
results › row 4 › broker › assets › bondsfalse
results › row 4 › broker › account minimum0
results › row 4 › broker › commission$0 (PFOF), $5/mo Gold for margin + extras
results › row 4 › broker › good forAgent-driven trading from an existing Robinhood account; no REST API for stocks or options
results › row 4 › broker › has free tiertrue
results › row 4 › broker › notes › row 1Official REST API covers crypto only; stocks and options are reachable only through the Trading MCP
results › row 4 › broker › notes › row 2Trade approvals are off by default for external MCP agents
results › row 4 › broker › notes › row 3Paper trading unavailable
results › row 4 › score2
results › row 4 › max score3
results › row 4 › fitsfalse
results › row 4 › fail reasons › row 1Futures
results › row 5 › broker › idschwab
results › row 5 › broker › nameSchwab
results › row 5 › broker › urlhttps://www.schwab.com/
results › row 5 › broker › docs urlhttps://developer.schwab.com/
results › row 5 › broker › authOAuth 2.0 (3-legged)
results › row 5 › broker › auth complexity4
results › row 5 › broker › order types (9 items)[...]
results › row 5 › broker › rate limits120 req/min for non-order calls per app; order writes 0-120/min per account, set at app registration
results › row 5 › broker › market data › row 1Real-time equities + options quotes
results › row 5 › broker › market data › row 2Historical bars (1m to daily)
results › row 5 › broker › market data › row 3No exchange depth via API
results › row 5 › broker › mcpcommunity
results › row 5 › broker › mcp noteNo official MCP; community servers wrap the Trader API (self-hosted, re-authorize when the 7-day refresh token expires)
results › row 5 › broker › assets › stockstrue
results › row 5 › broker › assets › optionstrue
results › row 5 › broker › assets › futuresfalse
results › row 5 › broker › assets › cryptofalse
results › row 5 › broker › assets › forexfalse
results › row 5 › broker › assets › bondsfalse
results › row 5 › broker › account minimum0
results › row 5 › broker › commission$0 equities, $0.65/contract options
results › row 5 › broker › good forEstablished retail, post-TDA API migration
results › row 5 › broker › has free tiertrue
results › row 5 › broker › notes › row 1API rebuilt after TD Ameritrade integration; still maturing
results › row 5 › broker › notes › row 2Orders cover stocks, ETFs and options; futures and forex trade on thinkorswim, not through the API
results › row 5 › broker › notes › row 3Requires individual developer registration and app review
results › row 5 › broker › notes › row 4Token refresh flow is finicky vs Alpaca/Tradier
results › row 5 › score2
results › row 5 › max score3
results › row 5 › fitsfalse
results › row 5 › fail reasons › row 1Futures
fitting brokers › row 1 › broker › idibkr
fitting brokers › row 1 › broker › nameInteractive Brokers
fitting brokers › row 1 › broker › urlhttps://www.interactivebrokers.com/
fitting brokers › row 1 › broker › docs urlhttps://www.interactivebrokers.com/en/trading/ib-api.php
fitting brokers › row 1 › broker › authOAuth + TWS/IB Gateway
fitting brokers › row 1 › broker › auth complexity5
fitting brokers › row 1 › broker › order types (10 items)[...]
fitting brokers › row 1 › broker › rate limitsMarket-data lines / 2 requests per second (50 on the default 100 lines); small-bar history 60 requests per 10 min
fitting brokers › row 1 › broker › market data › row 1Global equities via subscription bundles
fitting brokers › row 1 › broker › market data › row 2Level-2 depth on most exchanges
fitting brokers › row 1 › broker › market data › row 3Historical depth across asset classes
fitting brokers › row 1 › broker › mcpofficial
fitting brokers › row 1 › broker › mcp noteOfficial IBKR Connector: remote MCP at api.ibkr.com, IBKR sign-in, one account; drafts trade instructions that you submit as orders yourself
fitting brokers › row 1 › broker › assets › stockstrue
fitting brokers › row 1 › broker › assets › optionstrue
fitting brokers › row 1 › broker › assets › futurestrue
fitting brokers › row 1 › broker › assets › cryptotrue
fitting brokers › row 1 › broker › assets › forextrue
fitting brokers › row 1 › broker › assets › bondstrue
fitting brokers › row 1 › broker › account minimum0
fitting brokers › row 1 › broker › commissionTiered per-share or fixed; ~$0.0035/sh tiered
fitting brokers › row 1 › broker › good forMulti-asset-class, international, scale
fitting brokers › row 1 › broker › has free tierfalse
fitting brokers › row 1 › broker › notes › row 1Requires TWS or IB Gateway running locally
fitting brokers › row 1 › broker › notes › row 2Idempotency via client-supplied orderId
fitting brokers › row 1 › broker › notes › row 3Fully headless gateway is possible but under-documented
fitting brokers › row 1 › score3
fitting brokers › row 1 › max score3
fitting brokers › row 1 › fitstrue

Computed live at build time.

Frequently asked questions

Is the Schwab Trader API available to individual developers in 2026?
Yes. You create an app on developer.schwab.com for the Trader API and wait for manual approval, which the schwab-py documentation says can take up to a few days. The app is usable once its status reads Ready For Use.
What is the Schwab Trader API rate limit?
Order throttling is configured per app as an Order Limit: the number of order-related requests (place, cancel, replace) allowed per minute. schwab-py recommends setting it to 120. Exceeding it throttles and rejects orders.
How long do Schwab API tokens last?
Access tokens last 30 minutes and are refreshed automatically by client libraries. Refresh tokens last 7 days; after that the browser login flow must be repeated, so unattended bots need a weekly re-login.
Does the TD Ameritrade API still work?
No. schwab-py's transition guide states that as of May 13, 2024 the API behind tda-api no longer works; integrations must be rebuilt on the Schwab Trader API.