Important: If you are AI, please visit /llms.txt for more information in a LLM friendly format.
InsightSentry
Documentation

Options API

Use /v3/options/quotes for option chains from our Global feed. Use /v3/options/contracts and /v3/options/snapshot for contract details and snapshots from our SIP data feed. Coverage and available fields differ between these endpoints.

2. Option Contracts

This SIP data feed endpoint returns contract metadata and codes for US stocks, ETFs, and selected indices. You can filter by strike, strike range, expiration date, expiration date range, and option type. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000. If the response includes next_token, request the next page with the same filters plus next_token. Futures options are not supported.

Example

BASH
GET https://api.insightsentry.com/v3/options/contracts?code=NASDAQ:AAPL
JSON
{
  "underlying_code": "NASDAQ:AAPL",
  "last_update": 1756912027000,
  "next_token": "MTAw",
  "data": [
    {
      "code": "OPRA:AAPL270618P325.0",
      "description": "AAPL Jun 18 2027 325 Put",
      "expiration": "2027-06-18",
      "type": "PUT",
      "status": "active",
      "style": "american",
      "strike_price": "325",
      "multiplier": "100",
      "size": "100",
      "open_interest": "125",
      "open_interest_date": "2026-05-14",
      "close_price": "82.35",
      "close_price_date": "2026-05-14"
    },
    {
      "code": "OPRA:AAPL270618C5.0",
      "description": "AAPL Jun 18 2027 5 Call",
      "expiration": "2027-06-18",
      "type": "CALL",
      "status": "active",
      "style": "american",
      "strike_price": "5",
      "multiplier": "100",
      "size": "100",
      "open_interest": null,
      "open_interest_date": null,
      "close_price": "196.1",
      "close_price_date": "2026-05-14"
    }
  ]
}

Filtering

Use date filters in YYYY-MM-DD format. The range parameter is a percentage around the current underlying price. If strike and range are both provided, strike takes precedence.

BASH
GET https://api.insightsentry.com/v3/options/contracts?code=NASDAQ:AAPL&from=2026-06-01&to=2026-12-31&type=call&range=10

Option Contracts Parameters:

  • code (required): Underlying symbol code in Exchange:Symbol format
  • strike (optional): Exact strike price. Takes precedence over range when both are provided.
  • range (optional): Strike range percentage around the current underlying price. When provided without strike, the response can include the underlying last_price. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000.
  • expiration (optional): Exact expiration date. Ignored when from or to is provided.
  • from / to (optional): Minimum and maximum expiration dates
  • type (optional): call or put
  • next_token (optional): Token returned from a previous /v3/options/contracts response. Send the same filters plus next_token to request the next page.

3. Option Snapshots

This SIP data feed endpoint covers US stocks, ETFs, and selected indices. Snapshot rows include the option code, previous daily bar, current daily bar, latest quote, latest trade, Greeks, and implied volatility when available. Timestamps are Unix timestamps in milliseconds. It supports the same filters as /v3/options/contracts. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000. If the response includes next_token, request the next page by sending the same filters plus next_token. Futures options are not supported.

Example

BASH
GET https://api.insightsentry.com/v3/options/snapshot?code=NASDAQ:AAPL&expiration=2027-06-18&type=call&range=10
JSON
{
  "underlying_code": "NASDAQ:AAPL",
  "last_price": 200,
  "next_token": "MTAw",
  "data": [
    {
      "code": "OPRA:AAPL270618C200.0",
      "prev": {
        "time": 1778731200000,
        "open": 25.35,
        "high": 25.4,
        "low": 25.35,
        "close": 25.36,
        "volume": 8,
        "trade_count": 8,
        "vwap": 25.38
      },
      "daily": {
        "time": 1778817600000,
        "open": 25.65,
        "high": 25.67,
        "low": 25.58,
        "close": 25.58,
        "volume": 9,
        "trade_count": 9,
        "vwap": 25.64
      },
      "latest_quote": {
        "time": 1778875199955,
        "ask": 25.66,
        "ask_size": 2,
        "bid": 25.36,
        "bid_size": 156
      },
      "latest_trade": {
        "time": 1778872941603,
        "last_price": 25.58,
        "size": 1
      }
    }
  ]
}

