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

Options API Guide

2. Option Contracts

Option Contracts Endpoint

Once you have the underlying symbol, retrieve available option contracts using the /v3/options/contracts endpoint.

This endpoint returns option contract metadata and codes for the specified underlying symbol. You can filter by strike, strike range, expiration date, expiration date range, and option type before sending returned codes to /v3/symbols/quotes for latest trade price and volume data. If no strike, range, expiration, from, or to selector is provided, range=1000 is applied internally. If the response includes next_token, request the next page by sending the same filters plus next_token. Futures options are not currently supported by this endpoint.

Example

BASH
GET https://api.insightsentry.com/v3/options/contracts?code=NASDAQ:AAPL

Response includes matching option contracts:

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 last_price. If no strike, range, expiration, from, or to selector is provided, range=1000 is applied internally.
  • 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

Option Snapshot Endpoint

Use /v3/options/snapshot to retrieve current market snapshots for option contracts on a supported underlying symbol.

Snapshot rows include the option code, previous daily bar, current daily bar, latest quote, and latest trade when those values are available. Timestamps are Unix timestamps in milliseconds. The endpoint supports the same public filters as /v3/options/contracts. If no strike, range, expiration, from, or to selector is provided, range=1000 is applied internally. If the response includes next_token, request the next page by sending the same filters plus next_token. Futures options are not currently supported by this endpoint.

Example

BASH
GET https://api.insightsentry.com/v3/options/snapshot?code=NASDAQ:AAPL&expiration=2026-05-15&type=call&range=10

Response includes matching option snapshots:

