Information to get you started
The E*TRADE Developer Platform enables E*TRADE customers and developers to create their own investment applications that leverage E*TRADE's extensive market data offerings, order-routing capabilities, and other services.
The platform's API also allows E*TRADE customers who currently use a third-party trading platform to view E*TRADE account and market information and place trade orders directly to E*TRADE from that platform.
Using the E*TRADE Developer Platform, a client application can:
- Authenticate E*TRADE customers
- Directly manage trading: place orders, modify or cancel orders, and check order status
- Review specific information for an account, such as balances and current positions
- Retrieve price and other information about an index, stock, or option
- Receive system messages from E*TRADE
This documentation assumes that the developer is familiar with trading concepts and market terminology. For clarification of market terms, you may find the E*TRADE Financial Help Center helpful.
Dates and times are all US Eastern Time. Most times and dates in API responses are represented as epoch time, i.e., the number of seconds since 12:00am on January 1, 1970.
The E*TRADE Developer Platform provides most of its services via a REST API. Most of the API features are accessed via simple HTTP GET requests. Requests that require detailed input, such as an order to buy or sell stock, use an HTTP POST request, with the parameters included as either XML or JSON data. The HTTP DELETE request is also used, with one API, to delete messages after they have been read.
The E*TRADE REST API uses the OAuth protocol to authorize every service request. In practice, this means that your application must enable users to log in to their E*TRADE account and click a consent button to grant access for each session. For your application to do this, even for testing purposes, requires an OAuth consumer key - a code that uniquely identifies the application (i.e., the service consumer) and its developer.
We support two levels of consumer key. An individual key is tied to a single user ID, and allows access for only that user. This is appropriate for developing applications for personal use, or for the early stages of a larger development effort. A vendor key, on the other hand, permits access by multiple users and is appropriate for applications that may be widely distributed.
Note that separate keys are required for accessing "sandbox" data (used for development and testing purposes) versus actual production data. For this reason, a typical developer has at least two consumer keys.
To request a key, you must have an E*TRADE account. (You will also need the account so that you can log in and use your application.) It can be a personal, professional, or corporate account. If you don't have one, you can quickly set one up online at https://www.etrade.com. For development purposes, it is not necessary to fund the account, but to do any actual trading will require funds.
When you are logged in to your account, request a consumer key via a secure message. Select the subject "Technical Issue" and the topic "E*TRADE API".
Be sure to:
- State that you are requesting a consumer key
- Explain the type of application you are developing
- Specify whether you want an individual or vendor key
You may also want to request that your user account be approved as a non-funded account, so that you're not required to have funds in the account to keep it open.
Within a few business days, a sandbox consumer key will be sent back to you by secure message, along with a Developer Agreement which you will need to review and sign. When we've received your agreement and processed your request, we'll issue you a production consumer key.
When you get the key, you will be notified of its scheduled expiration date - typically, two years from its creation date.
Note that if you are assigned an individual key, rather than a vendor key, it will only work with your E*TRADE account. Attempting to use an individual key with a different user account will result in an error.
Here are some things you need before you start
As a developer, you are asked to sign an API agreement before you will be issued a consumer key for production data. As mentioned earlier, requesting a key requires that you log in to your E*TRADE account and send a secure message.
As a user, whenever the application starts a session with the E*TRADE platform, you must log in to your E*TRADE account and agree to an authorization request.
Market Data Agreement
As a user, you must sign the Market Data Agreement before you can access data with the quote API.
Extended Hours Trading Agreement
As a user, you must sign the Extended Hours Trading Agreement before you can perform after-hours trading (if the application supports this feature).