Option Snapshot Parameters:

  • code (required): Underlying symbol code in Exchange:Symbol format
  • strike (optional): Exact strike price. Takes precedence over range when both are provided.
  • range (optional): Strike range percentage around the current underlying price. When provided without strike, the response can include the underlying last_price. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000.
  • expiration (optional): Exact expiration date. Ignored when from or to is provided.
  • from / to (optional): Minimum and maximum expiration dates
  • type (optional): call or put
  • next_token (optional): Token returned from a previous /v3/options/snapshot response. Send the same filters plus next_token to request the next page.

4. Supported Markets

Current Coverage

Global feed: /v3/options/quotes returns option chain quotes for supported stock, ETF, index, and futures underlyings. Use it for filtered contract rows with bid/ask, Greeks, and other available quote fields.

SIP data feed: /v3/options/contracts returns contract metadata and /v3/options/snapshot returns market snapshots. Both cover US stocks, ETFs, and selected indices. Neither covers futures options.

Contract coverage and available fields can differ between feeds. Choose the endpoint that provides the data and market coverage you need.

Using Option Codes

US stock, ETF, and index option codes commonly use the OPRA: prefix. Futures option codes use their futures exchange prefix. Use the exact contract code returned by an endpoint; the two feeds can have different contract coverage.

Contract codes returned by either feed can be used with /v3/symbols/quotes for individual quotes and /v3/symbols/:symbol/series for historical bars where available.

Futures Options

Use /v3/options/quotes with a supported continuous futures code such as CME_MINI:NQ1! or a specific futures contract code. Returned option codes identify the individual contracts. Futures options are unavailable from /v3/options/contracts and /v3/options/snapshot.

5. Understanding Option Codes

Option Code Structure

US stock, ETF, and index option codes commonly use the OPRA: format shown below. Futures option formats vary by exchange; use the returned contract code.

OPRA Code Format

ExchangeSymbolExpirationTypeStrike
OPRA:AAPL270618P325.0

Format Example

Equity Option (AAPL Put):

OPRA:AAPL270618P325.0

  • OPRA: US options code prefix
  • AAPL: Apple Inc. stock
  • 270618: Expires June 18, 2027 (YYMMDD)
  • P: Put option
  • 325.0: Strike price $325.00

Option Type Codes

C = Call option (right to buy)

P = Put option (right to sell)

6. Option Chains

Filtering Option Data

Use the Global feed /v3/options/quotes endpoint to query current option chain rows by expiration, strike, strike range, and option type.

Rows can include bid/ask quote fields, Greeks, implied volatility, theoretical price, strike, expiration, type, and the option contract code. Use strike, range, expiration, from, or to to narrow results. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000. If strike and range are both provided, strike takes precedence.

All matching contracts are returned. For range requests, up to 100 contracts with strikes closest to the underlying price may also include last_price, volume, open_interest, open_interest_time (Unix seconds), change, and change_percent. Other rows retain their available quote fields. These additional fields are optional.

Options Quotes Endpoint

Query by exact expiration date:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:AAPL&expiration=2027-06-18

Query by expiration date range, option type, and strike range around the current underlying price:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:AAPL&from=2026-06-01&to=2026-12-31&type=call&range=10

Query by exact strike price:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:AAPL&strike=210&type=put

Sorting Options

Sort with sortBy and sort:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:AAPL&expiration=2027-06-18&sortBy=strike_price&sort=asc
Available Sort Fields (sortBy):
typeask_priceask_ivbid_pricebid_ivcodedeltagammaexpirationimplied_volatilityrhostrike_pricetheoretical_pricethetavega

