The Streamer API enables clients to connect into different services to stream market data and account activity with JSON-formatting via WebSockets. Authentication and entitlements are provided via the Access token generated from the POST Token endpoint. Streamer information to establish the connection can be found on the GET User Preference endpoint. Client as referenced throughout this document is in reference to the application.
1. Services available:
| Service Name | Description | Delivery Type |
|---|---|---|
| LEVELONE_EQUITIES | Level 1 Equities | Change |
| LEVELONE_OPTIONS | Level 1 Options | Change |
| LEVELONE_FUTURES | Level 1 Futures | Change |
| LEVELONE_FUTURES_OPTIONS | Level 1 Futures Options | Change |
| LEVELONE_FOREX | Level 1 Forex | Change |
| NYSE_BOOK | Level Two book for Equities | Whole |
| NASDAQ_BOOK | Level Two book for Equities | Whole |
| OPTIONS_BOOK | Level Two book for Options | Whole |
| CHART_EQUITY | Chart candle for Equities | All Sequence |
| CHART_FUTURES | Chart candle for Futures | All Sequence |
| SCREENER_EQUITY | Advances and Decliners for Equities | Whole |
| SCREENER_OPTION | Advances and Decliners for Options | Whole |
| ACCT_ACTIVITY | Get account activity information such as order fills, etc | All Sequence |
2. Request Format
A client request will consist of an array of one or more commands. Each command will include:
| Request | Name | Parameter |
|---|---|---|
| service | Service Name (required) | ADMIN, LEVELONE_EQUITY etc. Please see Service Names table above. |
| command | Command (required) | LOGIN, SUBS, ADD, UNSUBS, VIEW, LOGOUT |
| requestid | Request ID (required) | Unique number that will identify this request. |
| SchwabClientCustomerId | Client's customer ID | `schwabClientCustomerId` as found in GET User Preference endpoint |
| SchwabClientCorrelId | Client's session ID | `schwabClientCorrelId` as found in GET User Preference endpoint. Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. |
| parameters | Any parameter (optional) | fields, version, credential, symbol, frequency, period, etc |
| Command | Name |
|---|---|
| LOGIN | Initial request when opening a new connection. This must be successful before sending other commands. |
| SUBS |
Subscribes to a set of symbols or keys for a particular service. This overwrites all previously subscribed symbols for that service. This is a convenient way to wipe out old subscription list and start fresh, but it's not the most efficient. If you only want to add one symbol to 300 already subscribed, use an ADD instead.
|
| ADD |
Adds a new symbol for a particular service. This does NOT wipe out previous symbols that were already subscribed. It is OK to use ADD for first subscription command instead of SUBS.
|
| UNSUBS | This unsubscribes a symbol to a list of subscribed symbol for a particular service. |
| VIEW | This changes the field subscription for a particular service. It will apply to all symbols for that particular service. |
| LOGOUT | Logs out of the streamer connection. Streamer will close the connection. |
Example:
One Request
{
"requestid": "0",
"service": "LEVELONE_EQUITIES",
"command": "SUBS",
"SchwabClientCustomerId": "Someone",
"SchwabClientCorrelId": "3be0b7e7-5b8b-4fd3-9bed-7f49106cfe1",
"parameters": {
"keys": "AAPL",
"fields": "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54"
}
}
Multiple Requests
{
"requests": [
{
"requestid": "1",
"service": "ADMIN",
"command": "LOGIN",
"SchwabClientCustomerId": "Someone",
"SchwabClientCorrelId": "2be0b7e7-5b8b-4fd3-9bed-7f49106cfe1",
"parameters": {
"Authorization": "PN",
"SchwabClientChannel": "IO",
"SchwabClientFunctionId": "Tradeticket"
}
},
{
"requestid":"3",
"service":"LEVELONE_EQUITIES",
"command":"SUBS",
"SchwabClientCustomerId":"Someone",
"SchwabClientCorrelId":"2be0b7e7-5b8b-4fd3-9bed-7f49106cfe1",
"parameters":{
"keys":"AAPL",
"fields":"0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19"
}
}
]
}
3. Response Format
There are currently three types of responses:
A client response will consist of an array of one or more responses. Each response will include:
| Response Type | Request | Name | Parameter |
|---|---|---|---|
| response notify data | service | Service Name | ADMIN, LEVELONE_EQUITY, etc. Please see Service Names table in section 5. |
| requestid | Request ID | Unique number that will identify the original request | |
| command | Command from the request | LOGIN, SUBS, ADD, UNSUBS, VIEW, LOGOUT | |
| content | Data content |
Examples:
{"notify":[{"heartbeat":"1668715930582"}]}
{
"response": [
{
"service": "LEVELONE_EQUITIES",
"command": "SUBS",
"requestid": "0",
"SchwabClientCorrelId": "3be0b7e7-5b8b-4fd3-9bed-7f49106cfe1",
"timestamp": 1668715930582,
"content": {
"code": 0,
"msg": "SUBS command succeeded"
}
}
]
}
{
"data": [
{
"service": "LEVELONE_EQUITIES",
"timestamp": 1668715930585,
"command": "SUBS",
"content": [
{
"1": 149.81,
"2": 149.82,
"3": 149.811,
"4": 4,
"5": 2,
"6": "Q",
"7": "P",
"8": 56049058,
"9": 300,
"10": 151.48,
"11": 146.15,
"12": " ",
"13": 142.41,
"14": "Q",
"15": false,
"16": "APPLE INC",
"17": "D",
"18": 146.43,
"19": 7.401,
"20": 182.94,
"21": 129.04,
"22": 0.04062,
"23": 0,
"24": 0,
"25": 0,
"26": "NASDAQ",
"27": "",
"28": true,
"29": true,
"30": 149.811,
"31": 300,
"32": 7.401,
"33": "Normal",
"34": 149.811,
"35": 1668715930570,
"36": 1668715930345,
"37": 1668715930345,
"38": 1668715930570,
"39": 1668715930522,
"40": "XNAS",
"41": "ARCX",
"42": "XADF",
"43": 5.19696651,
"44": 5.19696651,
"45": 7.401,
"46": 5.19696651,
"key": "AAPL",
"delayed": false
}
]
}
]
}
4. Response Codes
| Code | Name | Description | Connection Severed | Error Notes |
|---|---|---|---|---|
| 0 | SUCCESS | The request was successful | No | n/a - success |
| 3 | LOGIN_DENIED | The user login has been denied | Yes | Client should reconnect and re-login with new token. Client to determine if failed logins are expected. |
| 9 | UNKNOWN_FAILURE | Error of last-resort when no specific error was caught | TBD | Should be investigated by Trader API team. Please contact TraderAPI@Schwab.com if you see this with the `schwabClientCorrelId` of subscription. |
| 11 | SERVICE_NOT_AVAILABLE | The service is not available | No | Should be investigated by Trader API team. Please contact TraderAPI@Schwab.com if you see this with the `schwabClientCorrelId` of subscription. Either client is requesting an unsupported service or the service is not running from the source. |
| 12 | CLOSE_CONNECTION | You've reached the maximum number of connections allowed. | Yes | Client to determine if max connections are expected and proper response to customer. A limit of 1 Streamer connection at any given time from a given user is available. |
| 19 | REACHED_SYMBOL_LIMIT | Subscribe or Add command has reached a total subscription symbol limit | No | Client to determine if symbol limit is expected and proper response to customer. |
| 20 | STREAM_CONN_NOT_FOUND | No connection found for user or new session but no login request | TBD |
Server cannot find the connection based on the provided SchwabClientCustomerId & SchwabClientCorrelId in the request.Should be investigated by Trader API team. Please contact TraderAPI@Schwab.com if you see this with the `schwabClientCorrelId` of subscription.
|
| 21 | BAD_COMMAND_FORMAT | Command fails to match specification | No | Client should investigate why a command is not formatted properly |
| 22 | FAILED_COMMAND_SUBS | Subscribe command could not be completed successfully | No |
Should be investigated by Trader API team. Please contact TraderAPI@Schwab.com if you see this with the `schwabClientCorrelId` of subscription.
|
| 23 | FAILED_COMMAND_UNSUBS | Unsubscribe command could not be completed successfully | ||
| 24 | FAILED_COMMAND_ADD | Add command could not be completed successfully | ||
| 25 | FAILED_COMMAND_VIEW | View command could not be completed successfully | ||
| 26 | SUCCEEDED_COMMAND_SUBS | Subscribe command completed successfully | No | n/a - success |
| 27 | SUCCEEDED_COMMAND_UNSUBS | Unsubscribe command completed successfully | ||
| 28 | SUCCEEDED_COMMAND_ADD | Add command completed successfully | ||
| 29 | SUCCEEDED_COMMAND_VIEW | View command completed successfully | ||
| 30 | STOP_STREAMING | Signal that streaming has been terminated due to administrator action, inactivity, or slowness | Yes |
See message provided for details.
|
5. Delivery Types
| Delivery Types | Description |
|---|---|
| All Sequence | All data is streamed to the client and includes a sequence number. Data is not conflated by the streamer although the underlying source of the data may conflate. |
| Change | Only fields that clients are interested in, and have changed, are streamed to the client. Data is conflated by the streamer. |
| Whole | Data is streamed as a whole unit to the client, in throttled mode. |
| All Sequence | All data is streamed to the client and includes a sequence number. Data is not conflated by the streamer although the underlying source of the data may conflate. |
1. Login Request
| Delivery Types | Description | Type | Length | Description |
|---|---|---|---|---|
| service | String | Variable | ADMIN | |
| command | String | Variable | LOGIN | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | Authorization | String | Variable | Access token as found from POST Token endpoint. |
| SchwabClientChannel | String | 2 | Identifies the channel as found through the GET User Preferences endpoint. | |
| SchwabClientFunctionId | String | 5 |
Identifies the page or source in the channel where quote is being called from (5 alphanumeric).
Found through the GET User Preferences endpoint. |
Streamer LOGIN Request Example:
{
"requests": [
{
"requestid": "1",
"service": "ADMIN",
"command": "LOGIN",
"SchwabClientCustomerId": "Someone",
"SchwabClientCorrelId": "5be0b7e7-5b8b-4fd3-9bed-7f49106cfe96",
"parameters": {
"Authorization": "Access Token",
"SchwabClientChannel": "N9",
"SchwabClientFunctionId": "APIAPP"
}
}
]
}
2. Login Response
| Type | Request | Name | Type | Description |
|---|---|---|---|---|
| response | service | ADMIN | ||
| requestid | Unique request ID number | |||
| command | LOGIN | |||
| SchwabClientCorrelId | Correlation ID string passed by client | |||
| timestamp | Milliseconds since epoch | |||
| content | code | Integer | 0 = Success, 3 = Login denied | |
| msg | String |
server=hostname-instance (for troubleshooting purposes)
status=PN (Non-Paying Pro) NP (Non-Pro) PP (Paying-Pro) if no entitlements, client will get nfl/delayed quotes error message if there's a login issue |
Streamer LOGIN Response Examples:
Login Successful
{
"response": [
{
"service": "ADMIN",
"command": "LOGIN",
"requestid": "1",
"SchwabClientCorrelId": "5be0b7e7-5b8b-4fd3-9bed-7f49106cfe96",
"timestamp": 1669828276886,
"content": {
"code": 0,
"msg": "server=s0166bdv-1;status=PN"
}
}
]
}
Login Denied
{
"response": [
{
"service": "ADMIN",
"command": "LOGIN",
"requestid": "1",
"SchwabClientCorrelId": "5be0b7e7-5b8b-4fd3-9bed-7f49106cfe96",
"timestamp": 1669828982588,
"content": {
"code": 3,
"msg": "Login Denied.: token is invalid or has expired."
}
}
]
}
3. Logout request
| Streamer Contract name | Type | Length | Description |
|---|---|---|---|
| service | String | Variable | ADMIN |
| command | String | Variable | LOGOUT |
| requestid | Integer | Variable | Unique number that will identify this request. |
| SchwabClientCustomerId | String | Variable |
Identifies the page or source in the channel where quote is being called from (5 alphanumeric).
Found through the GET User Preferences endpoint. |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. |
| parameters | String | Variable | Can leave empty |
4. Logout response
| Type | Request | Name | Type | Description |
|---|---|---|---|---|
| response | service | ADMIN | ||
| requestid | Unique request ID number | |||
| command | LOGIN | |||
| SchwabClientCorrelId | Correlation ID string passed by client | |||
| timestamp | Milliseconds since epoch | |||
| content | code | Integer | 0 = Success, 3 = Login denied | |
| msg | String | SUCCESS, FAILURE |
Streamer Logout Response Examples:
{
"response": [
{
"service": "ADMIN",
"command": "LOGOUT",
"requestid": "0",
"SchwabClientCorrelId": "5be0b7e7-5b8b-4fd3-9bed-7f49106cfe95",
"timestamp": 1669830137089,
"content": {
"code": 0,
"msg": "SUCCESS"
}
}
]
}
1. LEVELONE_EQUITIES
Level One Equities Request
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | LEVELONE_EQUITIES | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Schwab-standard symbols in uppercase and separated by commas
e.g. AAPL,TSLA,IBM |
| fields | String | Variable | Please see the LEVELONE_EQUITIES Field Definition table below |
LEVELONE_EQUITIES Request Example:
{
"requests": [
{
"service": "LEVELONE_EQUITIES",
"requestid": 1,
"command": "SUBS",
"SchwabClientCustomerId": "Someone",
"SchwabClientCorrelId": "29bdf6d-b9d0-46dd-8786-424e1577bd",
"parameters": {
"keys": "SCHW,AAPL,SPY",
"fields": "0,1,2,3,4,5,8,10 "
}
}
]
}
Response Field Definitions
Outside of fields that can be subscribed to, Streamer also returns initial data that indicates whether the data is real time or NFL (delayed).
| Field Name | Type | Field Description | Notes, Examples Source |
|---|---|---|---|
| key | String | Usually this is the symbol | AAPL |
| delayed | boolean | Whether data is from the SIP or NFL |
- false : data is from a SIP
SIP stands for Securities Information Processor. Often considered the example for market data around the world, a SIP will collect trade and quote data from multiple exchanges and consolidate these sources into a single source of information. - true : data is from an NFL source NFL stands for Non-Fee Liable. This either means the result is returning delayed data (typically options, futures and futures options) or the result is returning real-time data from a subset of exchanges and therefore does not contain all markets in the National Plan (typically equity data). Delayed quotes do not represent the most recent last or bid/ask; real-time quotes from the subset of exchanges may not contain the most recent last or bid/ask. |
| assetMainType | String | Asset Type | BOND, EQUITY, ETF, EXTENDED, FOREX, FUTURE, FUTURE_OPTION, FUNDAMENTAL, INDEX, INDICATOR, MUTUAL_FUND, OPTION, UNKNOWN |
| assetSubType | String | Asset sub type | ADR, CEF, COE, ETF, ETN, GDR, OEF, PRF, RGT, UIT, WAR |
| cusip | String | 9 digits CUSIP | CUSIP number for the instrument, such as 594918104 |
LEVELONE_EQUITIES Response Example:
{
"data": [
{
"service": "LEVELONE_EQUITIES",
"timestamp": 1714949592301,
"command": "SUBS",
"content": [
{
"key": "SCHW",
"delayed": false,
"assetMainType": "EQUITY",
"assetSubType": "COE",
"cusip": "808513105",
"1": 76.08,
"2": 76.49,
"3": 76.44,
"4": 3,
"5": 1,
"8": 5414735,
"10": 76.47
},
{
"key": "AAPL",
"delayed": false,
"assetMainType": "EQUITY",
"assetSubType": "COE",
"cusip": "037833100",
"1": 183.75,
"2": 183.8,
"3": 183.8,
"4": 1,
"5": 2,
"8": 163224109,
"10": 187
},
{
"key": "SPY",
"delayed": false,
"assetMainType": "EQUITY",
"assetSubType": "ETF",
"cusip": "78462F103",
"1": 512.3,
"2": 512.32,
"3": 511.29,
"4": 8,
"5": 1,
"8": 72756709,
"10": 512.55
}
]
}
]
}
| Fields | Field Name | Type | Field Description | Notes, Examples Source | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Symbol | String | Ticker symbol in upper case. | |||||||||||||||||||||||||||||||
| 1 | Bid Price | double | Current Bid Price | |||||||||||||||||||||||||||||||
| 2 | Ask Price | double | Current Ask Price | |||||||||||||||||||||||||||||||
| 3 | Last Price | double | Price at which the last trade was matched | |||||||||||||||||||||||||||||||
| 4 | Bid Size | int | Number of shares for bid | Units are "lots" (typically 100 shares per lot)Note for NFL data this field can be 0 with a non-zero bid price which representing a bid size of less than 100 shares. | ||||||||||||||||||||||||||||||
| 5 | Ask Size | int | Number of shares for ask | See bid size notes. | ||||||||||||||||||||||||||||||
| 6 | Ask ID | char | Exchange with the ask | |||||||||||||||||||||||||||||||
| 7 | Bid ID | char | Exchange with the bid | |||||||||||||||||||||||||||||||
| 8 | Total Volume | long | Aggregated shares traded throughout the day, including pre/post market hours. | Volume is set to zero at 7:28am ET. | ||||||||||||||||||||||||||||||
| 9 | Last Size | long | Number of shares traded with last trade | Units are shares | ||||||||||||||||||||||||||||||
| 10 | High Price | double | Day's high trade price |
According to industry standard, only regular session trades set the High and Low
If a stock does not trade in the regular session, high and low will be zero. High/low reset to ZERO at 3:30am ET |
||||||||||||||||||||||||||||||
| 11 | Low Price | double | Day's low trade price | See High Price notes | ||||||||||||||||||||||||||||||
| 12 | Close Price | double | Previous day's closing price | Closing prices are updated from the DB at 3:30 AM ET. | ||||||||||||||||||||||||||||||
| 13 | Exchange ID | char | Primary "listing" Exchange |
As long as the symbol is valid, this data is always present
|
||||||||||||||||||||||||||||||
| 14 | Marginable | boolean | Stock approved by the Federal Reserve and an investor's broker as being eligible for providing collateral for margin debt. | |||||||||||||||||||||||||||||||
| 15 | Description | String | A company, index or fund name | Once per day descriptions are loaded from the database at 7:29:50 AM ET. | ||||||||||||||||||||||||||||||
| 16 | Last ID | char | Exchange where last trade was executed | |||||||||||||||||||||||||||||||
| 17 | Open Price | double |
Day's Open Price According to industry standard, only regular session trades set the open.
If a stock does not trade during the regular session, then the open price is 0. In the pre-market session, open is blank because pre-market session trades do not set the open. Open is set to ZERO at 3:30am ET. |
|||||||||||||||||||||||||||||||
| 18 | Net Change | double |
LastPrice - ClosePrice
If close is zero, change will be zero |
|||||||||||||||||||||||||||||||
| 19 | 52 Week High | double | Higest price traded in the past 12 months, or 52 weeks | Calculated by merging intraday high (from fh) and 52-week high (from db) | ||||||||||||||||||||||||||||||
| 20 | 52 Week Low | double | Lowest price traded in the past 12 months, or 52 weeks | Calculated by merging intraday low (from fh) and 52-week low (from db) | ||||||||||||||||||||||||||||||
| 21 | PE Ratio | double |
Price-to-earnings ratio.
The P/E equals the price of a share of stock, divided by the company's earnings-per-share. |
Note that the "price of a share of stock" in the definition does update during the day so this field has the potential to stream. However, the current implementation uses the closing price and therefore does not stream throughout the day. | ||||||||||||||||||||||||||||||
| 22 | Annual Dividend Amount | double | Annual Dividend Amount | |||||||||||||||||||||||||||||||
| 23 | Dividend Yield | double | Dividend Yield | |||||||||||||||||||||||||||||||
| 24 | NAV | double | Mutual Fund Net Asset Value | Load various times after market close | ||||||||||||||||||||||||||||||
| 25 | Exchange Name | String | Display name of exchange | |||||||||||||||||||||||||||||||
| 26 | Dividend Date | String | ||||||||||||||||||||||||||||||||
| 27 | Regular Market Quote | boolean | Is last quote a regular quote | |||||||||||||||||||||||||||||||
| 28 | Regular Market Trade | boolean | Is last trade a regular trade | |||||||||||||||||||||||||||||||
| 29 | Regular Market Last Price | double | Only records regular trade | |||||||||||||||||||||||||||||||
| 30 | Regular Market Last Size | integer | Currently realize/100, only records regular trade | |||||||||||||||||||||||||||||||
| 31 | Regular Market Net Change | double | RegularMarketLastPrice - ClosePrice | |||||||||||||||||||||||||||||||
| 32 | Security Status | String | Indicates a symbols current trading status, Normal, Halted, Closed | |||||||||||||||||||||||||||||||
| 33 | Mark Price | double | Mark Price | |||||||||||||||||||||||||||||||
| 34 | Quote Time in Long | Long | Last time a bid or ask updated in milliseconds since Epoch | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | ||||||||||||||||||||||||||||||
| 35 | Trade Time in Long | Long | Last trade time in milliseconds since Epoch | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | ||||||||||||||||||||||||||||||
| 36 | Regular Market Trade Time in Long | Long | Regular market trade time in milliseconds since Epoch | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | ||||||||||||||||||||||||||||||
| 37 | Bid Time | long | Last bid time in milliseconds since Epoch | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | ||||||||||||||||||||||||||||||
| 38 | Ask Time | long | Last ask time in milliseconds since Epoch | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | ||||||||||||||||||||||||||||||
| 39 | Ask MIC ID | String | 4-chars Market Identifier Code | |||||||||||||||||||||||||||||||
| 40 | Bid MIC ID | String | 4-chars Market Identifier Code | |||||||||||||||||||||||||||||||
| 41 | Last MIC ID | String | 4-chars Market Identifier Code | |||||||||||||||||||||||||||||||
| 42 | Net Percent Change | double | Net Percentage Change | NetChange / ClosePrice * 100 | ||||||||||||||||||||||||||||||
| 43 | Regular Market Percent Change | double | Regular market hours percentage change | RegularMarketNetChange / ClosePrice * 100 | ||||||||||||||||||||||||||||||
| 44 | Mark Price Net Change | double | Mark price net change | 7.97 | ||||||||||||||||||||||||||||||
| 45 | Mark Price Percent Change | double | Mark price percentage change | 4.2358 | ||||||||||||||||||||||||||||||
| 46 | Hard to Borrow Quantity | integer |
-1 = NULL
>= 0 is valid quantity |
|||||||||||||||||||||||||||||||
| 47 | Hard To Borrow Rate | double |
null = NULL
valid range = -99,999.999 to +99,999.999 |
|||||||||||||||||||||||||||||||
| 48 | Hard to Borrow | integer |
-1 = NULL
1 = true 0 = false |
|||||||||||||||||||||||||||||||
| 49 | shortable | integer |
-1 = NULL
1 = true 0 = false |
|||||||||||||||||||||||||||||||
| 50 | Post-Market Net Change | double | Change in price since the end of the regular session (typically 4:00pm) | PostMarketLastPrice - RegularMarketLastPrice | ||||||||||||||||||||||||||||||
| 51 | Post-Market Percent Change | double | Percent Change in price since the end of the regular session (typically 4:00pm) | PostMarketNetChange / RegularMarketLastPrice * 100 |
2. LEVELONE_OPTIONS
Please refer to LEVELONE_EQUITIES for REQUESTS and RESPONSE examples. Replace LEVELONE_EQUITIES with LEVELONE_OPTIONS.
Level One Options Request
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | LEVELONE_OPTIONS | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Options symbols in uppercase and separated by commas
|
| fields | String | Variable | Please see the LEVELONE_OPTIONS Field Definition table below |
Response Field Definitions
| Streamer Contract name | Type | Length | Description | |||
|---|---|---|---|---|---|---|
| 0 | Symbol | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Description | String | A company, index or fund name | Yes | Yes | Descriptions are loaded from the database daily at 3:30 am ET. |
| 2 | Bid Price | double | Current Bid Price | Yes | No | |
| 3 | Ask Price | double | Current Ask Price | Yes | No | |
| 4 | Last Price | double | Price at which the last trade was matched | Yes | No | |
| 5 | High Price | double | Day's high trade price | Yes | No |
According to industry standard, only regular session trades set the High and Low.
If a stock does not trade in the regular session, high and low will be zero. High/low reset to zero at 3:30am ET |
| 6 | Low Price | double | Day's low trade price | Yes | No | See High Price notes |
| 7 | Close Price | double | Previous day's closing price | No | No | Closing prices are updated from the DB at 7:29AM ET. |
| 8 | Total Volume | long | Aggregated contracts traded throughout the day, including pre/post market hours. | Yes | No | Volume is set to zero at 3:30am ET. |
| 9 | Open Interest | int | Yes | No | ||
| 10 | Volatility | double | Option Risk/Volatility Measurement/Implied | Yes | No | Volatility is reset to 0 at 3:30am ET |
| 11 | Money Intrinsic Value | double | The value an option would have if it were exercised today. Basically, the intrinsic value is the amount by which the strike price of an option is profitable or in-the-money as compared to the underlying stock's price in the market. | Yes | No | In-the-money is positive, out-of-the money is negative. |
| 12 | Expiration Year | int | ||||
| 13 | Multiplier | double | ||||
| 14 | Digits | int | Number of decimal places | |||
| 15 | Open Price | double |
Day's Open Price Yes No According to industry standard, only regular session trades set the open
If a stock does not trade during the regular session, then the open price is 0. In the pre-market session, open is blank because pre-market session trades do not set the open. Open is set to ZERO at 7:28 ET. |
|||
| 16 | Bid Size | int | Number of contracts for bid | Yes | No | From FH |
| 17 | Ask Size | int | Number of contracts for ask | Yes | No | From FH |
| 18 | Last Size | int | Number of contracts traded with last trade | Yes | No | Size in 100's |
| 19 | Net Change | double | Current Last-Prev Close | Yes | No |
If(close>0)
change = last – close Else change=0 |
| 20 | Strike Price | double | Contract strike price | Yes | No | |
| 21 | Contract Type | char | ||||
| 22 | Underlying | String | ||||
| 23 | Expiration Month | int< | ||||
| 24 | Deliverables | String | ||||
| 25 | Time Value | double | ||||
| 26 | Expiration Day | int | ||||
| 27 | Days to Expiration | int | ||||
| 28 | Delta | double | ||||
| 29 | Gamma | double | ||||
| 30 | Theta | double | ||||
| 31 | Vega | double | ||||
| 32 | Rho | double | ||||
| 33 | Security Status | String | Yes | Yes | Indicates a symbol's current trading status: Normal, Halted, Closed | |
| 34 | Theoretical Option Value | double | ||||
| 35 | Underlying Price | double | ||||
| 36 | UV Expiration Type | char | ||||
| 37 | Mark Price | double | Mark Price | Yes | Yes | |
| 38 | Quote Time in Long | long | Last quote time in milliseconds since Epoch | Yes | Yes The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. | |
| 39 | Trade Time in Long | long | Last trade time in milliseconds since Epoch | Yes | Yes | The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. |
| 40 | Exchange | char | Exchange character | Yes | Yes | o |
| 41 | Exchange Name | String | Display name of exchange | Yes | Yes | |
| 42 | Last Trading Day | long | Last Trading Day | Yes | Yes | |
| 43 | Settlement Type | char | Settlement type character | Yes | Yes | |
| 44 | Net Percent Change | double | Net Percentage Change | Yes | Yes | 4.2358 |
| 45 | Mark Price Net Change | double | Mark price net change | Yes | Yes | 7.97 |
| 46 | Mark Price Percent Change | double | Mark price percentage change | Yes | Yes | 4.2358 |
| 47 | Implied Yield | double | ||||
| 48 | isPennyPilot | boolean | ||||
| 49 | Option Root | String | ||||
| 50 | 52 Week High | double | ||||
| 51 | 52 Week Low | double | ||||
| 52 | Indicative Ask Price | double | Only valid for index options (0 for all other options) | |||
| 53 | Indicative Bid Price | double | Only valid for index options (0 for all other options) | |||
| 54 | Indicative Quote Time | long | The latest time the indicative bid/ask prices updated in milliseconds since Epoch |
Only valid for index options (0 for all other options)
The difference, measured in milliseconds, between the time an event occurs and midnight, January 1, 1970 UTC. |
||
| 55 | Exercise Type | char |
3. LEVELONE_FUTURES
Please refer to LEVELONE_EQUITIES for REQUESTS and RESPONSE examples. Replace LEVELONE_EQUITIES with LEVELONE_FUTURES.
Level One Futures Fields for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | LEVELONE_FUTURES | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Futures symbols in upper case and separated by commas.
|
| fields | String | Variable | Please see the LEVELONE_FUTURES Field Definition table below |
Response Field Definitions
| Field | Field Name | Type | Field Description | Update Regular Hours | Update AM/PM Hours | Notes, Examples Source |
|---|---|---|---|---|---|---|
| 0 | Symbol | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Bid Price | double | Current Best Bid Price | Yes | Yes | |
| 2 | Ask Price | double | Current Best Ask Price | Yes | Yes | |
| 3 | Last Price | double | Price at which the last trade was matched | Yes | Yes | |
| 4 | Bid Size | long | Number of contracts for bid | Yes | Yes | |
| 5 | Ask Size | long | Number of contracts for ask | Yes | Yes | |
| 6 | Bid ID | char | Exchange with the best bid | Yes | Yes Currently "?" for unknown as all quotes are CME | |
| 7 | Ask ID | char | Exchange with the best ask | Yes | Yes | Currently "?" for unknown as all quotes are CME |
| 8 | Total Volume | long | Aggregated contracts traded throughout the day, including pre/post market hours. | Yes | Yes | |
| 9 | Last Size | long | Number of contracts traded with last trade | Yes | Yes | |
| 10 | Quote Time | long | Time of the last quote in milliseconds since epoch | Yes | Yes | |
| 11 | Trade Time | long | Time of the last trade in milliseconds since epoch | Yes | Yes | |
| 12 | High Price | double | Day's high trade price | Yes | Yes | |
| 13 | Low Price | double | Day's low trade price | Yes | Yes | |
| 14 | Close Price | double | Previous day's closing price | N/A | N/A | |
| 15 | Exchange ID | char | Primary "listing" Exchange | N/A | N/A | Currently "?" for unknown as all quotes are CME |
| 16 | Description | String | Description of the product | N/A | N/A | |
| 17 | Last ID | char | Exchange where last trade was executed | Yes | Yes | |
| 18 | Open Price | double | Day's Open Price | Yes | Yes | |
| 19 | Net Change | double | Current Last-Prev Close | Yes | Yes |
If(close>0)
change = last – close else change=0 |
| 20 | Future Percent Change | double | Current percent change | Yes | Yes |
If(close>0)
pctChange = (last – close)/close else pctChange=0 |
| 21 | Exchange Name | String | Name of exchange | |||
| 22 | Security Status | String | Trading status of the symbol | Yes | Yes | Indicates a symbols current trading status, Normal, Halted, Closed |
| 23 | Open Interest | int | The total number of futures contracts that are not closed or delivered on a particular day | Yes | Yes | |
| 24 | Mark | double | Mark-to-Market value is calculated daily using current prices to determine profit/loss | Yes | Yes |
If lastprice is within spread,
value = lastprice else value=(bid+ask)/2 |
| 25 | Tick | double | Minimum price movement | N/A | N/A | Minimum price increment of contract |
| 26 | Tick Amount | double | Minimum amount that the price of the market can change | N/A | N/A | Tick * multiplier field |
| 27 | Product | String | Futures product | N/A | N/A | From Database |
| 28 | Future Price Format | String |
Display in fraction or decimal format. N/A N/A Set from FSP Config
format is \< numerator decimals to display\>, \< implied denominator> where D=decimal format, no fractional display Equity futures will be "D,D" to indicate pure decimal. Fixed income futures are fractional, typically "3,32". Below is an example for "3,32": price=101.8203125 =101 + 0.8203125 (split into whole and fractional) =101 + 26.25/32 (Multiply fractional by implied denomiator) =101 + 26.2/32 (round to numerator decimals to display) =101'262 (display in fractional format) |
|||
| 29 | Future Trading Hours | String | Trading hours | N/A | N/A |
days: 0 = monday-friday, 1 = sunday,
7 = Saturday 0 = [-2000,1700] ==> open, close 1= [-1530,-1630,-1700,1515] ==> open, close, open, close 0 = [-1800,1700,d,-1700,1900] ==> open, close, DST-flag, open, close |
| 30 | Future Is Tradable | boolean | Flag to indicate if this future contract is tradable | N/A | N/A | |
| 31 | Future Multiplier | double | Point value | N/A | N/A | |
| 32 | Future Is Active | boolean | Indicates if this contract is active | Yes | Yes | |
| 33 | Future Settlement Price | double | Closing price | Yes | Yes | |
| 34 | Future Active Symbol | String | Symbol of the active contract | N/A | N/A | |
| 35 | Future Expiration Date | long | Expiration date of this contract | N/A | N/A | Milliseconds since epoch |
| 36 | Expiration Style | String | ||||
| 37 | Ask Time | long | Time of the last ask-side quote in milliseconds since epoch | Yes | Yes | |
| 38 | Bid Time | long | Time of the last bid-side quote in milliseconds since epoch | Yes | Yes | |
| 39 | Quoted In Session | boolean | Indicates if this contract has quoted during the active session | |||
| 40 | Settlement Date | long | Expiration date of this contract | N/A | N/A | Milliseconds since epoch |
For more examples on Futures Price format, see:
https://www.cmegroup.com/confluence/display/EPICSANDBOX/Fractional+Pricing+-+Display+Examples
If the DST-flag is present for Futures Trading Hours (field 29), please see the following hours for DST days:
https://www.cmegroup.com/confluence/display/EPICSANDBOX/Fractional+Pricing+-+Display+Examples
4. LEVELONE_FUTURES_OPTIONS
Please refer to LEVELONE_EQUITIES for REQUESTS and RESPONSE examples. Replace LEVELONE_EQUITIES with LEVELONE_FUTURES_OPTIONS.
Level One Futures Options Fields for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | LEVELONE_FUTURES_OPTIONS | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Symbols in upper case and separated by commas.
|
| fields | String | Variable | Please see the LEVELONE_FUTURES_OPTIONS Field Definition table below |
Response Field Definitions
| Fields | Field Name | Type | Field Description | Update Regular Hours | Update AM/PM Hours | Notes, Examples Source |
|---|---|---|---|---|---|---|
| 0 | Symbol | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Bid Price | double | Current Bid Price | Yes | Yes | |
| 2 | Ask Price | double | Current Ask Price | Yes | Yes | |
| 3 | Last Price | double | Price at which the last trade was matched | Yes | Yes | |
| 4 | Bid Size | long | Number of contracts for bid | Yes | Yes | |
| 5 | Ask Size | long | Number of contracts for ask | Yes | Yes | |
| 6 | Bid ID | char | Exchange with the bid | Yes | Yes | Currently "?" for unknown as all quotes are CME |
| 7 | Ask ID | char | Exchange with the ask | Yes | Yes | Currently "?" for unknown as all quotes are CME |
| 8 | Total Volume | long | Aggregated contracts traded throughout the day, including pre/post market hours. | Yes | Yes | |
| 9 | Last Size | long | Number of contracts traded with last trade | Yes | Yes | |
| 10 | Quote Time | long | Trade time of the last quote in milliseconds since epoch | Yes | Yes | |
| 11 | Trade Time | long | Trade time of the last trade in milliseconds since epoch | Yes | Yes | |
| 12 | High Price | double | Day's high trade price | Yes | Yes- | |
| 13 | Low Price | double | Day's low trade price | Yes | Yes | |
| 14 | Close Price | double | Previous day's closing price | N/A | N/A | |
| 15 | Last ID | char | Exchange where last trade was executed | Yes | Yes | Currently "?" for unknown as all quotes are CME |
| 16 | Description | String | Description of the product | N/A | N/A | |
| 17 | Open Price | double | Day's Open Price | Yes | Yes | |
| 18 | Open Interest | double | ||||
| 19 | Mark | double | Mark-to-Market value is calculated daily using current prices to determine profit/loss | Yes | Yes |
If lastprice is within spread,
value = lastprice else value=(bid+ask)/2 |
| 20 | Tick | double | Minimum price movement | N/A | N/A | Minimum price increment of contract |
| 21 | Tick Amount | double | Minimum amount that the price of the market can change | N/A | N/A | Tick * multiplier field |
| 22 | Future Multiplier | double | Point value | N/A | N/A | |
| 23 | Future Settlement Price | double | Closing price | Yes | Yes | |
| 24 | Underlying Symbol | String | Underlying symbol | N/A | N/A | |
| 25 | Strike Price | double | Strike Price | |||
| 26 | Future Expiration Date | long | Expiration date of this contract | N/A | N/A | Milliseconds since epoch |
| 27 | Expiration Style | String | ||||
| 28 | Contract Type | Char | ||||
| 29 | Security Status | String | Yes | Yes | Indicates a symbol's current trading status: Normal, Halted, Closed | |
| 30 | Exchange | char | Exchange character | Yes | Yes | |
| 31 | Exchange Name | String | Display name of exchange | Yes | Yes |
5. LEVELONE_FOREX
Please refer to LEVELONE_EQUITIES for REQUESTS and RESPONSE examples. Replace LEVELONE_EQUITIES with LEVELONE_FOREX.
Level One Forex Request for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | LEVELONE_FOREX | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Symbols in upper case and separated by commas.
e.g.: EUR/USD,USD/JPY,AUD/CAD |
| fields | String | Variable | Please see the LEVELONE_FOREX Field Definition table below |
Response Field Definitions
| Fields | Field Name | Type | Field Description | Update Regular Hours | Update AM/PM Hours | Notes, Examples Source |
|---|---|---|---|---|---|---|
| 0 | Symbol | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Bid Price | double | Current Bid Price | Yes | Yes | |
| 2 | Ask Price | double | Current Ask Price | Yes | Yes | |
| 3 | Last Price d | ouble | Price at which the last trade was matched | Yes | Yes | |
| 4 | Bid Size | long | Number of currency pairs for bid | Yes | Yes | |
| 5 | Ask Size | long | Number of currency pairs for ask | Yes | Yes | |
| 6 | Total Volume | long | Aggregated currency pairs traded throughout the day, including pre/post market hours. | Yes | Yes | |
| 7 | Last Size | long | Number of currency pairs traded with last trade | Yes | Yes | |
| 8 | Quote Time | long | Trade time of the last quote in milliseconds since epoch | Yes | Yes | |
| 9 | Trade Time | long | Trade time of the last trade in milliseconds since epoch | Yes | Yes | |
| 10 | High Price | double | Day's high trade price | Yes | Yes | |
| 11 | Low Price d | ouble | Day's low trade price | Yes | Yes | |
| 12 | Close Price | double | Previous day's closing price | N/A | N/A | |
| 13 | Exchange | char | ||||
| 14 | Description | String | Description of the product | N/A | N/A | |
| 15 | Open Price | double | Day's Open Price | Yes | Yes | |
| 16 | Net Change | double | Current Last-Prev Close | Yes | Yes |
If(close>0)
change = last – close else change=0 |
| 17 | Percent Change | double | Current percent change | Yes | Yes |
If(close>0)
pctChange = (last – close)/close else pctChange=0 |
| 18 | Exchange Name | String | Name of exchange | N/A | N/A | |
| 19 | Digits | Int | Valid decimal points | N/A | N/A | |
| 20 | Security Status | String | Trading status of the symbol | Yes | Yes | Indicates a symbols current trading status, Normal, Halted, Closed |
| 21 | Tick | double | Minimum price movement | N/A | N/A | Minimum price increment for pair |
| 22 | Tick Amount | double | Minimum amount that the price of the market can change | N/A | N/A | Tick * multiplier field from database |
| 23 | Product | String | Product name | N/A | N/A | |
| 24 | Trading Hours | String | Trading hours | N/A | N/A | |
| 25 | Is Tradable | boolean | Flag to indicate if this forex is tradable | N/A | N/A | |
| 26 | Market Maker | String | ||||
| 27 | 52 Week High | double | Higest price traded in the past 12 months, or 52 weeks | Yes | Yes | |
| 28 | 52 Week Low | double | Lowest price traded in the past 12 months, or 52 weeks | Yes | Yes | |
| 29 | Mark | double | Mark-to-Market value is calculated daily using current prices to determine profit/loss | Yes | Yes |
1. Book Common
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | NYSE_BOOK, NASDAQ_BOOK, OPTIONS_BOOK | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | `schwabClientCustomerId` as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Symbols in upper case and separated by commas.
e.g.: AAPL,TSLA,IBM |
| fields | String | Variable | Please see the BOOK Field Definition table below |
Response field definitions
Book Fields for Streamer
| Fields | Field Name | Value | Type | Description |
|---|---|---|---|---|
| 0 | Symbol | Ticker symbol in upper case. | String | |
| 1 | Market Snapshot Time | Milliseconds since Epoch | long | Timestamp for the data |
| 2 | Bid Side Levels | Price Levels | Array | Bid side price levels |
| 3 | Ask Side Levels | Price Levels | Array | Ask side price levels |
Book Price Levels Sub-Field for Streamer
|
Price Levels
Field # |
Field Name | Type | Description |
|---|---|---|---|
| 0 | Price | double | Price for this level |
| 1 | Aggregate Size | int | Aggregate size for this price level |
| 2 | Market Maker Count | int | Number of Market Makers in this price level |
| 3 | Array of Market Makers | Array | Array of market maker sizes for this price level |
Book Market Makers Sub-Field for Streamer
|
Market Makers
Field # |
Field Name | Type | Description |
|---|---|---|---|
| 0 | Market Maker ID | String | Market Maker ID |
| 1 | Size | long | Size of the Market Maker for this price level |
| 2 | Quote Time | long | Quote time in milliseconds for this Market Maker's quote |
1. CHART_EQUITY
Chart Equity Request for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | CHART_EQUITY | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | 'schwabClientCustomerId' as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Equities symbols in upper case and separated by commas.
e.g.: AAPL,TSLA,IBM |
| fields | String | Variable | Please see the CHART_EQUITY Field Definition table below |
Response field definitions
| Fields | Field Name | Type | Field Description | Update Regular Hours | Update AM/PM Hours | Notes, Examples Source |
|---|---|---|---|---|---|---|
| 0 | key | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Open Price | double | Opening price for the minute | Yes | Yes | |
| 2 | High Price | double | Highest price for the minute | Yes | Yes | |
| 3 | Low Price | double | Chart's lowest price for the minute | Yes | Yes | |
| 4 | Close Price | double | Closing price for the minute | Yes | Yes | |
| 5 | Volume | double | Total volume for the minute | Yes | Yes | |
| 6 | Sequence | long | Identifies the candle minute | Yes | Yes | |
| 7 | Chart Time | long | Milliseconds since Epoch | Yes | Yes | |
| 8 | Chart Day | int |
2. CHART_FUTURES
Chart Futures Request for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | CHART_FUTURES | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | 'schwabClientCustomerId' as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Futures symbols in upper case and separated by commas
|
| fields | String | Variable | Please see the CHART_FUTURES Field Definition table below |
Field response definitions
| Fields | Field Name | Type | Field Description | Update Regular Hours | Update AM/PM Hours | Notes, Examples Source |
|---|---|---|---|---|---|---|
| 0 | key | String | Ticker symbol in upper case. | N/A | N/A | |
| 1 | Chart Time | long | Milliseconds since Epoch | Yes | Yes | |
| 2 | Open Price | double | Opening price for the minute | Yes | Yes | |
| 3 | High Price | double | Highest price for the minute | Yes | Yes | |
| 4 | Low Price | double | Chart's lowest price for the minute | Yes | Yes | |
| 5 | Close Price | double | Closing price for the minute | Yes | Yes | |
| 6 | Volume | double | Total volume for the minute | Yes | Yes |
1. Screener Common
Screener Request for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | SCREENER_EQUITY, SCREENER_OPTION | |
| command | String | Variable | SUBS, UNSUBS, ADD, VIEW | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | 'schwabClientCustomerId' as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable |
Symbols in upper case and separated by commas.
|
| fields | String | Variable | Please see the SCREENER Field Definition table below |
Response field definitions
| Index | Field | Type | Description | Values |
|---|---|---|---|---|
| 0 | symbol | String | The symbol used to look up either actives, gainers or losers | Subscribed or requested symbol |
| 1 | timestamp | long | Market snapshot timestamp in milliseconds since Epoch | 12345613123 |
| 2 | sortField | String | Field to sort on | VOLUME, TRADES, PERCENT_CHANGE_UP, PERCENT_CHANGE_DOWN, AVERAGE_PERCENT_VOLUME |
| 3 | frequency | Integer | Frequency of data to sort | 0, 1, 5, 10, 30 60 minutes (0 is for all day) |
| 4 | Items | Array | Refer to the field table below | |
| Field | Type | Description |
|---|---|---|
| description | String | Description of instrument |
| lastPrice | double | Last trade price (up to 2 decimal places) |
| marketShare | double | Market share percentage of instrument (up to 2 decimal places) |
| netChange | double | Net change value (up to 2 decimal places) |
| netPercentChange | double | Net percent change value (up to 4 decimal places) |
| symbol | String | Stock or Option symbol |
| totalVolume | long | Total volume for the day |
| trades | long | Number of trades for the frequency requested |
| volume | long | Volume for the frequency requested |
1. ACCT_ACTIVITY
Account Activity Request for Streamer
| Streamer Contract name | Type | Length | Description | |
|---|---|---|---|---|
| service | String | Variable | ACCOUNT_ACTIVITY | |
| command | String | Variable | SUBS, UNSUBS | |
| requestid | Integer | Variable | Unique number that will identify this request. | |
| SchwabClientCustomerId | String | Variable | 'schwabClientCustomerId' as found in GET User Preference endpoint | |
| SchwabClientCorrelId | String | Variable | Unique identifier value that is attached to requests and messages that allow reference to a particular transaction or event chain. | |
| parameters | keys | String | Variable | A client-provided string that streamer will populate updates with. Only first key is used if multiple are provided. |
| fields | String | Variable | "0" expected |
Example:
{
"requests": [
{
"service": "ACCT_ACTIVITY",
"requestid": "2",
"command": "SUBS",
"SchwabClientCustomerId": "Someone",
"SchwabClientCorrelId": "f308b89-19a7-2d18-4a0a-1c5e7120336",
"parameters": {
"keys": "Account Activity",
"fields": "0,1,2,3"
}
}
]
}
Response
| Fields | Field Name | Type | Value |
|---|---|---|---|
| "seq" | Sequence | Integer | This field identifies the message number. If client reconnects and receives the same seq number again, it can choose to ignore the duplicate. |
| "key" | Key | String | Passed back to the client from the request to identify a subscription this response belongs to. |
| 1 | Account | String | Account Number that the activity occurred on. |
| 2 | Message Type | String | Message Type that dictates the format of the Message Data field. |
| 3 | Message Data | String | The core data for the message. Either JSON-formatted data describing the update, NULL in some cases, or plain text in case of ERROR. |