Article
Schwab API for Traders: Costs and Real Limits
Evaluate whether the Schwab Trader API fits your technical trading workflow using instrument coverage, authentication requirements, data access, and a pre-build checklist.
The Schwab Trader API is the successor to the TD Ameritrade Developer API. It gives developers programmatic access to Schwab account data, market data, and order submission for US markets via a REST interface with OAuth 2.0 authentication. This guide covers what it supports, who it fits, and what to resolve before you build. Planning support only, no trading advice; no broker or data guarantee.
What is the Schwab Trader API?
The Schwab Trader API is Schwab's REST API for programmatic access to market data, account data, and order routing. It replaced the TD Ameritrade Developer API after Schwab's acquisition of TD Ameritrade, the TDA API is now fully retired.
If you built on the TDA API, Schwab Trader API is the migration target. The underlying patterns are similar, REST endpoints, JSON responses, OAuth 2.0, but endpoint paths and some behaviors changed. The current specification lives at developer.schwab.com.
For a broader comparison of broker APIs for technical trading workflows, see IBKR vs Alpaca vs Tradier: Costs, Limits, Data Gaps. For a detailed breakdown of what Schwab Trader API costs relative to IBKR data subscriptions and Alpaca's data tiers, see Schwab Trader API Cost vs IBKR and Alpaca: What Retail Technical Traders Actually Pay.
What instruments and order types does the Schwab API support?
The Schwab Trader API supports trading US equities, ETFs, options (including multi-leg strategies: vertical spreads, straddles, butterflies), and index options. Futures, forex, crypto, bonds, and non-US equities cannot be traded via the API, a futures order returns HTTP 400. Limited, undocumented streaming quote data exists for some futures instruments, but there is no futures order routing and no futures historical bar data.
Supported order types: market, limit, stop, stop-limit, trailing stop, OCO (one-cancels-other), OTO (one-triggers-other), and composite (one-triggers-OCO). Multi-leg options combinations with OCO/OTO are flagged as experimental in the developer community, validate with a live broker connection before building production logic around them.
Options symbols use the OSI 21-character format, for example: AAPL 240419C00150000. Confirm your symbol format handling before writing data pipeline code.
| Instrument | Trading via API | Streaming Quotes | Historical Bars |
|---|---|---|---|
| US equities | Yes | Yes (L1 + L2) | Yes |
| ETFs | Yes | Yes (L1 + L2) | Yes |
| Options (incl. multi-leg) | Yes | Yes | No |
| Index options | Yes | Yes | No |
| Futures | No, HTTP 400 | Limited/undocumented | No |
| Forex / Crypto | No | No | No |
| Non-US equities | No | No | No |
How does Schwab Trader API authentication work?
Authentication uses a three-legged OAuth 2.0 flow. Your app redirects the user to a Schwab authorization page, the user grants access, and your app exchanges the authorization code for tokens.
Access tokens last approximately 30 minutes. Refresh tokens last approximately 7 days. An unused refresh token will expire and require a new user-facing authorization step. Any workflow that runs unattended across a weekend needs active token refresh logic built in.
Register your application and retrieve your client ID, client secret, and redirect URI at developer.schwab.com. Keep credentials out of version control.
Does the Schwab API have a sandbox?
Yes. A sandbox environment with synthetic accounts and data is available. It uses the same credentials as production but connects to a different base URL.
The sandbox is a synthetic-data testing environment, not a paper trading account. There is no paper trading mode in the Schwab Trader API, the API connects to live accounts only. Use the sandbox to validate authentication, token refresh logic, and data shapes before connecting to a live account.
What does WebSocket streaming cover?
The API supports WebSocket streaming for real-time data. Streaming covers Level 1 and Level 2 (NYSE/NASDAQ) quotes for equities and ETFs, options quotes, and time-of-sale. Some undocumented futures quote streaming exists but is not part of the official API surface.
For rate limits and extended-hours quote coverage, check the current Schwab developer documentation at developer.schwab.com.
Who fits the Schwab Trader API?
The Schwab Trader API fits technical traders and developers who trade US equities, ETFs, and options on Schwab accounts. It is a natural migration path from the TD Ameritrade Developer API.
| Good fit | Not a fit |
|---|---|
| US equities, ETFs, options on Schwab | Multi-asset traders needing futures, forex, or non-US markets |
| TD Ameritrade API migrators | Workflows requiring paper trading mode |
| Standard REST/OAuth with sandbox | Futures order routing required |
| Retail account, US market focus | Institutional or global-exchange requirements |
Individual access is not commercial approval
Registering at developer.schwab.com and testing against your own account is individual access. Offering an application that connects other Schwab clients' accounts is a separate step: it requires commercial approval, a review that evaluates your use case, whether users keep direct control over order placement, and any automated or AI-driven functionality, all against Schwab's self-directed retail trading model.
If you plan to ship a product on top of the Trader API, scope that review early. For what it evaluates and how to prepare, see Schwab Trader API Commercial Approval: What the Review Evaluates. For the read-only design pattern that fits the self-directed model, see Read-Only Schwab API Apps: Staying Inside the Self-Directed Model.
Before you build: checklist
Run this before writing integration code.
- Register your application at developer.schwab.com. Collect client ID, client secret, and redirect URI.
- Confirm your account type is API-eligible, check the current Schwab developer documentation for eligible account types.
- Test authentication end-to-end in the sandbox. Confirm token refresh works at the 30-minute boundary before connecting to a live account.
- Map every instrument to Schwab's symbol format. Options use the OSI 21-character format, confirm your parser handles it correctly.
- Verify which instruments you need against the trading scope above. Futures order routing is not available.
- Scope historical bar needs: equities and ETFs only, at daily, 1-minute, 5-minute, 10-minute, 15-minute, and 30-minute intervals. One-minute history is approximately 30 to 35 days deep.
- For transaction history depth and split/dividend adjustment details, check the current Schwab developer documentation before building dependent logic.
- For IBKR alternatives or a broader API stack comparison, see IBKR vs Alpaca vs Tradier: Costs, Limits, Data Gaps.
- For consulting support scoping a Schwab workflow build, see workflow consulting.
FAQ
Is the Schwab Trader API the same as the TD Ameritrade Developer API?
No. The Schwab Trader API is the successor. The TDA API is now fully retired. Authentication and endpoint paths differ; existing TDA integrations need migration. The current specification is at developer.schwab.com.
Does the Schwab API support paper trading?
No. The Schwab Trader API connects to live accounts only. The sandbox is a synthetic-data testing environment for validating authentication, token logic, and data shapes, it is not a paper trading account.
What instruments can I trade via the Schwab Trader API?
US equities, ETFs, options including multi-leg strategies, and index options. Futures, forex, crypto, bonds, and non-US equities cannot be traded. A futures order returns HTTP 400. Some undocumented futures streaming quote data exists but there is no order routing or historical bar access for futures.
How does the Schwab API compare to IBKR for technical trading?
Schwab covers US equities, ETFs, and options with a simpler OAuth 2.0 setup and sandbox. IBKR covers a broader instrument universe globally including futures. For a detailed comparison, see IBKR vs Schwab Trader API for Technical Traders.
Do I need commercial approval to use the Schwab Trader API?
Not to build and test against your own account, that is individual access. Commercial approval is a separate review required before you can offer an application that connects other Schwab clients' accounts. See Schwab Trader API Commercial Approval: What the Review Evaluates.
Sample Structured Chart-Data Exports
Review how chart drawings, annotations, OHLC, volume, and execution context become reusable structured data.