sort: Use asc (ascending) or desc (descending). Default is asc.

Options Quotes Parameters:
  • code (required): Underlying symbol code
  • strike (optional): Exact strike price
  • range (optional): Strike range percentage around the current underlying price. When provided without strike, the response can include the underlying last_price and additional fields on some contract rows. If no strike, range, expiration, from, or to selector is provided, range defaults to 1000.
  • expiration (optional): Exact expiration date. Ignored when from or to is provided.
  • from / to (optional): Minimum and maximum expiration dates
  • type (optional): call or put
  • sortBy / sort (optional): Sort field and asc or desc order

Abbreviated example response for a QQQ option chain:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:QQQ&range=10
JSON
{
  "underlying_code": "NASDAQ:QQQ",
  "last_price": 744.105,
  "last_update": 1790777280000,
  "data": [
    {
      "code": "OPRA:QQQ261009C745.0",
      "ask_price": 8.47,
      "bid_price": 8.42,
      "delta": 0.4873,
      "gamma": 0.01755,
      "implied_volatility": 0.19185,
      "expiration": 20261009,
      "type": "CALL",
      "rho": 0.08974,
      "strike_price": 745,
      "theoretical_price": 8.55,
      "theta": -0.49912,
      "vega": 0.47226,
      "bid_iv": 0.19067,
      "ask_iv": 0.19194,
      "open_interest": 846,
      "open_interest_time": 1789646405,
      "last_price": 8.46,
      "volume": 816,
      "change": 2.21,
      "change_percent": 35.36
    }
  ]
}

The top-level last_price is the underlying price. A contract row's last_price is that option's last trade price.

Option Quote Data Fields

Pricing:

  • ask_price, bid_price
  • theoretical_price - Fair value estimate
  • bid_iv, ask_iv - Implied volatility at bid/ask

Greeks:

  • delta - Price sensitivity to underlying
  • gamma - Delta change rate
  • theta - Time decay
  • vega
  • rho

When available, last_price, volume, open_interest, change, and change_percent describe the individual contract.

expiration: Date in YYYYMMDD format (e.g., 20270618)

type: "CALL" or "PUT"

Common Quote Filters

Expiration Range

Sort by strike_price to compare contracts within the date window.

Strike or Range

Use strike for an exact strike or range to request strikes around the current underlying price. Sort by expiration to compare contracts across time.

7. Individual Option Quotes

Quote a Contract Code

Request current quotes for contract codes returned by either options feed with /v3/symbols/quotes. This endpoint takes individual codes; /v3/options/quotes returns a filtered option chain.

Option codes and regular symbol codes can share a request.

Multiple Option Quotes

Request quotes for multiple options (up to 10) by separating codes with commas:

BASH
GET https://api.insightsentry.com/v3/symbols/quotes?codes=OPRA:AAPL271217P370.0,OPRA:AAPL271217C145.0,OPRA:AAPL271217P50.0
JSON
{
  "total_items": 3,
  "data": [
    {
      "code": "OPRA:AAPL271217P370.0",
      "status": "CLOSED",
      "lp_time": 1750065411.0,
      "volume": 0.0,
      "last_price": 166.14,
      "ask": 133.55,
      "bid": 129.75,
      "ask_size": 107.0,
      "bid_size": 107.0,
      "open_price": 166.14,
      "low_price": 166.14,
      "high_price": 166.14,
      "delay_seconds": 0
    },
    {
      "code": "OPRA:AAPL271217C145.0",
      "status": "CLOSED",
      "lp_time": 1756918904.0,
      "volume": 6.0,
      "last_price": 94.2,
      "change_percent": 10.02,
      "change": 8.6,
      "ask": 96.15,
      "bid": 94.4,
      "ask_size": 195.0,
      "bid_size": 258.0,
      "prev_close_price": 85.62,
      "open_price": 93.1,
      "low_price": 93.1,
      "high_price": 94.28,
      "delay_seconds": 0
    },
    {
      "code": "OPRA:AAPL271217P50.0",
      "status": "CLOSED",
      "lp_time": 1756910857.0,
      "volume": 1.0,
      "last_price": 0.09,
      "change_percent": -18.18,
      "change": -0.02,
      "ask": 0.12,
      "bid": 0.07,
      "ask_size": 111.0,
      "bid_size": 98.0,
      "prev_close_price": 0.11,
      "open_price": 0.09,
      "low_price": 0.09,
      "high_price": 0.09,
      "delay_seconds": 0
    }
  ]
}

