ApexVol Options chain API

The Options chain API from ApexVol — 6 operation(s) for options chain.

Operations 6

GET /api/mcp/data/chain-at-time/{ticker} Historical EOD chain snapshot for a past trade date — how the chain was priced… #
GET /api/mcp/data/chain/{ticker} Formatted options chain(s) #
GET /api/mcp/data/expirations/{ticker} Available expiration dates #
GET /api/mcp/data/options-by-delta/{ticker} The contract closest to a target delta: strike, actual delta, IV, bid/ask/mid #
GET /api/mcp/data/stock/{ticker} Current price (live quote mid) and company stats #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apexvol-com:apexvol-com-options-chain-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

apexvol-com-options-chain-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Options-analytics API (token surface). Auth: `Authorization: Bearer avmcp_` on every request; tokens are issued to any paid or trial plan from Basic, and each endpoint follows the same tier as the web app. Rate limits: 60/min and 1,000/hr per token, plus a monthly allowance per account measured in upstream data requests, by plan. The remaining counts come back in the X-RateLimit-* and X-Monthly-Budget-Remaining headers on every response, and GET /api/mcp/data/me/usage returns the month''s meter with a per-endpoint breakdown. IV values are percentage points unless a payload says otherwise (`iv_units`). The same endpoints power the ApexVol MCP server for AI assistants: `pipx install apexvol-mcp` (PyPI), setup at https://apexvol.com/mcp. Docs: https://apexvol.com/docs/api.'
  title: ApexVol Options chain API
  version: '1.30'
