The Charles Schwab Trader API is live and open to individual (non-institutional) developers in 2026: you register on developer.schwab.com, request the Trader API - Individual product, and approval typically takes 1-3 business days, with a documented rate limit of 120 requests/minute per endpoint — verified on 2026-05-2512. The TD Ameritrade-to-Schwab migration is complete; the legacy TD Ameritrade API was shut down after market close on May 10, 2024, and all programmatic trading now routes through the Schwab Trader API3. There is no separate thinkorswim trading API — thinkScript runs inside the platform but is not a programmatic order interface3. Compare Schwab against the other broker APIs in the Broker API Comparator.
TL;DR
- Status: the Schwab Trader API is production-live and available to individual developers12.
- Approval: register on developer.schwab.com, request the Trader API - Individual product; approval is typically 1-3 business days2.
- Rate limit: 120 requests/minute per endpoint; exceeding it returns HTTP 4292.
- Migration: the TD Ameritrade API was permanently shut down after May 10, 2024; everything now goes through Schwab3.
- thinkorswim: no standalone trading API. thinkScript is platform-only; automation uses the Schwab Trader API3.
- Auth: OAuth 2.0 three-legged flow with a token-refresh lifecycle.
Is the API available to individuals?
Yes. Schwab publishes a Trader API - Individual product on its developer portal, distinct from the institutional offerings1. The path is: create a developer account using your Schwab credentials, register an app, request the Trader API - Individual product, accept the terms, and submit for review. Approval is a manual step that typically completes in 1-3 business days2. After approval you receive a client ID and secret for the OAuth flow.
The friction points are real but manageable: a three-legged OAuth 2.0 flow, a redirect-URI requirement, and a token-refresh lifecycle that is fussier than a copy-paste API key. This is the same auth model used by Tradier and other OAuth-based brokers, just with Schwab's app-review gate in front.
The documented rate limit
| Property | Value |
|---|---|
| Rate limit | 120 requests/minute per endpoint |
| Over-limit response | HTTP 429 (e.g. 429-001 general, 429-005 burst) |
| Recommended backoff | pause and retry after the window resets |
| Auth | OAuth 2.0 (three-legged) |
Verified against the Schwab developer portal and corroborating documentation on 2026-05-2512. The 120/minute ceiling is per endpoint, and order operations (PUT/POST/DELETE) are throttled while GET requests for order status are not2. Build a 429-aware backoff in from the start.
The TD Ameritrade migration is done
The single biggest source of confusion is legacy TD Ameritrade integrations. That migration is complete: the TD Ameritrade API was permanently shut down after market close on May 10, 20243. TD Ameritrade accounts, the thinkorswim platform, and all services moved under Schwab. Any code still pointed at TD Ameritrade endpoints stopped working over a year ago and must be rebuilt on the Schwab Trader API.
There is no thinkorswim API
The other recurring question: "where is the thinkorswim API?" There isn't one. The thinkorswim platform remains fully operational under Schwab, and thinkScript still runs for studies and alerts — but thinkScript is not a programmatic order-placement interface3. Every automated trader on Schwab/thinkorswim in 2026 uses the Schwab Trader API for order placement; the platform itself does not expose a public trading API. See Charles Schwab thinkorswim API for Automated Trading 2026 for the full thinkorswim-branding answer.
Where Schwab fits
- Established Schwab account holders: the natural choice — the Trader API gives programmatic access to an account you already hold, with deep multi-asset coverage (equities, options, futures, forex).
- Starting fresh in 2026: the OAuth flow and app-review gate make Alpaca or IBKR faster to onboard if you do not already bank with Schwab.
- Former TD Ameritrade developers: you must migrate; the old API is gone.
Compare the auth complexity and rate limits side by side in the Broker API Comparator below.
Verified figures
API availability, the individual-developer product, the ~1-3 business-day approval window, the 120/minute rate limit, the TD Ameritrade shutdown date, and the absence of a thinkorswim trading API were all verified on 2026-05-25. Where exact internal sub-limits (for example, per-burst thresholds) were not fully published, they are described rather than quoted.
Connects to
- Charles Schwab thinkorswim API 2026: the thinkorswim-specific automation answer.
- Choosing a Broker API in 2026: the five-broker selection pillar.
- Alpaca API Rate Limits 2026: the easier-onboarding alternative.
- Broker API Comparator: side-by-side auth complexity and limits.
References
Footnotes
-
Charles Schwab. "Developer Portal - Trader API - Individual product." developer.schwab.com, verified 2026-05-25. https://developer.schwab.com/ ↩ ↩2 ↩3 ↩4
-
Charles Schwab Trader API documentation (rate limit 120 req/min per endpoint, 429 over-limit responses, individual-developer approval process). verified 2026-05-25. https://developer.schwab.com/products ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Schwab / TD Ameritrade migration: TD Ameritrade API shut down after market close 2024-05-10; thinkorswim has no standalone trading API; automation routes through the Schwab Trader API. verified 2026-05-25. https://developer.schwab.com/ ↩ ↩2 ↩3 ↩4 ↩5 ↩6
Verified engine output
Show the recompute-verified inputs and outputs
| require_futures | 1 |
|---|---|
| require_options | 1 |
| filters › require options | true |
|---|---|
| filters › require futures | true |
| filters › require crypto | false |
| filters › require mcp | false |
| filters › require free tier | false |
| filters › max auth complexity | 5 |
| results › row 1 › broker › id | schwab |
| results › row 1 › broker › name | Schwab |
| results › row 1 › broker › url | https://www.schwab.com/ |
| results › row 1 › broker › docs url | https://developer.schwab.com/ |
| results › row 1 › broker › auth | OAuth 2.0 (3-legged) |
| results › row 1 › broker › auth complexity | 4 |
| results › row 1 › broker › order types (9 items) | [...] |
| results › row 1 › broker › rate limits | 120 req/min per endpoint (published tier) |
| results › row 1 › broker › market data › row 1 | Real-time equities + options quotes |
| results › row 1 › broker › market data › row 2 | Historical bars (1m to daily) |
| results › row 1 › broker › market data › row 3 | No exchange depth via API |
| results › row 1 › broker › mcp | none |
| results › row 1 › broker › mcp note | No official or listed community MCP server |
| results › row 1 › broker › assets › stocks | true |
| results › row 1 › broker › assets › options | true |
| results › row 1 › broker › assets › futures | true |
| results › row 1 › broker › assets › crypto | false |
| results › row 1 › broker › assets › forex | true |
| results › row 1 › broker › assets › bonds | true |
| results › row 1 › broker › account minimum | 0 |
| results › row 1 › broker › commission | $0 equities, $0.65/contract options |
| results › row 1 › broker › good for | Established retail, post-TDA API migration |
| results › row 1 › broker › has free tier | true |
| results › row 1 › broker › notes › row 1 | API rebuilt after TD Ameritrade integration; still maturing |
| results › row 1 › broker › notes › row 2 | Requires individual developer registration and app review |
| results › row 1 › broker › notes › row 3 | Token refresh flow is finicky vs Alpaca/Tradier |
| results › row 1 › score | 3 |
| results › row 1 › max score | 3 |
| results › row 1 › fits | true |
| results › row 2 › broker › id | ibkr |
| results › row 2 › broker › name | Interactive Brokers |
| results › row 2 › broker › url | https://www.interactivebrokers.com/ |
| results › row 2 › broker › docs url | https://www.interactivebrokers.com/en/trading/ib-api.php |
| results › row 2 › broker › auth | OAuth + TWS/IB Gateway |
| results › row 2 › broker › auth complexity | 5 |
| results › row 2 › broker › order types (10 items) | [...] |
| results › row 2 › broker › rate limits | ~50 msg/sec per connection; 50 orders/sec burst |
| results › row 2 › broker › market data › row 1 | Global equities via subscription bundles |
| results › row 2 › broker › market data › row 2 | Level-2 depth on most exchanges |
| results › row 2 › broker › market data › row 3 | Historical depth across asset classes |
| results › row 2 › broker › mcp | community |
| results › row 2 › broker › mcp note | Community CLI MCP; audit before production |
| results › row 2 › broker › assets › stocks | true |
| results › row 2 › broker › assets › options | true |
| results › row 2 › broker › assets › futures | true |
| results › row 2 › broker › assets › crypto | true |
| results › row 2 › broker › assets › forex | true |
| results › row 2 › broker › assets › bonds | true |
| results › row 2 › broker › account minimum | 0 |
| results › row 2 › broker › commission | Tiered per-share or fixed; ~$0.0035/sh tiered |
| results › row 2 › broker › good for | Multi-asset-class, international, scale |
| results › row 2 › broker › has free tier | false |
| results › row 2 › broker › notes › row 1 | Requires TWS or IB Gateway running locally |
| results › row 2 › broker › notes › row 2 | Idempotency via client-supplied orderId |
| results › row 2 › broker › notes › row 3 | Fully headless gateway is possible but under-documented |
| results › row 2 › score | 3 |
| results › row 2 › max score | 3 |
| results › row 2 › fits | true |
| results › row 3 › broker › id | alpaca |
| results › row 3 › broker › name | Alpaca |
| results › row 3 › broker › url | https://alpaca.markets/ |
| results › row 3 › broker › docs url | https://alpaca.markets/docs/ |
| results › row 3 › broker › auth | API Key + Secret |
| results › row 3 › broker › auth complexity | 1 |
| results › row 3 › broker › order types (10 items) | [...] |
| results › row 3 › broker › rate limits | 200 req/min (free), higher on paid tiers |
| results › row 3 › broker › market data › row 1 | IEX real-time (free) |
| results › row 3 › broker › market data › row 2 | Full SIP on Algo Trader Plus ($99/mo) |
| results › row 3 › broker › market data › row 3 | Historical bars + trades + quotes |
| results › row 3 › broker › mcp | official |
| results › row 3 › broker › mcp note | Official MCP V2, 61 actions, idempotent order submission |
| results › row 3 › broker › assets › stocks | true |
| results › row 3 › broker › assets › options | true |
| results › row 3 › broker › assets › futures | false |
| results › row 3 › broker › assets › crypto | true |
| results › row 3 › broker › assets › forex | false |
| results › row 3 › broker › assets › bonds | false |
| results › row 3 › broker › account minimum | 0 |
| results › row 3 › broker › commission | $0 (PFOF on equities) |
| results › row 3 › broker › good for | Solo AI operator, paper-to-live parity |
| results › row 3 › broker › has free tier | true |
| results › row 3 › broker › notes › row 1 | Free paper trading with same API surface as live |
| results › row 3 › broker › notes › row 2 | Options require Algo Trader Plus tier |
| results › row 3 › broker › notes › row 3 | Python/Go SDKs mature; rate-limit backoff documented |
| results › row 3 › score | 2 |
| results › row 3 › max score | 3 |
| results › row 3 › fits | false |
| results › row 3 › fail reasons › row 1 | Futures |
| results › row 4 › broker › id | tradier |
| results › row 4 › broker › name | Tradier |
| results › row 4 › broker › url | https://tradier.com/ |
| results › row 4 › broker › docs url | https://developer.tradier.com/ |
| results › row 4 › broker › auth | OAuth 2.0 |
| results › row 4 › broker › auth complexity | 3 |
| results › row 4 › broker › order types (8 items) | [...] |
| results › row 4 › broker › rate limits | 120 req/min market data, 60 req/min trading |
| results › row 4 › broker › market data › row 1 | Real-time equities + options (streaming) |
| results › row 4 › broker › market data › row 2 | Historical OHLC back ~5 years |
| results › row 4 › broker › market data › row 3 | No Level-2 depth |
| results › row 4 › broker › mcp | community |
| results › row 4 › broker › mcp note | Community MCP; idempotency is a manual patch |
| 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 | false |
| 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 equities (PFOF), $0.35/contract options Pro |
| results › row 4 › broker › good for | Options-first retail, multi-leg strategies |
| results › row 4 › broker › has free tier | true |
| results › row 4 › broker › notes › row 1 | Free sandbox with delayed data |
| results › row 4 › broker › notes › row 2 | Strong options chain + multi-leg order API |
| results › row 4 › broker › notes › row 3 | US-only account eligibility |
| results › row 4 › score | 2 |
| results › row 4 › max score | 3 |
| results › row 4 › fits | false |
| results › row 4 › fail reasons › row 1 | Futures |
| results › row 5 › broker › id | robinhood |
| results › row 5 › broker › name | Robinhood |
| results › row 5 › broker › url | https://robinhood.com/ |
| results › row 5 › broker › docs url | https://docs.robinhood.com/ |
| results › row 5 › broker › auth | OAuth 2.0 (unofficial endpoints) |
| results › row 5 › broker › auth complexity | 4 |
| results › row 5 › broker › order types › row 1 | market |
| results › row 5 › broker › order types › row 2 | limit |
| results › row 5 › broker › order types › row 3 | stop |
| results › row 5 › broker › order types › row 4 | stop-limit |
| results › row 5 › broker › order types › row 5 | gtc |
| results › row 5 › broker › order types › row 6 | ioc |
| results › row 5 › broker › rate limits | Not publicly documented; low throughput |
| results › row 5 › broker › market data › row 1 | Delayed quotes in public tier |
| results › row 5 › broker › market data › row 2 | Limited historical depth |
| results › row 5 › broker › market data › row 3 | No public Level-2 |
| results › row 5 › broker › mcp | none |
| results › row 5 › broker › mcp note | No MCP; unofficial SDKs only |
| results › row 5 › broker › assets › stocks | true |
| results › row 5 › broker › assets › options | true |
| results › row 5 › broker › assets › futures | false |
| results › row 5 › broker › assets › crypto | true |
| results › row 5 › broker › assets › forex | false |
| results › row 5 › broker › assets › bonds | false |
| results › row 5 › broker › account minimum | 0 |
| results › row 5 › broker › commission | $0 (PFOF), $5/mo Gold for margin + extras |
| results › row 5 › broker › good for | Casual retail; not recommended for agents |
| results › row 5 › broker › has free tier | true |
| results › row 5 › broker › notes › row 1 | No officially supported public API in 2026 |
| results › row 5 › broker › notes › row 2 | Community SDKs break on auth changes without notice |
| results › row 5 › broker › notes › row 3 | Paper trading unavailable |
| results › row 5 › score | 2 |
| results › row 5 › max score | 3 |
| results › row 5 › fits | false |
| results › row 5 › fail reasons › row 1 | Futures |
| fitting brokers › row 1 › broker › id | schwab |
| fitting brokers › row 1 › broker › name | Schwab |
| fitting brokers › row 1 › broker › url | https://www.schwab.com/ |
| fitting brokers › row 1 › broker › docs url | https://developer.schwab.com/ |
| fitting brokers › row 1 › broker › auth | OAuth 2.0 (3-legged) |
| fitting brokers › row 1 › broker › auth complexity | 4 |
| fitting brokers › row 1 › broker › order types (9 items) | [...] |
| fitting brokers › row 1 › broker › rate limits | 120 req/min per endpoint (published tier) |
| fitting brokers › row 1 › broker › market data › row 1 | Real-time equities + options quotes |
| fitting brokers › row 1 › broker › market data › row 2 | Historical bars (1m to daily) |
| fitting brokers › row 1 › broker › market data › row 3 | No exchange depth via API |
| fitting brokers › row 1 › broker › mcp | none |
| fitting brokers › row 1 › broker › mcp note | No official or listed community MCP server |
| fitting brokers › row 1 › broker › assets › stocks | true |
| fitting brokers › row 1 › broker › assets › options | true |
| fitting brokers › row 1 › broker › assets › futures | true |
| fitting brokers › row 1 › broker › assets › crypto | false |
| fitting brokers › row 1 › broker › assets › forex | true |
| fitting brokers › row 1 › broker › assets › bonds | true |
| fitting brokers › row 1 › broker › account minimum | 0 |
| fitting brokers › row 1 › broker › commission | $0 equities, $0.65/contract options |
| fitting brokers › row 1 › broker › good for | Established retail, post-TDA API migration |
| fitting brokers › row 1 › broker › has free tier | true |
| fitting brokers › row 1 › broker › notes › row 1 | API rebuilt after TD Ameritrade integration; still maturing |
| fitting brokers › row 1 › broker › notes › row 2 | Requires individual developer registration and app review |
| fitting brokers › row 1 › broker › notes › row 3 | Token refresh flow is finicky vs Alpaca/Tradier |
| fitting brokers › row 1 › score | 3 |
| fitting brokers › row 1 › max score | 3 |
| fitting brokers › row 1 › fits | true |
| fitting brokers › row 2 › broker › id | ibkr |
| fitting brokers › row 2 › broker › name | Interactive Brokers |
| fitting brokers › row 2 › broker › url | https://www.interactivebrokers.com/ |
| fitting brokers › row 2 › broker › docs url | https://www.interactivebrokers.com/en/trading/ib-api.php |
| fitting brokers › row 2 › broker › auth | OAuth + TWS/IB Gateway |
| fitting brokers › row 2 › broker › auth complexity | 5 |
| fitting brokers › row 2 › broker › order types (10 items) | [...] |
| fitting brokers › row 2 › broker › rate limits | ~50 msg/sec per connection; 50 orders/sec burst |
| fitting brokers › row 2 › broker › market data › row 1 | Global equities via subscription bundles |
| fitting brokers › row 2 › broker › market data › row 2 | Level-2 depth on most exchanges |
| fitting brokers › row 2 › broker › market data › row 3 | Historical depth across asset classes |
| fitting brokers › row 2 › broker › mcp | community |
| fitting brokers › row 2 › broker › mcp note | Community CLI MCP; audit before production |
| fitting brokers › row 2 › broker › assets › stocks | true |
| fitting brokers › row 2 › broker › assets › options | true |
| fitting brokers › row 2 › broker › assets › futures | true |
| fitting brokers › row 2 › broker › assets › crypto | true |
| fitting brokers › row 2 › broker › assets › forex | true |
| fitting brokers › row 2 › broker › assets › bonds | true |
| fitting brokers › row 2 › broker › account minimum | 0 |
| fitting brokers › row 2 › broker › commission | Tiered per-share or fixed; ~$0.0035/sh tiered |
| fitting brokers › row 2 › broker › good for | Multi-asset-class, international, scale |
| fitting brokers › row 2 › broker › has free tier | false |
| fitting brokers › row 2 › broker › notes › row 1 | Requires TWS or IB Gateway running locally |
| fitting brokers › row 2 › broker › notes › row 2 | Idempotency via client-supplied orderId |
| fitting brokers › row 2 › broker › notes › row 3 | Fully headless gateway is possible but under-documented |
| fitting brokers › row 2 › score | 3 |
| fitting brokers › row 2 › max score | 3 |
| fitting brokers › row 2 › fits | true |
Computed live at build time.
Frequently asked questions
- Is the Charles Schwab Trader API available to individuals in 2026?
- Yes. Schwab publishes a Trader API - Individual product on developer.schwab.com. You register, request the product, accept the terms, and submit for review; approval typically takes 1-3 business days.
- What is the Schwab Trader API rate limit?
- 120 requests per minute per endpoint. Exceeding it returns HTTP 429. Order operations (PUT/POST/DELETE) are throttled while GET requests for order status are not.
- Is the TD Ameritrade API still available?
- No. The TD Ameritrade API was permanently shut down after market close on May 10, 2024. The migration to Schwab is complete and all programmatic trading now routes through the Schwab Trader API.
- Is there a thinkorswim API in 2026?
- There is no standalone thinkorswim trading API. The platform and thinkScript remain operational, but thinkScript is not a programmatic order interface. Automation uses the Schwab Trader API.