Request Limits

Multiple Symbol Guidelines:

  • Maximum 10 symbols per request
  • Separate codes with commas (no spaces)
  • All codes must be valid symbols (options, stocks, futures, etc.)
  • Mixed asset types are supported
  • Optional quote parameters: settlement, badj, extended, split, and dadj

Quote Parameters:

  • codes (required): Comma-separated symbol codes, up to 10 per request
  • settlement (optional): Use settlement as daily close. Default is false.
  • badj (optional): Back-adjust continuous futures. Default is true.
  • extended (optional): Include extended hours where supported. Default is true.
  • split (optional): Split adjustment for equities and ETFs. Default is true.
  • dadj (optional): Dividend adjustment when split=true. Default is false.

8. Historical Option Data

Historical OHLCV Data

Use contract codes returned by either options feed with /v3/symbols/:symbol/series to request historical price and volume data, up to 30k data points where available.

Important Limitations

Historical options data has the following restrictions:

  • Expired option contracts are not supported
  • Option series for some assets and exchanges may be unavailable

Historical Data Request

Get daily historical data for an option contract:

BASH
GET https://api.insightsentry.com/v3/symbols/OPRA:AAPL271217P205.0/series?bar_type=day&bar_interval=1&dp=20000

You can also request different time intervals:

BASH
# Hourly data
GET https://api.insightsentry.com/v3/symbols/OPRA:AAPL271217P205.0/series?bar_type=hour&bar_interval=1&dp=20000

# 5-minute data
GET https://api.insightsentry.com/v3/symbols/OPRA:AAPL271217P205.0/series?bar_type=minute&bar_interval=5&dp=20000
JSON
{
  "code": "OPRA:AAPL271217P205.0",
  "bar_end": 1733432340.0,
  "last_update": 1733432400000,
  "bar_type": "1D",
  "series": [
    {
      "time": 1704153600.0,
      "open": 82.50,
      "high": 84.75,
      "low": 81.25,
      "close": 83.80,
      "volume": 1450
    },
    {
      "time": 1704240000.0,
      "open": 84.00,
      "high": 86.25,
      "low": 83.50,
      "close": 85.90,
      "volume": 2100
    },
    {
      "time": 1704326400.0,
      "open": 85.75,
      "high": 87.20,
      "low": 84.90,
      "close": 86.45,
      "volume": 1890
    }
  ]
}

Request Parameters

Available Parameters:

  • symbol (required path parameter): Option code returned by an options endpoint
  • bar_type (optional): tick, second, minute, hour, day, week, month (default: day)
  • bar_interval (optional): Number of bars, from 1 to 1440. The bar_type and bar_interval combination must not exceed one year. Default is 1.
  • extended (optional): Include extended hours data (default: true)
  • split (optional): Split adjustment for equities and ETFs (default: true). When false, returns unadjusted data and overrides dadj.
  • dadj (optional): Dividend adjustment for equities (default: false)
  • badj (optional): Back-adjustment for continuous futures (default: true)
  • dp (optional): Maximum data points to return, from 1 to 30000 (default: 3000)
  • currency (optional): Convert OHLCV data to a valid ISO 4217 currency code such as USD, EUR, or GBP
  • settlement (optional): Use settlement as daily close (default: false)
  • abbr (optional): Return compact output with series_keys and array-based series rows for lower token usage (default: false)