servers:
- url: https://apexvol.com
security:
- bearerAuth: []
tags:
- name: Options chain
paths:
  /api/mcp/data/chain-at-time/{ticker}:
    get:
      description: 'Historical EOD chain snapshot for a past trade date — how the chain was priced on that day.


        **Query parameters:** expiration (required, YYYY-MM-DD) · trade_date (required, YYYY-MM-DD)


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "calls": [

        {

        "ask": 4.75,

        "bid": 4.69,

        "delta": 0.5747,

        "epsilon": -0.0857,

        "expiration": "2026-08-21",

        "gamma": 0.0436,

        "implied_vol": 0.0895,

        "open_interest": 54326,

        "rho": 0.0848,

        "right": "C",

        "strike": 775,

        "theta": -0.3008,

        "underlying_price": 776.07,

        "vega": 0.4203,

        "volume": 6045

        },

        {

        "ask": 4.14,

        "bid": 4.12,

        "delta": 0.5315,

        "epsilon": -0.0792,

        "expiration": "2026-08-21",

        "gamma": 0.0452,

        "implied_vol": 0.0885,

        "open_interest": 5227,

        "rho": 0.0785,

        "right": "C",

        "strike": 776,

        "theta": -0.2954,

        "underlying_price": 776.07,

        "vega": 0.4277,

        "volume": 8446

        },

        {

        "ask": 3.59,

        "bid": 3.57,

        "delta": 0.486,

        "epsilon": -0.0724,

        "expiration": "2026-08-21",

        "gamma": 0.0462,

        "implied_vol": 0.0874,

        "open_interest": 5722,

        "rho": 0.0718,

        "right": "C",

        "strike": 777,

        "theta": -0.2877,

        "underlying_price": 776.07,

        "vega": 0.427,

        "volume": 15012

        }

        ],

        "expiration": "2026-08-21",

        "puts": [

        {

        "ask": 3.13,

        "bid": 3.12,

        "delta": -0.4253,

        "epsilon": -0.0857,

        "expiration": "2026-08-21",

        "gamma": 0.0436,

        "implied_vol": 0.09,

        "open_interest": 6989,

        "rho": -0.0637,

        "right": "P",

        "strike": 775,

        "theta": -0.3008,

        "underlying_price": 776.07,

        "vega": 0.4203,

        "volume": 17977

        },

        {

        "ask": 3.55,

        "bid": 3.53,

        "delta": -0.4685,

        "epsilon": -0.0792,

        "expiration": "2026-08-21",

        "gamma": 0.0452,

        "implied_vol": 0.0889,

        "open_interest": 1969,

        "rho": -0.0702,

        "right": "P",

        "strike": 776,

        "theta": -0.2954,

        "underlying_price": 776.07,

        "vega": 0.4277,

        "volume": 8064

        },

        {

        "ask": 4.0,

        "bid": 3.98,

        "delta": -0.514,

        "epsilon": -0.0724,

        "expiration": "2026-08-21",

        "gamma": 0.0462,

        "implied_vol": 0.0877,

        "open_interest": 2999,

        "rho": -0.0771,

        "right": "P",

        "strike": 777,

        "theta": -0.2877,

        "underlying_price": 776.07,

        "vega": 0.427,

        "volume": 8247

        }

        ],

        "ticker": "SPY",

        "time_of_day": "EOD",

        "trade_date": "2026-08-14",

        "underlying_price": 776.07

        }

        }

        ```'
      operationId: get_chain_at_time_by_ticker
      parameters:
      - in: path
        name: ticker
        required: true
        schema:
          type: string
      - description: 'The expiration to fetch. Range: YYYY-MM-DD.'
        in: query
        name: expiration
        required: true
        schema:
          format: date
          type: string
      - description: 'The day whose close to use. Range: YYYY-MM-DD, a past trading day.'
        in: query
        name: trade_date
        required: true
        schema:
          format: date
          type: string
      - description: 'Strikes kept each side of spot under compact detail (0 keeps every strike). Range: 0 to 500.'
        in: query
        name: strikes_around
        required: false
        schema:
          default: 20
          maximum: 500
          minimum: 0
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetChainAtTimeByTickerResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: Historical EOD chain snapshot for a past trade date — how the chain was priced…
      tags:
      - Options chain
  /api/mcp/data/chain/{ticker}:
    get:
      description: 'Formatted options chain(s). {ticker, stock_price, expirations, chains, strike_window}. Defaults to the nearest expiration and a near-the-money strike window; strike_window.truncated tells you when rows were trimmed.


        **Query parameters:** expiration (optional, YYYY-MM-DD; overrides num_expirations) · num_expirations (optional, default 1, max 10) · strikes_around (optional, default 20 strikes per side of the money; 0 = full chain)


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "chains": {

        "2026-09-09": [

        {

        "Call Ask": 4.55,

        "Call Bid": 4.45,

        "Delta Call": 0.6607,

        "Delta Put": -0.3393,

        "Epsilon Call": -0.0208,

        "Epsilon Put": -0.0208,

        "Extrinsic Call": 1.7,

        "Extrinsic Put": 1.62,

        "Gamma Call": 0.0509,

        "Gamma Put": 0.0509,

        "IV Call": 0.266,

        "IV Put": 0.2645,

        "IVx Call": 0.7382,

        "IVx Put": 1.9192,

        "OI Call": 5032,

        "OI Put": 1774,

        "Put Ask": 1.64,

        "Put Bid": 1.61,

        "Rho Call": 0.0202,

        "Rho Put": -0.0109,

        "Strike": 227.5,

        "Theta Call": -0.2734,

        "Theta Put": -0.2734,

        "Vega Call": 0.1003,

        "Vega Put": 0.1003,

        "Volume Call": 5829,

        "Volume Put": 17517

        },

        {

        "Call Ask": 3.0,

        "Call Bid": 2.92,

        "Delta Call": 0.5266,

        "Delta Put": -0.4734,

        "Epsilon Call": -0.0166,

        "Epsilon Put": -0.0166,

        "Extrinsic Call": 2.66,

        "Extrinsic Put": 2.62,

        "Gamma Call": 0.0568,

        "Gamma Put": 0.0568,

        "IV Call": 0.258,

        "IV Put": 0.2594,

        "IVx Call": 1.155,

        "IVx Put": 1.2679,

        "OI Call": 20341,

        "OI Put": 1454,

        "Put Ask": 2.65,

        "Put Bid": 2.58,

        "Rho Call": 0.0162,

        "Rho Put": -0.0153,

        "Strike": 230.0,

        "Theta Call": -0.2871,

        "Theta Put": -0.2871,

        "Vega Call": 0.1074,

        "Vega Put": 0.1074,

        "Volume Call": 34581,

        "Volume Put": 35665

        },

        {

        "Call Ask": 1.85,

        "Call Bid": 1.81,

        "Delta Call": 0.3856,

        "Delta Put": -0.6144,

        "Epsilon Call": -0.0122,

        "Epsilon Put": -0.0122,

        "Extrinsic Call": 1.83,

        "Extrinsic Put": 1.75,

        "Gamma Call": 0.0552,

        "Gamma Put": 0.0552,

        "IV Call": 0.2561,

        "IV Put": 0.254,

        "IVx Call": 1.7499,

        "IVx Put": 0.7599,

        "OI Call": 7568,

        "OI Put": 226,

        "Put Ask": 4.0,

        "Put Bid": 3.9,

        "Rho Call": 0.0119,

        "Rho Put": -0.0199,

        "Strike": 232.5,

        "Theta Call": -0.2719,

        "Theta Put": -0.2719,

        "Vega Call": 0.1021,

        "Vega Put": 0.1021,

        "Volume Call": 46211,

        "Volume Put": 24057

        }

        ]

        },

        "data_type": "LIVE",

        "expirations": [

        "2026-09-09"

        ],

        "stock_price": 230.3,

        "strike_window": {

        "note": "Chain trimmed to strikes nearest the money; pass strikes_around=0 for the full chain.",

        "strikes_around": 20,

        "truncated": true

        },

        "ticker": "NVDA"

        }

        }

        ```'
      operationId: get_chain_by_ticker
      parameters:
      - in: path
        name: ticker
        required: true
        schema:
          type: string
      - description: 'Which expiration to use. Defaults to the nearest one. Range: YYYY-MM-DD, a listed expiration.'
        in: query
        name: expiration
        required: false
        schema:
          default: nearest
          format: date
          type: string
      - description: 'How many expirations when expiration is not set. Range: 1 to 10.'
        in: query
        name: num_expirations
        required: false
        schema:
          default: 1
          maximum: 10
          minimum: 1
          type: integer
      - description: 'Strikes per side of the money to keep. Range: 0 for the full chain.'
        in: query
        name: strikes_around
        required: false
        schema:
          default: 20
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetChainByTickerResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: Formatted options chain(s)
      tags:
      - Options chain
  /api/mcp/data/expirations/{ticker}:
    get:
      description: 'Available expiration dates.


        **Query parameters:** —


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "expirations": [

        "2026-09-09",

        "2026-09-11",

        "2026-09-14"

        ]

        }

        }

        ```'
      operationId: get_expirations_by_ticker
      parameters:
      - in: path
        name: ticker
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetExpirationsByTickerResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: Available expiration dates
      tags:
      - Options chain
  /api/mcp/data/options-by-delta/{ticker}:
    get:
      description: 'The contract closest to a target delta: strike, actual delta, IV, bid/ask/mid. iv is the chain row''s decimal (0.2592) and is declared as iv_units: decimal; iv_pct carries the same value in percentage points (25.92).


        **Query parameters:** delta (default 0.30), option_type ∈ call | put (default call), expiration (optional)


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "actual_delta": 0.2609,

        "ask": 1.08,

        "bid": 1.05,

        "expiration": "2026-09-09",

        "iv": 0.2569,

        "iv_pct": 25.69,

        "iv_units": "decimal",

        "mid": 1.065,

        "option_type": "call",

        "stock_price": 230.3,

        "strike": 235.0,

        "target_delta": 0.3,

        "ticker": "NVDA"

        }

        }

        ```'
      operationId: get_options_by_delta_by_ticker
      parameters:
      - in: path
        name: ticker
        required: true
        schema:
          type: string
      - description: 'Target absolute delta. Range: 0.01 to 0.99.'
        in: query
        name: delta
        required: false
        schema:
          default: 0.3
          maximum: 0.99
          minimum: 0.01
          type: number
      - description: 'Which side. Range: call or put.'
        in: query
        name: option_type
        required: false
        schema:
          default: call
          enum:
          - call
          - put
          type: string
      - description: 'Which expiration to use. Defaults to the nearest one. Range: YYYY-MM-DD, a listed expiration.'
        in: query
        name: expiration
        required: false
        schema:
          default: nearest
          format: date
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetOptionsByDeltaByTickerResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: 'The contract closest to a target delta: strike, actual delta, IV, bid/ask/mid'
      tags:
      - Options chain
  /api/mcp/data/search:
    get:
      description: 'Ticker search / validation over the platform''s coverage universe — resolve company names to symbols and check support before deeper calls.


        **Query parameters:** q (required) · limit (default 8, max 20)


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "count": 1,

        "exact_match": null,

        "query": "nvidia",

        "results": [

        {

        "market_cap_tier": "Mega Cap",

        "name": "NVIDIA Corporation",

        "sector": "Technology",

        "symbol": "NVDA"

        }

        ],

        "supported": false

        }

        }

        ```'
      operationId: get_search
      parameters:
      - description: 'Company name or symbol fragment. Range: text.'
        in: query
        name: q
        required: true
        schema:
          type: string
      - description: 'Maximum matches. Range: 1 to 20.'
        in: query
        name: limit
        required: false
        schema:
          default: 8
          maximum: 20
          minimum: 1
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetSearchResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: Ticker search / validation over the platform's coverage universe — resolve…
      tags:
      - Options chain
  /api/mcp/data/stock/{ticker}:
    get:
      description: 'Current price (live quote mid) and company stats. Carries company_name from the coverage registry when the ticker is known; bid/ask are not part of this payload (price is the mid of the nearest-expiration parity quote).


        **Query parameters:** —


        **Response shape:**

        ```json

        {

        "success": true,

        "data": {

        "beta": "1.93",

        "company_name": "NVIDIA Corporation",

        "earnings_date": null,

        "industry": "Technology",

        "market_cap": "$5.56T",

        "price": 230.3,

        "sector": "Technology",

        "volume": "6,443,150"

        }

        }

        ```'
      operationId: get_stock_by_ticker
      parameters:
      - in: path
        name: ticker
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/GetStockByTickerResponse'
                  success:
                    type: boolean
                type: object
          description: 'Success: payload under `data` with `success: true`.'
        '400':
          description: A parameter is malformed; the error names it.
        '401':
          description: Missing, invalid, expired or revoked token.
        '403':
          description: The endpoint needs a higher plan than the token's owner has (required_tier in the body).
        '404':
          description: Unknown path (did_you_mean in the body) or a symbol with no listed options.
        '424':
          description: The data feed did not answer for this symbol; retry.
        '429':
          description: Per-token rate limit or the monthly allowance (budget_exceeded). Retry-After says how long, in seconds.
      summary: Current price (live quote mid) and company stats
      tags:
      - Options chain
components:
  schemas:
    GetChainAtTimeByTickerResponse:
      properties:
        calls:
          items:
            properties:
              ask:
                type: number
              bid:
                type: number
              delta:
                type: number
              epsilon:
                type: number
              expiration:
                type: string
              gamma:
                type: number
              implied_vol:
                type: number
              open_interest:
                type: integer
              rho:
                type: number
              right:
                type: string
              strike:
                type: integer
              theta:
                type: number
              underlying_price:
                type: number
              vega:
                type: number
              volume:
                type: integer
            type: object
          type: array
        expiration:
          type: string
        puts:
          items:
            properties:
              ask:
                type: number
              bid:
                type: number
              delta:
                type: number
              epsilon:
                type: number
              expiration:
                type: string
              gamma:
                type: number
              implied_vol:
                type: number
              open_interest:
                type: integer
              rho:
                type: number
              right:
                type: string
              strike:
                type: integer
              theta:
                type: number
              underlying_price:
                type: number
              vega:
                type: number
              volume:
                type: integer
            type: object
          type: array
        ticker:
          type: string
        time_of_day:
          type: string
        trade_date:
          type: string
        underlying_price:
          type: number
      type: object
    GetStockByTickerResponse:
      properties:
        beta:
          type: string
        company_name:
          type: string
        earnings_date:
          type:
          - string
          - 'null'
        industry:
          type: string
        market_cap:
          type: string
        price:
          type: number
        sector:
          type: string
        volume:
          type: string
      type: object
    GetSearchResponse:
      properties:
        count:
          type: integer
        exact_match:
          type:
          - string
          - 'null'
        query:
          type: string
        results:
          items:
            properties:
              market_cap_tier:
                type: string
              name:
                type: string
              sector:
                type: string
              symbol:
                type: string
            type: object
          type: array
        supported:
          type: boolean
      type: object
    GetChainByTickerResponse:
      properties:
        chains:
          properties:
            '2026-09-09':
              items:
                properties:
                  Call Ask:
                    type: number
                  Call Bid:
                    type: number
                  Delta Call:
                    type: number
                  Delta Put:
                    type: number
                  Epsilon Call:
                    type: number
                  Epsilon Put:
                    type: number
                  Extrinsic Call:
                    type: number
                  Extrinsic Put:
                    type: number
                  Gamma Call:
                    type: number
                  Gamma Put:
                    type: number
                  IV Call:
                    type: number
                  IV Put:
                    type: number
                  IVx Call:
                    type: number
                  IVx Put:
                    type: number
                  OI Call:
                    type: integer
                  OI Put:
                    type: integer
                  Put Ask:
                    type: number
                  Put Bid:
                    type: number
                  Rho Call:
                    type: number
                  Rho Put:
                    type: number
                  Strike:
                    type: number
                  Theta Call:
                    type: number
                  Theta Put:
                    type: number
                  Vega Call:
                    type: number
                  Vega Put:
                    type: number
                  Volume Call:
                    type: integer
                  Volume Put:
                    type: integer
                type: object
              type: array
          type: object
        data_type:
          type: string
        expirations:
          items:
            type: string
          type: array
        stock_price:
          type: number
        strike_window:
          properties:
            note:
              type: string
            strikes_around:
              type: integer
            truncated:
              type: boolean
          type: object
        ticker:
          type: string
      type: object
    GetOptionsByDeltaByTickerResponse:
      properties:
        actual_delta:
          type: number
        ask:
          type: number
        bid:
          type: number
        expiration:
          type: string
        iv:
          type: number
        iv_pct:
          type: number
        iv_units:
          type: string
        mid:
          type: number
        option_type:
          type: string
        stock_price:
          type: number
        strike:
          type: number
        target_delta:
          type: number
        ticker:
          type: string
      type: object
    GetExpirationsByTickerResponse:
      properties:
        expirations:
          items:
            type: string
          type: array
      type: object
  securitySchemes:
    bearerAuth:
      description: ApexVol API token (avmcp_...) from apexvol.com/account, API Access.
      scheme: bearer
      type: http