Get expiration dates for a particular underlying.
Note that some underlying securities use a different symbol for their weekly options (RUT/RUTW, SPX/SPXW). To make sure you see all expirations, make sure to send the includeAllRoots
parameter. This will also ensure any unique options due to corporate actions (AAPL1) are returned.
Header | Required | Values/Example | Default |
---|---|---|---|
Accept | Optional | application/xml, application/json | application/xml |
Authorization | Required | Bearer {token} |
Parameter | Type | Param Type | Required | Values/Example | Default |
---|---|---|---|---|---|
symbol | Query | String | Required | VXX | |
Underlying symbol of the chain | |||||
includeAllRoots | Query | String | Optional | true | false |
Send expirations related to all option roots | |||||
strikes | Query | String | Optional | true | false |
Add strike prices to each expiration | |||||
contractSize | Query | String | Optional | true | false |
Adds contract size to each expiration | |||||
expirationType | Query | String | Optional | true | false |
Adds expiration type to each expiration |
https://sandbox.tradier.com
curl -X GET "https://api.tradier.com/v1/markets/options/expirations?symbol=VXX&includeAllRoots=true&strikes=true&contractSize=true&expirationType=true" \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Accept: application/json'
// Version 1.8.0_31
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) throws IOException {
final HttpUriRequest request = RequestBuilder
.get("https://api.tradier.com/v1/markets/options/expirations")
.addHeader("Authorization", "Bearer <TOKEN>")
.addHeader("Accept", "application/json")
.addParameter("symbol", "VXX")
.addParameter("includeAllRoots", "true")
.addParameter("strikes", "true")
.addParameter("contractSize", "true")
.addParameter("expirationType", "true")
.build();
final HttpResponse response = HttpClientBuilder.create().build().execute(request);
final String jsonString = EntityUtils.toString(response.getEntity());
final JsonNode json = new ObjectMapper().readTree(jsonString);
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(json);
}
}
# Version 2.5.0p0
require 'uri'
require 'net/http'
url = URI("https://api.tradier.com/v1/markets/options/expirations?symbol=VXX&includeAllRoots=true&strikes=true&contractSize=true&expirationType=true")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <TOKEN>'
request["Accept"] = 'application/json'
response = http.request(request)
puts response.code
puts response.read_body
// Version go1.12
package main
import (
"fmt"
"net/http"
"net/url"
"io/ioutil"
"log"
)
func main() {
apiUrl := "https://api.tradier.com/v1/markets/options/expirations?symbol=VXX&includeAllRoots=true&strikes=true&contractSize=true&expirationType=true"
u, _ := url.ParseRequestURI(apiUrl)
urlStr := u.String()
client := &http.Client{}
r, _ := http.NewRequest("GET", urlStr, nil)
r.Header.Add("Authorization", "Bearer <TOKEN>")
r.Header.Add("Accept", "application/json")
resp, _ := client.Do(r)
responseData, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp.Status)
fmt.Println(string(responseData))
}
// Version 4.6.2.0
using System;
using System.Net;
using System.IO;
using System.Text;
public class MainClass {
public static void Main (string[] args) {
var request = (HttpWebRequest)WebRequest.Create("https://api.tradier.com/v1/markets/options/expirations?symbol=VXX&includeAllRoots=true&strikes=true&contractSize=true&expirationType=true");
request.Method = "GET";
request.Headers["Authorization"] = "Bearer <TOKEN>";
request.Accept = "application/json";
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine (response.StatusCode);
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine (responseString);
}
}
// Version 10.15.2
const request = require('request');
request({
method: 'get',
url: 'https://api.tradier.com/v1/markets/options/expirations',
qs: {
'symbol': 'VXX',
'includeAllRoots': 'true',
'strikes': 'true',
'contractSize': 'true',
'expirationType': 'true'
},
headers: {
'Authorization': 'Bearer <TOKEN>',
'Accept': 'application/json'
}
}, (error, response, body) => {
console.log(response.statusCode);
console.log(body);
});
# Version 3.6.1
import requests
response = requests.get('https://api.tradier.com/v1/markets/options/expirations',
params={'symbol': 'VXX', 'includeAllRoots': 'true', 'strikes': 'true', 'contractSize': 'true', 'expirationType': 'true'},
headers={'Authorization': 'Bearer <TOKEN>', 'Accept': 'application/json'}
)
json_response = response.json()
print(response.status_code)
print(json_response)
<?php
// Version 7.2.17-0ubuntu0.18.04.1
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.tradier.com/v1/markets/options/expirations?symbol=VXX&includeAllRoots=true&strikes=true&contractSize=true&expirationType=true');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
$headers = array();
$headers[] = 'Authorization: Bearer <TOKEN>';
$headers[] = 'Accept: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $http_code;
echo $result;
{
"expirations": {
"expiration": [
{
"date": "2023-11-10",
"contract_size": 100,
"expiration_type": "weeklys",
"strikes": {
"strike": [12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 29.0, 29.5, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0]
}
},
{
"date": "2023-11-17",
"contract_size": 100,
"expiration_type": "standard",
"strikes": {
"strike": [9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 29.0, 29.5, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0, 54.0]
}
},
{
"date": "2023-12-29",
"contract_size": 100,
"expiration_type": "quarterlys",
"strikes": {
"strike": [12.0, 13.0, 14.0, 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 19.0, 19.5, 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 24.0, 24.5, 25.0, 25.5, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0]
}
}
]
}
}