Introduction
You can use our data services from the website through dowloadable links or in your own application by means of API requests.
Logged-in users can browse to dedicated pages, use visualization tools and download data.
For example you can visit the Instruments
page, choose an instrument and explore End-Of-Day, Intraday, Indicators or Options Chains data.
On the other hand you can build your own application and interact with our data services through API requests.
This documentation will help you explore our exposed endpoints and give you specific details about their usage.
We strive to make it as simple and legible as possible. Feel free to contact us should you experience any issue using it.
Global Specifications
API base url: https://tallacoptions.com/api
Additional segments and parameters are appended to the base url according to the topic of your request.
Parameters appear in curly braces. A table gives type, format and description details for each parameter.
When the request succeeds, a response message is returned with data in the content and additional information in the header.
The supported data formats include CSV, JSON, XML and BSON.
You can set the desired content type in the header when issuing requests.
Failed requests return error messages with specific details.
Examples are given throughout this documentation for illustrative purpose.
Logged-in users can take advantage of Try It Out sections for quick interactive tests.
Topics
Different topics are covered. Some of them are purely informational and don't require any authentication or authorization.
Others are subject to restrictions as they require authentication and access rights.
This documentation is organized topic-wise and will go through a list of topics that we deem relevant.
Authentication
You use our APIs by submitting requests to our exposed endpoints.
Some API requests need to include a security token for authentication purpose.
Registered users are assigned an API key they can use to generate these tokens.
Logged-in users can omit the authentication token or API key when they initiate a request from their browser.
Explore the Tokens topic to see how you can generate them and authenticate your requests.
Authorization
Access to our different data services is granted depending on your account profile. You have a set of basic data accesses attached to your account by default to let you explore our services. You can extend your data access rights depending on your needs. See the different plans for information about data access levels.
Availability
Data availability highly depends on the instrument and the type of data you are searching for. We update our database on a regular basis with new and past data. You can obtain extensive information from the instrument's details page. You can also refer to the Instruments section to see how to obtain the information through API requests.
Restrictions
In order to provide our users with quality services, we take action to prevent abuses of any kind. As such, restrictions about the number of requests allowed within a period of time may apply.
Community Support
You can use our GitHub Support Page to raise issues you may encounter and share your experience with other developers. Also feel free to suggest new endpoints if you don't find one that best meets your needs.
Introduction
You use security tokens to send requests to endpoints that require authentication.
Tokens are generated with your API key and are usable only once before they expire. By default you can generate a single 2-minute token per request.
Users with Premium or Full Access privilege can generate multiple 5-minute tokens per request.
Logged-in users don't need authentication tokens when they send requests from their browser.
Your API key is accessible from the Settings section of your Account.
For obvious security reasons, keep it secret and only use it with requests that are submitted server-side.
Change it if you feel that its secrecy has been compromised.
Generates a single token.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/tokens/generate/{apiKey}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
apiKey* | String | GUID | User's API key. Can be found in your account settings. |
Response
Returns a JSON object with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Key | String | GUID | The generated token. |
Issued | DateTime | ISO | The token's creation time. |
Expiry | DateTime | ISO | The token's expiry time. |
Errors
The following errors might arise:
Unauthenticated request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Maximum number of requests reached
{
"Status":"Forbidden",
"Message":"You've reached the maximum number of X requests per minute! Try again a bit later."
}
Missing or invalid API key
{
"Status":"Forbidden",
"Message":"Invalid API Key!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You generate a temporary token using your API key. The one we use in this example is only for illustration and is not functional. Replace it with your own API key.
https://www.tallacoptions.com/api/tokens/generate/7e7e6703-d9f1-4f14-936b-1184781d8003
Response
A JSON object with the aforementioned properties is returned. The token key can be used before it's expiry time in order to authenticate a subsequent request.
{
"Key":"848199a4-6ff9-4387-906e-3a2ba34a7a3a",
"Issued":"2019-06-29T01:34:19.0294764Z",
"Expiry":"2019-06-29T01:36:19.0294764Z"
}
Generates multiple tokens.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/tokens/generate/{nbTokens}/{apiKey}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
nbTokens | Integer | Integer | Number of tokens to be generated. |
apiKey* | String | GUID | User's API key. Can be found in your account settings. |
Response
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Key | String | GUID | The generated token. |
Issued | DateTime | ISO | The token's creation time. |
Expiry | DateTime | ISO | The token's expiry time. |
Errors
The following errors might arise:
Unauthenticated request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Maximum number of requests reached
{
"Status":"Forbidden",
"Message":"You've reached the maximum number of X requests per minute! Try again a bit later."
}
Missing or invalid API key
{
"Status":"Forbidden",
"Message":"Invalid API Key!"
}
Not Enough Privilege
{
"Status":"Forbidden",
"Message":"Your user privilege is not enough to use this endpoint."
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You generate temporary tokens using your API key. The one we use in this example is only for illustration and is not functional. Replace it with your own API key.
https://www.tallacoptions.com/api/tokens/generate/5/7e7e6703-d9f1-4f14-936b-1184781d8003
Response
Objects with the aforementioned properties are returned. Tokens can be used only once before they expire in order to authenticate subsequent requests.
[
{
"Key":"611a8428-34d3-40bd-ace3-3814d666069d",
"Issued":"2020-10-25T11:54:49.6066954Z",
"Expiry":"2020-10-25T11:59:49.6066954Z"
},
{
"Key":"88e7367e-7f4b-417e-b323-e0df939979a9",
"Issued":"2020-10-25T11:54:49.6066954Z",
"Expiry":"2020-10-25T11:59:49.6066954Z"
},
{
"Key":"6b4c10ea-d74a-4226-a952-6dbdbb95c0ec",
"Issued":"2020-10-25T11:54:49.6066954Z",
"Expiry":"2020-10-25T11:59:49.6066954Z"
},
{
"Key":"3918f0a7-31df-49bc-8363-90ca468f7014",
"Issued":"2020-10-25T11:54:49.6066954Z",
"Expiry":"2020-10-25T11:59:49.6066954Z"
},
{
"Key":"7e4032fb-d358-4f3e-86b3-7b95c148ea11",
"Issued":"2020-10-25T11:54:49.6066954Z",
"Expiry":"2020-10-25T11:59:49.6066954Z"
}
]
Introduction
We expose the following endpoints to provide extensive information about available instruments and instrument categories.
No authentication or authorization is needed for these endpoints.
Please note that it is crucial to know some details about an instrument in order to make successful data requests.
Returns detailed information about the specified instrument.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/instruments/{ticker}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Instrument's ticker symbol. |
Response
Returns an object with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Ticker | String | None | Instrument's ticker symbol. |
Description | String | None | Instrument's description. |
Category | String | None | Instrument's category. |
Fields | String | None | Available data fields. |
IntradayMinDate | DateTime | ISO | Minimum date for intraday data. |
IntradayMaxDate | DateTime | ISO | Maximum date for intraday data. |
EodMinDate | DateTime | ISO | Minimum date for End-Of-Day data. |
EodMaxDate | DateTime | ISO | Maximum date for End-Of-Day data. |
OptionMinDate | DateTime | ISO | Minimum date for options data. |
OptionMaxDate | DateTime | ISO | Maximum date for options data. |
Remarks | String | None | Any remarks on the instrument. |
Optionable | Boolean | true/false | Indicates if the instrument bears options. |
Errors
The following errors might arise:
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Not Found
{
"Status":"NotFound",
"Message":"No instrument found. Refer to the list of covered instruments."
}
Example
Request
You send a GET request to the following endpoint.
https://www.tallacoptions.com/api/instruments/aapl
Response
You get the matching instrument with detailed information. We assume that a JSON content type was specified.
{
"Ticker":"AAPL",
"Category":"Stock",
"Description":"Apple Inc.",
"Fields":"Last,Bid,Ask,Volume",
"Optionable":"true",
"EodMaxDate":"2020-03-04T00:00:00",
"EodMinDate":"1980-12-12T00:00:00",
"IntradayMaxDate":"2020-03-03T00:00:00",
"IntradayMinDate":"2017-04-03T00:00:00",
"OptionMaxDate":"2020-02-27T00:00:00",
"OptionMinDate":"2018-07-02T00:00:00",
"Remarks":""
}
Returns detailed information about all available instruments (including delisted ones).
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/instruments
Response
Returns a collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Ticker | String | None | Instrument's ticker symbol. |
Description | String | None | Instrument's description. |
Category | String | None | Instrument's category. |
Fields | String | None | Available data fields. |
IntradayMinDate | DateTime | ISO | Minimum date for intraday data. |
IntradayMaxDate | DateTime | ISO | Maximum date for intraday data. |
EodMinDate | DateTime | ISO | Minimum date for End-Of-Day data. |
EodMaxDate | DateTime | ISO | Maximum date for End-Of-Day data. |
OptionMinDate | DateTime | ISO | Minimum date for options data. |
OptionMaxDate | DateTime | ISO | Maximum date for options data. |
Remarks | String | None | Any remarks on the instrument. |
Optionable | Boolean | true/false | Indicates if the instrument bears options. |
Errors
The following errors might arise:
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request to the following endpoint.
https://www.tallacoptions.com/api/instruments
Response
You get a collection of all available instruments along with detailed information. We assume that a JSON content type was specified.
[
{
"Ticker":"AAPL",
"Category":"Stock",
"Description":"Apple Inc.",
"Fields":"Last,Bid,Ask,Volume",
"Optionable":"true",
"EodMaxDate":"2020-03-04T00:00:00",
"EodMinDate":"1980-12-12T00:00:00",
"IntradayMaxDate":"2020-03-03T00:00:00",
"IntradayMinDate":"2017-04-03T00:00:00",
"OptionMaxDate":"2020-02-27T00:00:00",
"OptionMinDate":"2018-07-02T00:00:00",
"Remarks":""
},
...
{
"Ticker":"ZTS",
"Category":"Stock",
"Description":"Zoetis Inc.",
"Fields":"Last,Bid,Ask,Volume",
"Optionable":"true",
"EodMaxDate":"2020-03-04T00:00:00",
"EodMinDate":"2013-02-01T00:00:00",
"IntradayMaxDate":"2020-03-03T00:00:00",
"IntradayMinDate":"2020-01-29T00:00:00",
"OptionMaxDate":"2020-02-25T00:00:00",
"OptionMinDate":"2020-02-18T00:00:00",
"Remarks":""
}
]
Returns detailed information about instruments in a specific category.
We cover instruments in the following categories:
- Stock
- ETF
- ETN
- Index
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/instruments/category/{categoryName}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
categoryName | String | None | Instrument's category. |
Response
Returns a collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Ticker | String | None | Instrument's ticker symbol. |
Description | String | None | Instrument's description. |
Category | String | None | Instrument's category. |
Fields | String | None | Available data fields. |
IntradayMinDate | DateTime | ISO | Minimum date for intraday data. |
IntradayMaxDate | DateTime | ISO | Maximum date for intraday data. |
EodMinDate | DateTime | ISO | Minimum date for End-Of-Day data. |
EodMaxDate | DateTime | ISO | Maximum date for End-Of-Day data. |
OptionMinDate | DateTime | ISO | Minimum date for options data. |
OptionMaxDate | DateTime | ISO | Maximum date for options data. |
Remarks | String | None | Any remarks on the instrument. |
Optionable | Boolean | true/false | Indicates if the instrument bears options. |
Errors
The following errors might arise:
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Not Found
{
"Status":"NotFound",
"Message":"No instruments found. See available categories."
}
Example
Request
You send a GET request to the following endpoint.
https://www.tallacoptions.com/api/instruments/category/stock
Response
You get a collection of all available stocks along with detailed information. We assume that a JSON content type was specified.
[
{
"Ticker":"AAPL",
"Category":"Stock",
"Description":"Apple Inc.",
"Fields":"Last,Bid,Ask,Volume",
"Optionable":"true",
"EodMaxDate":"2020-03-04T00:00:00",
"EodMinDate":"1980-12-12T00:00:00",
"IntradayMaxDate":"2020-03-03T00:00:00",
"IntradayMinDate":"2017-04-03T00:00:00",
"OptionMaxDate":"2020-02-27T00:00:00",
"OptionMinDate":"2018-07-02T00:00:00",
"Remarks":""
},
...
{
"Ticker":"ZTS",
"Category":"Stock",
"Description":"Zoetis Inc.",
"Fields":"Last,Bid,Ask,Volume",
"Optionable":"true",
"EodMaxDate":"2020-03-04T00:00:00",
"EodMinDate":"2013-02-01T00:00:00",
"IntradayMaxDate":"2020-03-03T00:00:00",
"IntradayMinDate":"2020-01-29T00:00:00",
"OptionMaxDate":"2020-02-25T00:00:00",
"OptionMinDate":"2020-02-18T00:00:00",
"Remarks":""
}
]
Introduction
End-Of-Day data can be obtained for available instruments over a period ranging from a start-date to an end-date.
Returns historical EOD data for a single ticker.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/eod/quotes/{ticker}/{start}/{end}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Instrument's ticker symbol. |
start | DateTime | yyyy-MM-dd | Period's start date. |
end | DateTime | yyyy-MM-dd | Period's end date. |
token* | String | GUID | Valid user-generated token. |
Response
Headers
The following additionnal HTTP Headers are included in the reponse:
Name | Value |
---|---|
Description | Instrument's description. |
Caption | Description of the response. |
Access-Level | User's access level. |
Access-Right | Rights associated to user's access level. |
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Date | DateTime | ISO | Quotation date. |
Open | Decimal | Decimal | Opening price. |
High | Decimal | Decimal | Highest price. |
Low | Decimal | Decimal | Lowest price. |
Close | Decimal | Decimal | Closing price. |
Volume | Integer | Integer | Cumulated Traded volume. |
NetChange | Decimal | Decimal | Net price change. |
PercentChange | Decimal | Decimal | Percent price change. |
Remarks | String | String | Any remarks about the trading session. |
The objects can be serialized into CSV, XML, JSON and BSON formats.
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Not Found
{
"Status":"NotFound",
"Message":"No Data Found! Check instrument's details for data availability."
}
Invalid Period Range
{
"Status":"BadRequest",
"Message":"Start date must be equal to or precede End date."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Anonymous request accepted only from browsers!"
}
Unsufficient Access
{
"Status":"Forbidden",
"Message":"Your access doesn't cover the requested period range. Please see EOD data access scheme."
}
Access Denied
{
"Status":"Forbidden",
"Message":"Restricted resource! Please See EOD data access scheme."
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for AAPL EOD data from September 28th 2018 to July 12th 2019 using a temporary token.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/eod/quotes/aapl/2018-09-28/2019-07-12/848199a4-6ff9-4387-906e-3a2ba34a7a3a
Response
Headers
Name | Value |
---|---|
Description | Apple Inc. |
Caption | AAPL Daily Quotes From 2018-09-28 To 2019-07-12 - www.TallacOptions.com |
Acces-Level | Default |
Acces-Right | Default access-level users can access Stock EOD data for the past 2 year(s). |
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Date":"2019-07-12T00:00:00",
"Open":202.45000,
"High":204.00000,
"Low":202.20000,
"Close":203.30000,
"Volume":17397728,
"NetChange":1.55000,
"PercentChange":0.0076827757125154894671623296,
"Remarks":""
},
...
,{
"Date":"2018-09-28T00:00:00",
"Open":224.79000,
"High":225.84000,
"Low":224.02000,
"Close":225.74000,
"Volume":22888201,
"NetChange":0.79000,
"PercentChange":0.0035118915314514336519226495,
"Remarks":""
}
]
Try It Out!
Response
Returns historical EOD data for one or more tickers on a single trading date.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/eod/quotes/{date}/{tickers}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
date | DateTime | yyyy-MM-dd | Historical trading date |
tickers | String | Comma-Separated Values | One or more ticker symbols separated by commas. |
token* | String | GUID | Valid user-generated token. |
Response
Headers
The following additionnal HTTP Headers are included in the reponse:
Name | Value |
---|---|
Caption | Description of the response. |
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Ticker | String | None | Instrument's ticker symbol. |
Open | Decimal | Decimal | Opening price. |
High | Decimal | Decimal | Highest price. |
Low | Decimal | Decimal | Lowest price. |
Close | Decimal | Decimal | Closing price. |
Volume | Integer | Integer | Cumulated Traded volume. |
NetChange | Decimal | Decimal | Net price change. |
PercentChange | Decimal | Decimal | Percent price change. |
Remarks | String | String | Any remarks about the trading session. |
The objects can be serialized into CSV, XML, JSON and BSON formats.
Errors
The following errors might arise:
Invalid Trading Date
{
"Status":"NotFound",
"Message":"The specified trading date is not covered!"
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Anonymous request accepted only from browsers!"
}
Unsufficient Access
{
"Status":"Forbidden",
"Message":"Your access doesn't cover the requested period range. Please see EOD data access scheme."
}
Access Denied
{
"Status":"Forbidden",
"Message":"Restricted resource! Please See EOD data access scheme."
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for AAPL, MSFT and IBM EOD data for June 29th 2020 using a temporary token.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/eod/quotes/2020-06-29/AAPL,MSFT,IBM/749129a4-6fg9-4687-906e-3a1ba34b7a3a
Response
Headers
Name | Value |
---|---|
Caption | AAPL,MSFT,IBM Daily Quotes For 2020-06-29 - www.TallacOptions.com |
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Ticker":"AAPL",
"Open":353.25000,
"High":362.17360,
"Low":351.28000,
"Close":361.78000,
"Volume":32445786,
"NetChange":8.15000,
"PercentChange":0.0230466872154511777846902129,
"Remarks":""
}
,
{
"Ticker":"MSFT",
"Open":195.78000,
"High":198.53000,
"Low":193.55000,
"Close":198.44000,
"Volume":25970858,
"NetChange":2.11000,
"PercentChange":0.0107472113278663474761880507,
"Remarks":""
}
,
{
"Ticker":"IBM",
"Open":117.98000,
"High":119.78000,
"Low":117.37000,
"Close":119.75000,
"Volume":4066095,
"NetChange":2.56000,
"PercentChange":0.0218448673094973973888557044,
"Remarks":""
}
]
Introduction
We provide intraday data for all instruments we cover. You can access historical data or live snapshots.
Returns historical intraday data for a single ticker. The frequencies range from 5-minute to tick level.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/intraday/quotes/{ticker}/{date}/{frequency}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Instrument's ticker symbol. |
date | DateTime | yyyy-MM-dd | Trading date. |
frequency | Integer | 0, 1, 60, 300 | Aggregation frequency (in seconds). 0 for tick data. |
token* | String | GUID | Valid user-generated token. |
Response
Headers
The following additionnal HTTP Headers are included in the reponse:
Name | Value |
---|---|
Description | Instrument's description. |
Caption | Description of the response. |
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Time | Time | HH:mm:ss | Quotation time. Fraction seconds apply for tick data. |
Last | Decimal | Decimal | Last quoted price. |
Bid* | Decimal | Decimal | Bid price. |
Ask* | Decimal | Decimal | Ask price. |
Volume* | Integer | Integer | Cumulated Traded volume. |
The objects can be serialized into CSV, XML, JSON and BSON formats.
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Not Found
{
"Status":"NotFound",
"Message":"No Data Found! Check instrument's details for data availability."
}
Invalid Frequency
{
"Status":"BadRequest",
"Message":"This frequency is not supported as a frequency value. See list of available frequencies."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Anonymous request accepted only from browsers!"
}
Unsufficient Access Rights
{
"Status":"Forbidden",
"Message":"Restricted resource! Your access rights do not cover this frequency!"
}
Access Denied
{
"Status":"Forbidden",
"Message":"Restricted resource! Please See EOD data access scheme."
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for AAPL intraday data on January 2nd 2020 with a 1-min frequency.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/intraday/quotes/aapl/2020-01-02/60/ba5cdb19-dc36-4939-90ce-ad787657b07a
Response
Headers
Name | Value |
---|---|
Description | Apple Inc. |
Caption | AAPL Intraday Data On 2020-01-02 - www.TallacOptions.com |
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Time":"16:00:00",
"Last":300.35000,
"Bid":300.47,
"Ask":300.48,
"Volume":32942947
},
...
,{
"Time":"09:30:00",
"Last":296.24000,
"Bid":296.24,
"Ask":296.30,
"Volume":560053
}
]
Returns a live snapshot for multiple tickers.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/intraday/quotes/live/{tickers}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
tickers | String | Comma-Separated Values | One or more ticker symbols separated by commas. |
token* | String | GUID | Valid user-generated token. |
Response
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Ticker | String | None | Instrument's ticker symbol. |
Description | String | None | Instrument's description. |
Time | Time | HH:mm:ss.fffffff | Quotation time. |
Last | Decimal | Decimal | Last quoted price. |
LastSize* | Integer | Unsigned Integer | Last traded size. |
Bid* | Decimal | Decimal | Bid price. |
BidSize* | Integer | Unsigned Integer | Bid size. |
Ask* | Decimal | Decimal | Ask price. |
AskSize* | Integer | Unsigned Integer | Ask size. |
Volume* | Integer | Integer | Cumulated Traded volume. |
NetChange | Decimal | Decimal | Net price change. |
PercChange | Decimal | Decimal | Percent price change. |
Remarks | String | None | Remarks about request data. |
Errors
The following errors might arise:
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for AAPL, AXP, XOM live snapshots.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/intraday/quotes/live/aapl,axp,xom/ba5cdb19-dc36-4939-90ce-ad787657b07a
Response
Content
A collection of JSON objects with the above mentioned properties.
[{
"Ticker":"AAPL",
"Description":"Apple Inc.",
"Time":"10:59:11.6297373",
"Last":133.265,
"NetChange":-1.165,
"PercChange":-0.008666220337722234,
"LastSize":4360,
"Bid":133.26,
"BidSize":1,
"Ask":133.27,
"AskSize":8,
"Volume":38102734,
"Remarks":null
},
{
"Ticker":"AXP",
"Description":"American Express Company",
"Time":"10:59:11.6297373",
"Last":148.03,
"NetChange":2.04,
"PercChange":0.013973559832865265,
"LastSize":100,
"Bid":148.01,
"BidSize":2,
"Ask":148.04,
"AskSize":1,
"Volume":743133,
"Remarks":null
},
{
"Ticker":"XOM",
"Description":"Exxon Mobil Corporation",
"Time":"10:59:11.6297373",
"Last":57.865,
"NetChange":2.155,
"PercChange":0.038682462753545144,
"LastSize":200,
"Bid":57.86,
"BidSize":5,
"Ask":57.87,
"AskSize":25,
"Volume":12990516,
"Remarks":null
}]
Introduction
We provide options EOD data for regular options written on 100 shares of the underlying.
You can access information about an options chain's expirations. You can also fetch data for groups (same underlying and expiration) of options or for a specific option.
Use moneyness and factor filters to avoid processing all options within a group.
Note: We can accommodate for options tick data upon request.
Returns all expiration items in an option chain.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/options/expirations/{ticker}/{date}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Underlying ticker symbol. |
date | DateTime | yyyy-MM-dd | Trading date. |
token* | String | GUID | Valid user-generated token. |
Response
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Expiry | DateTime | ISO | Expiration date. |
Style | String | Standard, Weeklys or Quartelys | Option listing style. |
NbDaysLeft | Integer | None | Number of days left to expiration. |
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Instrument Not Optionable
{
"Status":"NoContent",
"Message":"Instrument has no options. See list of optionable instruments."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Access Denied
{
"Status":"Forbidden",
"Message":"Access denied!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for SPY expirations on November 10th 2020.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/options/expirations/spy/2020-11-10/96f0c3c1-b1a9-4336-ac76-960d65ff69cc
Response
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Expiry":"2020-11-11T00:00:00",
"Style":"Weeklys",
"NbDaysLeft":1
},
{
"Expiry":"2020-11-13T00:00:00",
"Style":"Weeklys",
"NbDaysLeft":3
},
{
"Expiry":"2020-11-16T00:00:00",
"Style":"Weeklys",
"NbDaysLeft":6
},
{
"Expiry":"2020-11-18T00:00:00",
"Style":"Weeklys",
"NbDaysLeft":8
},
{
"Expiry":"2020-11-20T00:00:00",
"Style":"Standard",
"NbDaysLeft":10
},
...
,{
"Expiry":"2021-09-30T00:00:00",
"Style":"Quarterlys",
"NbDaysLeft":324
},
{
"Expiry":"2021-12-17T00:00:00",
"Style":"Standard",
"NbDaysLeft":402
},
{
"Expiry":"2022-01-21T00:00:00",
"Style":"Standard",
"NbDaysLeft":437
},
{
"Expiry":"2022-03-18T00:00:00",
"Style":"Standard",
"NbDaysLeft":493
},
{
"Expiry":"2022-06-17T00:00:00",
"Style":"Standard",
"NbDaysLeft":584
},
{
"Expiry":"2022-09-16T00:00:00",
"Style":"Standard",
"NbDaysLeft":675
},
{
"Expiry":"2022-12-16T00:00:00",
"Style":"Standard",
"NbDaysLeft":766
},
{
"Expiry":"2023-01-20T00:00:00",
"Style":"Standard",
"NbDaysLeft":801
}]
Returns data for all options with the same underlying and expiration date.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/options/quotes/{ticker}/{date}/{expDate}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Underlying ticker symbol. |
date | DateTime | yyyy-MM-dd | Trading date. |
expDate | DateTime | yyyy-MM-dd | Expiration date. |
token* | String | GUID | Valid user-generated token. |
Response
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Strike | Decimal | None | Option strike. |
Type | String | Call or Put | Option type |
Open | Decimal | None | Opening price. |
High | Decimal | None | Highest price. |
Low | Decimal | None | Lowest price. |
Last | Decimal | None | Last traded price. |
Volume | Integer | None | Traded volume. |
OpenInterest | Integer | None | Open interest. |
Bid | Decimal | None | Bid price. |
Ask | Decimal | None | Ask price. |
ImplVol | Decimal | None | Implied volatility. |
Delta | Decimal | None | Option delta. |
Gamma | Decimal | None | Option gamma. |
Vega | Decimal | None | Option vega. |
Theta | Decimal | None | Option theta. |
Rho | Decimal | None | Option rho. |
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Instrument Not Optionable
{
"Status":"NoContent",
"Message":"Instrument has no options. See list of optionable instruments."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Access Denied
{
"Status":"Forbidden",
"Message":"Access denied!"
}
Service Momentarily Unavailable
{
"Status":"ServiceUnavailable",
"Message":"Data server is offline!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for SPY options data on November 10th 2020 and for options expiring on November 13th 2020.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/options/quotes/spy/2020-11-10/2020-11-13/42ce13d3-f854-49fd-a2e9-8ed3e26ae8ce
Response
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Strike":165,
"Type":0,
"Open":0,
"High":0,
"Low":0,
"Last":162.51,
"Volume":0,
"OpenInterest":20,
"Bid":189.22,
"Ask":189.76,
"ImplVol":5.6743,
"Delta":0.88,
"Gamma":0,
"Vega":0.04,
"Theta":-0.89,
"Rho":0
},
...
,{
"Strike":440,
"Type":1,
"Open":88.9,
"High":89,
"Low":88.9,
"Last":89,
"Volume":48,
"OpenInterest":0,
"Bid":85.25,
"Ask":85.78,
"ImplVol":null,
"Delta":-1,
"Gamma":0,
"Vega":-874,
"Theta":0,
"Rho":0
}]
Try It Out!
Response
Returns groups (same underlying and expiration) of options data. A moneyness and a factor filters help narrow down the matching options.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/options/quotes/{tickers}/{date}/{expDate}/{moneyness}/{factor}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
tickers | String | Comma Separated Values | One or more underlying tickers separated by commas. |
date | DateTime | yyyy-MM-dd | Trading date. |
expDate | DateTime | yyyy-MM-dd | Expiration date. |
moneyness | String | ITM, ATM or OTM | Option's moneyness. |
factor | Unsigned Integer | Unsigned Integer | 0 for All strikes. Non-zero for strikes +/-N% of the underlying. |
token* | String | GUID | Valid user-generated token. |
Response
Content
Groups of collections of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Strike | Decimal | None | Option strike. |
Type | String | Call or Put | Option type |
Open | Decimal | None | Opening price. |
High | Decimal | None | Highest price. |
Low | Decimal | None | Lowest price. |
Last | Decimal | None | Last traded price. |
Volume | Integer | None | Traded volume. |
OpenInterest | Integer | None | Open interest. |
Bid | Decimal | None | Bid price. |
Ask | Decimal | None | Ask price. |
ImplVol | Decimal | None | Implied volatility. |
Delta | Decimal | None | Option delta. |
Gamma | Decimal | None | Option gamma. |
Vega | Decimal | None | Option vega. |
Theta | Decimal | None | Option theta. |
Rho | Decimal | None | Option rho. |
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Instrument Not Optionable
{
"Status":"NoContent",
"Message":"Instrument has no options. See list of optionable instruments."
}
Invalid Moneyness
{
"Status":"BadRequest",
"Message":"Invalid moneyness. Only ATM, ITM or OTM."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Access Denied
{
"Status":"Forbidden",
"Message":"Access denied!"
}
Service Momentarily Unavailable
{
"Status":"ServiceUnavailable",
"Message":"Data server is offline!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for AAPL, AXP and XOM options data on April 9th 2021 and for options expiring on April 16th 2021.
You only request ATM options with strikes within +/-5% of each underlying's closing price.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/options/quotes/aapl,axp,xom/2021-04-09/2021-04-16/ATM/5/42ce13d3-f854-49fd-a2e9-8ed3e26ae8ce
Response
Content
A collection of JSON objects with the above mentioned properties.
[
{
"UnderlyingTicker":"aapl",
"ErrorMessage":null,
"UnderlyingClosingPrice":132.995,
"Options":[{
"Strike":127,
"Type":0,
"Open":3.65,
"High":6.3,
"Low":3.4,
"Last":6.27,
"Volume":5831,
"OpenInterest":13292,
"Bid":6.2,
"Ask":6.3,
"ImplVol":0.2746,
"Delta":0.87,
"Gamma":0.04,
"Vega":0.04,
"Theta":-0.07,
"Rho":0.02
},
...
,{
"Strike":138.75,
"Type":1,
"Open":8.75,
"High":8.75,
"Low":6.4,
"Last":6.44,
"Volume":114,
"OpenInterest":1143,
"Bid":6.05,
"Ask":6.15,
"ImplVol":0.237,
"Delta":-0.89,
"Gamma":0.04,
"Vega":0.04,
"Theta":-0.06,
"Rho":-0.03
}]
},
{
"UnderlyingTicker":"axp",
"ErrorMessage":null,
"UnderlyingClosingPrice":147.78,
"Options":[{
"Strike":141,
"Type":0,
"Open":6.9,
"High":6.95,
"Low":6.9,
"Last":6.95,
"Volume":2,
"OpenInterest":273,
"Bid":6.2,
"Ask":7.4,
"ImplVol":0.1778,
"Delta":0.95,
"Gamma":0.01,
"Vega":0.02,
"Theta":-0.02,
"Rho":0.01
},
...
,{
"Strike":155,
"Type":1,
"Open":0,
"High":0,
"Low":0,
"Last":8.35,
"Volume":0,
"OpenInterest":18,
"Bid":7.15,
"Ask":8.05,
"ImplVol":0.2708,
"Delta":-0.88,
"Gamma":0.03,
"Vega":0.04,
"Theta":-0.08,
"Rho":-0.03
}]
},
{
"UnderlyingTicker":"xom",
"ErrorMessage":null,
"UnderlyingClosingPrice":55.87,
"Options":[{
"Strike":53.5,
"Type":0,
"Open":2.94,
"High":2.94,
"Low":2.94,
"Last":2.94,
"Volume":25,
"OpenInterest":49,
"Bid":2.47,
"Ask":2.58,
"ImplVol":0.3012,
"Delta":0.84,
"Gamma":0.11,
"Vega":0.02,
"Theta":-0.03,
"Rho":0.01
},
...
,{
"Strike":58.5,
"Type":1,
"Open":2.8,
"High":3,
"Low":2.8,
"Last":3,
"Volume":5,
"OpenInterest":95,
"Bid":2.65,
"Ask":2.8,
"ImplVol":0.1554,
"Delta":-0.98,
"Gamma":0.04,
"Vega":0,
"Theta":-0.01,
"Rho":-0.01
}]
}
]
Returns available historical EOD data for a single option.
Endpoint
Send a GET request to the following endpoint:
https://www.tallacoptions.com/api/options/quotes/{ticker}/{expDate}/{type}/{strike}/{token}
Parameters
Parameter | Type | Format | Description |
---|---|---|---|
ticker | String | None | Underlying ticker symbol. |
expDate | DateTime | yyyy-MM-dd | Expiration date. |
type | Character | C for Call or P for Put | Option type. |
strike | Decimal | None | Strike price. |
token* | String | GUID | Valid user-generated token. |
Response
Content
A collection of objects with the following properties:
Property | Type | Format | Description |
---|---|---|---|
Date | DateTime | ISO | Trading date. |
Open | Decimal | None | Opening price. |
High | Decimal | None | Highest price. |
Low | Decimal | None | Lowest price. |
Last | Decimal | None | Last traded price. |
Volume | Integer | None | Traded volume. |
OpenInterest | Integer | None | Open interest. |
Bid | Decimal | None | Bid price. |
Ask | Decimal | None | Ask price. |
ImplVol | Decimal | None | Implied volatility. |
Delta | Decimal | None | Option delta. |
Gamma | Decimal | None | Option gamma. |
Vega | Decimal | None | Option vega. |
Theta | Decimal | None | Option theta. |
Rho | Decimal | None | Option rho. |
Locked | Boolean | true or false | False if user has access to the data. True otherwise. |
Errors
The following errors might arise:
Instrument Not Covered
{
"Status":"NotFound",
"Message":"Instrument is not covered. See list of available instruments."
}
Instrument Not Optionable
{
"Status":"NoContent",
"Message":"Instrument has no options. See list of optionable instruments."
}
Invalid Token
{
"Status":"Forbidden",
"Message":"Invalid token!"
}
Expired Token
{
"Status":"Forbidden",
"Message":"Token has expired!"
}
Token Already Used
{
"Status":"Forbidden",
"Message":"Token already used!"
}
Unauthenticated Request
{
"Status":"Forbidden",
"Message":"Could not authenticate request!"
}
Service Momentarily Unavailable
{
"Status":"ServiceUnavailable",
"Message":"Data server is offline!"
}
Internal server error
{
"Status":"InternalServerError",
"Message":"An internal server error occurred."
}
Example
Request
You send a GET request for SPY 355 Call option expiring on November 13th 2020.
We assume that JSON content type is specified in the request header.
https://www.tallacoptions.com/api/options/quotes/spy/2020-11-13/c/355/583fc7ce-7ba4-4160-992c-d1ac03fbe1c8
Response
Content
A collection of JSON objects with the above mentioned properties.
[
{
"Date":"2020-11-13T00:00:00",
"Open":2.25,
"High":3.92,
"Low":0.78,
"Last":3.04,
"Volume":37415,
"OpenInterest":13660,
"Bid":2.91,
"Ask":3.16,
"ImplVol":null,
"Delta":1,
"Gamma":0,
"Vega":0,
"Theta":0,
"Rho":0,
"Locked":false
},
...
,{
"Date":"2020-10-01T00:00:00",
"Open":null,
"High":null,
"Low":null,
"Last":null,
"Volume":null,
"OpenInterest":null,
"Bid":null,
"Ask":null,
"ImplVol":null,
"Delta":null,
"Gamma":null,
"Vega":null,
"Theta":null,
"Rho":null,
"Locked":true
}]
Introduction
We provide real-time data for stocks, indices and ETFs/ETNs through our TCP server. Follow the protocol below to connect your TCP client to the server, request and receive a real-time stock data feed.
Connection
Connect to the host: www.tallacoptions.com
Listen to the port: 6670
A successfull connection will be greeted with the message "TallacOptions 6670\r\n".
Request
After successfully connecting to the server, send the ticker of the instrument you want appended with the '\n' character. You'll then receive a stream of length-prefixed messages containing live data for the instrument.
Message Structure
Each message is prepended with its length. The length's format is "4-byte signed little-endian" (i.e., "int" in C#).
A message itself consists of data fields delimited by the '\0' character. The fields are sent in this order: Last, LastSize, Bid, BidSize, Ask, AskSize, Volume, Open, High and Low.
Specifications
Each TCP client can only handle one ticker. Once a client is connected and set to fetch data for a ticker, it cannot be modified to fetch data for another ticker. You can create multiple clients, each handling a different ticker.
The server will drop a connection when it fails to send data to the client. Check the client's connectivity by sending a keep-alive message to the server and take action when the sending fails.
After the live stream has started the client should only send keep-alive messages. The keep-alive message processing frequency is 30 seconds. The message should be maximum 10 characters long.
The keep-alive message will be echoed with an empty message (length=0) by the server. So zero-length messages should be discarded from the normal data stream.
Examples
A barebones sample for connecting to the server and streaming live data.
A more complex example featuring keep-alive and reconnecting.