JSON
{
  "underlying_code": "NASDAQ:AAPL",
  "last_price": 200,
  "next_token": "MTAw",
  "data": [
    {
      "code": "OPRA:AAPL260515C45.0",
      "prev": {
        "time": 1778731200000,
        "open": 253.45,
        "high": 254.04,
        "low": 253.45,
        "close": 253.63,
        "volume": 8,
        "trade_count": 8,
        "vwap": 253.79
      },
      "daily": {
        "time": 1778817600000,
        "open": 256.45,
        "high": 256.65,
        "low": 255.78,
        "close": 255.78,
        "volume": 9,
        "trade_count": 9,
        "vwap": 256.39
      },
      "latest_quote": {
        "time": 1778875199955,
        "ask": 256.55,
        "ask_size": 2,
        "bid": 253.6,
        "bid_size": 156
      },
      "latest_trade": {
        "time": 1778872941603,
        "last_price": 255.78,
        "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 last_price. If no strike, range, expiration, from, or to selector is provided, range=1000 is applied internally.
  • 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

Options endpoints support US stocks, ETFs, indices, and selected futures option workflows. Use /v3/options/contracts to discover contract metadata, /v3/options/snapshot to retrieve current option snapshots, and /v3/options/quotes to query filtered option quote rows for supported stock, ETF, and index underlyings. /v3/options/contracts and /v3/options/snapshot currently do not support futures options.

US stock, ETF, and index option contracts use OPRA: codes. Futures option codes use their futures exchange prefix and must be built from specific futures contracts.

Recommended Workflow:

  • Use /v3/options/contracts to view available contracts for a supported stock, ETF, or index underlying.
  • Use /v3/options/quotes to view option quote rows filtered by expiration, strike, range, and type.
  • Use /v3/options/snapshot when you need current daily bars, bid/ask, and latest trade data in one response.
  • Use returned OPRA: contract codes with /v3/symbols/quotes for the latest trade price or /v3/symbols/:symbol/series for historical bar data.

Using OPRA Option Codes

The options endpoints return contract codes such as OPRA:AAPL270618P325.0. Pass those codes directly to the standard quote and series endpoints.

For latest trade price, bid/ask, and volume, call /v3/symbols/quotes. For historical OHLCV bars, call /v3/symbols/:symbol/series.

Practical Workflow

Example 1: View Contracts

1. Search for the underlying: GET /v3/symbols/search?query=AAPL&type=stock&country=US

2. List available contracts: GET /v3/options/contracts?code=NASDAQ:AAPL&type=call&range=10

Example 2: View Option Snapshots

Retrieve current snapshots near the underlying price: GET /v3/options/snapshot?code=NASDAQ:AAPL&type=call&range=10

Example 3: View Filtered Option Quotes

Filter by expiration range: GET /v3/options/quotes?code=NASDAQ:AAPL&from=2026-06-01&to=2026-12-31&type=call&range=10

Filter by strike: GET /v3/options/quotes?code=NASDAQ:AAPL&strike=210&type=put

Futures Options

  • Use specific futures contract codes such as CME_MINI:NQU2027.
  • Continuous futures codes such as CME_MINI:NQ1! are not option contract roots.
  • Each futures contract has its own set of options.
  • Options expire before the underlying futures contract.

5. Understanding Option Codes

Option Code Structure

Option codes contain embedded information about the option type, expiration date, and strike price.

Understanding this structure helps you interpret and construct option codes programmatically.

Code Format Breakdown

ExchangeSymbolExpirationTypeStrike
OPRA:AAPL270618P325.0
CME_MINI:NQ270618P24450

Format Examples

Equity Option (AAPL Put):

OPRA:AAPL270618P325.0

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

Futures Option (NASDAQ Mini Put):

CME_MINI:NQ270618P24450

  • CME_MINI: CME futures exchange
  • NQ: NASDAQ 100 E-mini futures
  • 270618: Expires June 18, 2027 (YYMMDD)
  • P: Put option
  • 24450: Strike price 24,450 index points

Option Type Codes

C = Call option (right to buy)

P = Put option (right to sell)

6. Option Chains

Filtering Option Data

Use /v3/options/quotes to query current option quote rows by expiration, strike, strike range, and option type.

The endpoint returns 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=1000 is applied internally. If strike and range are both provided, strike takes precedence.

Options Quotes Endpoint

Query by exact expiration date:

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

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

You can sort the results using sortBy and sort parameters:

BASH
GET https://api.insightsentry.com/v3/options/quotes?code=NASDAQ:AAPL&expiration=2027-06-17&sortBy=strike_price&sort=asc
Available Sort Fields (sortBy):
typeask_pricebid_pricedeltagammaexpirationimplied_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 last_price. If no strike, range, expiration, from, or to selector is provided, range=1000 is applied internally.
  • 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

Returns option quote rows for the requested filters:

JSON
{
  "underlying_code": "NASDAQ:AAPL",
  "last_update": 1756912027000,
  "data": [
    {
      "code": "OPRA:AAPL270617C150.0",
      "ask_price": 12.5,
      "bid_price": 12.0,
      "delta": 0.65,
      "gamma": 0.02,
      "implied_volatility": 0.25,
      "type": "CALL",
      "rho": 0.08,
      "strike_price": 150,
      "theoretical_price": 12.25,
      "theta": -0.05,
      "vega": 0.15,
      "bid_iv": 0.24,
      "ask_iv": 0.26,
      "expiration": 20270617
    },
    {
      "code": "OPRA:AAPL270617P150.0",
      "ask_price": 8.2,
      "bid_price": 7.8,
      "delta": -0.35,
      "gamma": 0.02,
      "implied_volatility": 0.23,
      "type": "PUT",
      "rho": -0.06,
      "strike_price": 150,
      "theoretical_price": 8.0,
      "theta": -0.04,
      "vega": 0.15,
      "bid_iv": 0.22,
      "ask_iv": 0.24,
      "expiration": 20270617
    }
  ]
}

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

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

type: "CALL" or "PUT"

Common Quote Filters

Expiration Range

Useful for analyzing options expiring around earnings announcements or other specific events. Sort by strike_price to scan contracts inside the requested 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. Real-time Quotes

Getting Real-time Option Prices

Once you have option codes, retrieve real-time pricing and volume data using the /v3/symbols/quotes endpoint.

This endpoint provides current bid/ask prices, last trade information, and trading volume for option contracts. It accepts option codes and regular symbol codes in the same 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:AAPL271219C145.0,OPRA:AAPL271218P50.0

Response includes real-time data for each option:

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:AAPL271219C145.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:AAPL261218P50.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

Retrieve historical price (up to 30k data points) and volume data for option contracts using the /v3/symbols/:symbol/series endpoint.

This endpoint provides OHLCV (Open, High, Low, Close, Volume) data for analyzing option price movements over time. The long_poll parameter can wait briefly for a real-time update before the response is returned.

Important Limitations

Historical options data has the following restrictions:

  • Expired options are NOT supported
  • Futures options are NOT supported
  • Only equity options are currently available
  • Options must still be active and trading

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

Response provides OHLCV data with timestamps:

JSON
{
  "code": "OPRA:AAPL271217P205.0",
  "bar_end": 1733432340.0,
  "last_update": 1733432400000,
  "_ct": 1733432401234,
  "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 from /v3/options/contracts
  • 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)
  • long_poll (optional): Wait up to 3 additional seconds for real-time data before responding (default: false)
  • 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)