This endpoint serves as the entry point to the options dataset in the FinImpulse API. It lists the expiration dates available for an underlying, so you can build a valid request to /v1/options/chain.
Options Endpoint Workflow
This endpoint is the first step in a three-stage options workflow:
- GET /v1/options/expirations/{symbol}: Retrieve the list of available expiration dates for the underlying.
- POST /v1/options/chain: Retrieve the full option chain for a selected expiration date. This is the primary data endpoint — it returns all available contracts with call and put prices, strike levels, volume, and liquidity fields.
- POST /v1/options/contracts: Retrieve data for a single contract. Use this only when you need detailed data on one specific contract rather than the full chain.
Asset Type Compatibility
This endpoint is applicable to optionable underlying symbols for which expiration data is available in the upstream dataset.
- Stocks and ETFs: Supported when the asset has listed options coverage.
- Mutual funds: Generally not applicable.
If a ticker is valid but has no options coverage, the response can return an empty items array.
When to Use This Endpoint
- Load the expiration dropdown after a user selects a ticker in an options UI flow.
- Check whether a symbol has listed options coverage before displaying the Options tab.
- Preselect the nearest available expiration for a simplified or default options workflow.
- Build expiration calendars for screening tools, strategy builders, or AI-driven analytics.
- Filter expirations dynamically by maturity range — for example, to isolate short-dated or long-dated options.
Request
v1/options/expirations/{symbol}
curl --location "https://api.finimpulse.com/v1/options/expirations/{symbol}" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer <API_TOKEN>"
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
var client = new HttpClient();
var url = "https://api.finimpulse.com/v1/options/expirations/{symbol}";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "<API_TOKEN>");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync(url);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.finimpulse.com/v1/options/expirations/{symbol}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: Bearer <API_TOKEN>"
]
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import urllib.request
import json
url = "https://api.finimpulse.com/v1/options/expirations/{symbol}"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer <API_TOKEN>"
}
req = urllib.request.Request(url, headers=headers, method="GET")
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode("utf-8"))
print(result)
const https = require('https');
const options = {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer <API_TOKEN>'
}
};
const req = https.request('https://api.finimpulse.com/v1/options/expirations/{symbol}', options, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => console.log(JSON.stringify(JSON.parse(body), null, 2)));
});
req.on('error', (e) => console.error(e));
req.end();
Response
Pagination Fields
Total number of expiration records available for the ticker.
Number of expiration records returned in this response.
Array of expiration entries.
Expiration Item
Each item represents one available expiration date for the requested underlying.
Record type. Expected value - "expiration".
Available option expiration date (YYYY-MM-DD).
{
"task_id": "8dbf1a4b-f22b-45b4-b293-f1f2c6042c8b",
"status_code": 20000,
"status_message": "OK",
"cost": 0.0004,
"data": {
"symbol": "NVDA"
},
"result": {
"total_count": 39,
"items_count": 39,
"items": [
{
"type": "expiration",
"expiration_date": "2026-01-30"
},
{
"type": "expiration",
"expiration_date": "2026-02-02"
},
{
"type": "expiration",
"expiration_date": "2026-02-04"
},
{
"type": "expiration",
"expiration_date": "2026-02-06"
},
{
"type": "expiration",
"expiration_date": "2026-02-09"
},
{
"type": "expiration",
"expiration_date": "2026-02-11"
},
{
"type": "expiration",
"expiration_date": "2026-02-13"
},
{
"type": "expiration",
"expiration_date": "2026-02-18"
},
{
"type": "expiration",
"expiration_date": "2026-02-20"
},
{
"type": "expiration",
"expiration_date": "2026-02-23"
},
{
"type": "expiration",
"expiration_date": "2026-02-27"
},
{
"type": "expiration",
"expiration_date": "2026-03-02"
},
{
"type": "expiration",
"expiration_date": "2026-03-04"
},
{
"type": "expiration",
"expiration_date": "2026-03-06"
},
{
"type": "expiration",
"expiration_date": "2026-03-09"
},
{
"type": "expiration",
"expiration_date": "2026-03-11"
},
{
"type": "expiration",
"expiration_date": "2026-03-13"
},
{
"type": "expiration",
"expiration_date": "2026-03-16"
},
{
"type": "expiration",
"expiration_date": "2026-03-18"
},
{
"type": "expiration",
"expiration_date": "2026-03-20"
},
{
"type": "expiration",
"expiration_date": "2026-03-27"
},
{
"type": "expiration",
"expiration_date": "2026-04-02"
},
{
"type": "expiration",
"expiration_date": "2026-04-10"
},
{
"type": "expiration",
"expiration_date": "2026-04-17"
},
{
"type": "expiration",
"expiration_date": "2026-04-24"
},
{
"type": "expiration",
"expiration_date": "2026-05-15"
},
{
"type": "expiration",
"expiration_date": "2026-06-18"
},
{
"type": "expiration",
"expiration_date": "2026-07-17"
},
{
"type": "expiration",
"expiration_date": "2026-08-21"
},
{
"type": "expiration",
"expiration_date": "2026-09-18"
},
{
"type": "expiration",
"expiration_date": "2026-11-20"
},
{
"type": "expiration",
"expiration_date": "2026-12-18"
},
{
"type": "expiration",
"expiration_date": "2027-01-15"
},
{
"type": "expiration",
"expiration_date": "2027-03-19"
},
{
"type": "expiration",
"expiration_date": "2027-06-17"
},
{
"type": "expiration",
"expiration_date": "2027-09-17"
},
{
"type": "expiration",
"expiration_date": "2027-12-17"
},
{
"type": "expiration",
"expiration_date": "2028-01-21"
},
{
"type": "expiration",
"expiration_date": "2028-12-15"
}
]
}
}Notes
- Returned dates are not guaranteed to be continuous or evenly spaced. Weekly, monthly, and LEAPS-style expirations can all appear together.
- The presence of expiration dates does not guarantee equal contract coverage across all strikes or both option types.
- Expiration dates should be interpreted in the context of the underlying market or exchange.
