EOD Historical Data Options API

Options contracts and pricing data

OpenAPI Specification

eod-historical-options-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: EODHD Financial Data Calendar Options API
  description: Comprehensive API for retrieving financial data including stock prices, fundamentals, calendar events, news, and more from EOD Historical Data (eodhd.com)
  version: 2.0.0
  contact:
    name: EODHD Support
    url: https://eodhd.com
    email: supportlevel1@eodhistoricaldata.com
  termsOfService: https://eodhd.com/financial-apis/terms-conditions
  license:
    name: Proprietary
    url: https://eodhd.com/financial-apis/terms-conditions
servers:
- url: https://eodhd.com/api
  description: Primary API path
- url: https://eodhistoricaldata.com/api
  description: Alternative API path
security:
- EODHDQueryKey: []
tags:
- name: Options
  description: Options contracts and pricing data
paths:
  /mp/unicornbay/options/contracts:
    get:
      summary: Get options contracts
      description: Fetch options contracts filtered by underlying symbol, expiration, strike, type, or contract name. Supports sorting, pagination, and field selection.
      operationId: getOptionsContracts
      parameters:
      - name: filter[contract]
        in: query
        schema:
          type: string
        description: Exact contract name, e.g., AAPL270115P00450000
      - name: filter[underlying_symbol]
        in: query
        schema:
          type: string
        description: Underlying symbol, e.g., AAPL
      - name: filter[exp_date_eq]
        in: query
        schema:
          type: string
        description: Expiration equals (YYYY-MM-DD)
      - name: filter[exp_date_from]
        in: query
        schema:
          type: string
        description: Expiration from (YYYY-MM-DD)
      - name: filter[exp_date_to]
        in: query
        schema:
          type: string
        description: Expiration to (YYYY-MM-DD)
      - name: filter[tradetime_eq]
        in: query
        schema:
          type: string
        description: Trade time equals (YYYY-MM-DD)
      - name: filter[tradetime_from]
        in: query
        schema:
          type: string
        description: Trade time from (YYYY-MM-DD)
      - name: filter[tradetime_to]
        in: query
        schema:
          type: string
        description: Trade time to (YYYY-MM-DD)
      - name: filter[type]
        in: query
        schema:
          type: string
          enum:
          - put
          - call
        description: Option type
      - name: filter[strike_eq]
        in: query
        schema:
          type: number
        description: Strike equals
      - name: filter[strike_from]
        in: query
        schema:
          type: number
        description: Strike from
      - name: filter[strike_to]
        in: query
        schema:
          type: number
        description: Strike to
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - exp_date
          - strike
          - -exp_date
          - -strike
        description: Sort by expiration date or strike (asc/desc).
      - name: page[offset]
        in: query
        schema:
          type: integer
          minimum: 0
          maximum: 10000
          default: 0
        description: Pagination offset (records to skip). Max 10000.
      - name: page[limit]
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 1000
        description: Pagination limit. Default & max 1000.
      - name: fields[options-contracts]
        in: query
        schema:
          type: string
        description: CSV of fields to include (e.g., contract,exp_date,strike).
      - name: fmt
        in: query
        schema:
          type: string
          enum:
          - json
          - xml
          default: json
        description: Response format.
      - name: api_token
        in: query
        required: true
        description: API token for authentication.
        schema:
          type: string
      responses:
        '200':
          description: Contracts list.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OptionsContractsResponse'
              examples:
                sample:
                  summary: AAPL, 5 newest expirations
                  value:
                    meta:
                      offset: 0
                      limit: 5
                      total: 14394
                      fields:
                      - contract
                      - underlying_symbol
                      - exp_date
                      - expiration_type
                      - type
                      - strike
                      - exchange
                      - currency
                      - open
                      - high
                      - low
                      - last
                      - last_size
                      - change
                      - pctchange
                      - previous
                      - previous_date
                      - bid
                      - bid_date
                      - bid_size
                      - ask
                      - ask_date
                      - ask_size
                      - moneyness
                      - volume
                      - volume_change
                      - volume_pctchange
                      - open_interest
                      - open_interest_change
                      - open_interest_pctchange
                      - volatility
                      - volatility_change
                      - volatility_pctchange
                      - theoretical
                      - delta
                      - gamma
                      - theta
                      - vega
                      - rho
                      - tradetime
                      - vol_oi_ratio
                      - dte
                      - midpoint
                    data:
                    - id: AAPL271217C00420000
                      type: options-contracts
                      attributes:
                        contract: AAPL271217C00420000
                        underlying_symbol: AAPL
                        exp_date: '2027-12-17'
                        expiration_type: monthly
                        type: call
                        strike: 420
                        exchange: NASDAQ
                        currency: USD
                        open: 3.35
                        high: 3.35
                        low: 3.29
                        last: 3.29
                        last_size: 1
                        change: 0.09
                        pctchange: 2.81
                        previous: 3.2
                        previous_date: '2025-08-11'
                        bid: 2.85
                        bid_date: '2025-08-12 20:00:00'
                        bid_size: 58
                        ask: 4.4
                        ask_date: '2025-08-12 20:00:00'
                        ask_size: 173
                        moneyness: -0.83
                        volume: 4
                        volume_change: -5
                        volume_pctchange: -55.56
                        open_interest: 299
                        open_interest_change: 7
                        open_interest_pctchange: 2.4
                        volatility: 0.2337
                        volatility_change: -0.0023
                        volatility_pctchange: -0.99
                        theoretical: 3.29
                        delta: 0.097466
                        gamma: 0.002088
                        theta: -0.00993
                        vega: 0.604392
                        rho: 0.448547
                        tradetime: '2025-08-12'
                        vol_oi_ratio: 0.01
                        dte: 857
                        midpoint: 3.63
                    links:
                      next: https://eodhd.com/api/mp/unicornbay/options/contracts?sort=-exp_date&filter[underlying_symbol]=AAPL&page[offset]=5&page[limit]=5
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Options
  /mp/unicornbay/options/eod:
    get:
      summary: Get end-of-day options data
      description: Returns EOD trades/bid data for options, with the same filter set as contracts. Supports compact mode (`compact=1`) to return arrays instead of objects.
      operationId: getOptionsEOD
      parameters:
      - name: filter[contract]
        in: query
        schema:
          type: string
        description: Exact contract name, e.g., AAPL270115P00450000
      - name: filter[underlying_symbol]
        in: query
        schema:
          type: string
        description: Underlying symbol, e.g., AAPL
      - name: filter[exp_date_eq]
        in: query
        schema:
          type: string
        description: Expiration equals (YYYY-MM-DD)
      - name: filter[exp_date_from]
        in: query
        schema:
          type: string
        description: Expiration from (YYYY-MM-DD)
      - name: filter[exp_date_to]
        in: query
        schema:
          type: string
        description: Expiration to (YYYY-MM-DD)
      - name: filter[tradetime_eq]
        in: query
        schema:
          type: string
        description: Trade time equals (YYYY-MM-DD)
      - name: filter[tradetime_from]
        in: query
        schema:
          type: string
        description: Trade time from (YYYY-MM-DD)
      - name: filter[tradetime_to]
        in: query
        schema:
          type: string
        description: Trade time to (YYYY-MM-DD)
      - name: filter[type]
        in: query
        schema:
          type: string
          enum:
          - put
          - call
        description: Option type
      - name: filter[strike_eq]
        in: query
        schema:
          type: number
        description: Strike equals
      - name: filter[strike_from]
        in: query
        schema:
          type: number
        description: Strike from
      - name: filter[strike_to]
        in: query
        schema:
          type: number
        description: Strike to
      - name: sort
        in: query
        schema:
          type: string
          enum:
          - exp_date
          - strike
          - -exp_date
          - -strike
        description: Sort by expiration date or strike (asc/desc).
      - name: page[offset]
        in: query
        schema:
          type: integer
          minimum: 0
          maximum: 10000
          default: 0
        description: Pagination offset (records to skip). Max 10000.
      - name: page[limit]
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 1000
        description: Pagination limit. Default & max 1000.
      - name: fields[options-eod]
        in: query
        schema:
          type: string
        description: CSV of fields to include (e.g., contract,exp_date,strike).
      - name: compact
        in: query
        schema:
          type: integer
          enum:
          - 0
          - 1
          default: 0
        description: Set 1 for compact mode (rows as arrays in `data`, columns = `meta.fields`).
      - name: fmt
        in: query
        schema:
          type: string
          enum:
          - json
          - xml
          default: json
        description: Response format.
      - name: api_token
        in: query
        required: true
        description: API token for authentication.
        schema:
          type: string
      responses:
        '200':
          description: EOD options data (standard or compact).
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/OptionsEODResponse'
                - $ref: '#/components/schemas/OptionsEODCompactResponse'
              examples:
                standard:
                  summary: Standard JSON (objects)
                  value:
                    meta:
                      offset: 0
                      limit: 5
                      total: 227
                      fields:
                      - contract
                      - underlying_symbol
                      - exp_date
                      - expiration_type
                      - type
                      - strike
                      - exchange
                      - currency
                      - open
                      - high
                      - low
                      - last
                      - last_size
                      - change
                      - pctchange
                      - previous
                      - previous_date
                      - bid
                      - bid_date
                      - bid_size
                      - ask
                      - ask_date
                      - ask_size
                      - moneyness
                      - volume
                      - volume_change
                      - volume_pctchange
                      - open_interest
                      - open_interest_change
                      - open_interest_pctchange
                      - volatility
                      - volatility_change
                      - volatility_pctchange
                      - theoretical
                      - delta
                      - gamma
                      - theta
                      - vega
                      - rho
                      - tradetime
                      - vol_oi_ratio
                      - dte
                      - midpoint
                    data:
                    - id: AAPL270115P00450000-2025-08-12
                      type: options-eod
                      attributes:
                        contract: AAPL270115P00450000
                        underlying_symbol: AAPL
                        exp_date: '2027-01-15'
                        expiration_type: monthly
                        type: put
                        strike: 450
                        exchange: NASDAQ
                        currency: USD
                        open: 0
                        high: 0
                        low: 0
                        last: 245.9
                        last_size: 0
                        change: 0
                        pctchange: 0
                        previous: 0
                        previous_date: ''
                        bid: 218.4
                        bid_date: '2025-08-12 19:59:59'
                        bid_size: 115
                        ask: 222.2
                        ask_date: '2025-08-12 19:59:59'
                        ask_size: 17
                        moneyness: 0.96
                        volume: 0
                        volume_change: 0
                        volume_pctchange: 0
                        open_interest: 0
                        open_interest_change: 0
                        open_interest_pctchange: 0
                        volatility: 0.4863
                        volatility_change: 0
                        volatility_pctchange: 0
                        theoretical: 222.2
                        delta: -0.877218
                        gamma: 0.001594
                        theta: -0.012408
                        vega: 0.482281
                        rho: -1
                        tradetime: '2025-06-08'
                        vol_oi_ratio: 0
                        dte: 521
                        midpoint: 220.3
                    links:
                      next: https://eodhd.com/api/mp/unicornbay/options/eod?sort=-exp_date&filter[contract]=AAPL270115P00450000&page[offset]=5&page[limit]=5
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Options
  /mp/unicornbay/options/underlying-symbols:
    get:
      summary: List underlying symbols with options
      description: Returns the list of all supported stock symbols for which option contracts are available. May be paginated.
      operationId: listUnderlyingSymbols
      parameters:
      - name: page[offset]
        in: query
        schema:
          type: integer
          minimum: 0
          maximum: 10000
          default: 0
        description: Pagination offset (records to skip).
      - name: page[limit]
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 1000
          default: 1000
        description: Pagination limit. Default & max 1000.
      - name: fmt
        in: query
        schema:
          type: string
          enum:
          - json
          - xml
          default: json
        description: Response format.
      - name: api_token
        in: query
        required: true
        description: API token for authentication.
        schema:
          type: string
      responses:
        '200':
          description: Supported underlying symbols.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnderlyingSymbolsResponse'
              examples:
                sample:
                  summary: First page (truncated)
                  value:
                    meta:
                      total: 5972
                      fields:
                      - underlying_symbol
                      compact: true
                    data:
                    - A
                    - AA
                    - AAAU
                    - AACT
                    - AADI
                    - AAL
                    - AAMI
                    - AAN
                    - AAOI
                    - AAON
                    - AAP
                    - AAPL
                    links:
                      next: ''
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      tags:
      - Options
components:
  schemas:
    Links:
      type: object
      required:
      - next
      properties:
        next:
          type:
          - string
          - 'null'
          description: URL to fetch the next page, or null if last page.
      additionalProperties: false
    OptionsEODCompactResponse:
      type: object
      required:
      - meta
      - data
      - links
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            type: array
            items:
              type:
              - string
              - number
              - integer
              - 'null'
            description: Row aligned to columns listed in meta.fields.
        links:
          $ref: '#/components/schemas/Links'
      additionalProperties: false
    UnderlyingSymbolsResponse:
      type: object
      required:
      - meta
      - data
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            type: string
        links:
          $ref: '#/components/schemas/Links'
      additionalProperties: false
    OptionsEODItem:
      type: object
      required:
      - id
      - type
      - attributes
      properties:
        id:
          type: string
        type:
          type: string
          const: options-eod
        attributes:
          $ref: '#/components/schemas/OptionsCommonAttributes'
      additionalProperties: false
    Error:
      type: object
      properties:
        status:
          type: integer
        error:
          type: string
        message:
          type: string
    OptionsContractsItem:
      type: object
      required:
      - id
      - type
      - attributes
      properties:
        id:
          type: string
        type:
          type: string
          const: options-contracts
        attributes:
          $ref: '#/components/schemas/OptionsCommonAttributes'
      additionalProperties: false
    OptionsContractsResponse:
      type: object
      required:
      - meta
      - data
      - links
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/OptionsContractsItem'
        links:
          $ref: '#/components/schemas/Links'
      additionalProperties: false
    MetaPagination:
      type: object
      description: Pagination and field metadata.
      required:
      - total
      - fields
      properties:
        offset:
          type: integer
          minimum: 0
        limit:
          type: integer
          minimum: 1
        total:
          type: integer
          minimum: 0
        fields:
          type: array
          items:
            type: string
        compact:
          type:
          - boolean
          - 'null'
      additionalProperties: false
    OptionsEODResponse:
      type: object
      required:
      - meta
      - data
      - links
      properties:
        meta:
          $ref: '#/components/schemas/MetaPagination'
        data:
          type: array
          items:
            $ref: '#/components/schemas/OptionsEODItem'
        links:
          $ref: '#/components/schemas/Links'
      additionalProperties: false
    OptionsCommonAttributes:
      type: object
      description: Common fields for options contract/EOD records. Values may be null.
      properties:
        contract:
          type: string
        underlying_symbol:
          type: string
        exp_date:
          type: string
          description: YYYY-MM-DD
        expiration_type:
          type:
          - string
          - 'null'
        type:
          type: string
          enum:
          - call
          - put
        strike:
          type:
          - number
          - 'null'
        exchange:
          type:
          - string
          - 'null'
        currency:
          type:
          - string
          - 'null'
        open:
          type:
          - number
          - 'null'
        high:
          type:
          - number
          - 'null'
        low:
          type:
          - number
          - 'null'
        last:
          type:
          - number
          - 'null'
        last_size:
          type:
          - integer
          - 'null'
        change:
          type:
          - number
          - 'null'
        pctchange:
          type:
          - number
          - 'null'
        previous:
          type:
          - number
          - 'null'
        previous_date:
          type:
          - string
          - 'null'
        bid:
          type:
          - number
          - 'null'
        bid_date:
          type:
          - string
          - 'null'
        bid_size:
          type:
          - integer
          - 'null'
        ask:
          type:
          - number
          - 'null'
        ask_date:
          type:
          - string
          - 'null'
        ask_size:
          type:
          - integer
          - 'null'
        moneyness:
          type:
          - number
          - 'null'
        volume:
          type:
          - integer
          - 'null'
        volume_change:
          type:
          - integer
          - 'null'
        volume_pctchange:
          type:
          - number
          - 'null'
        open_interest:
          type:
          - integer
          - 'null'
        open_interest_change:
          type:
          - integer
          - 'null'
        open_interest_pctchange:
          type:
          - number
          - 'null'
        volatility:
          type:
          - number
          - 'null'
        volatility_change:
          type:
          - number
          - 'null'
        volatility_pctchange:
          type:
          - number
          - 'null'
        theoretical:
          type:
          - number
          - 'null'
        delta:
          type:
          - number
          - 'null'
        gamma:
          type:
          - number
          - 'null'
        theta:
          type:
          - number
          - 'null'
        vega:
          type:
          - number
          - 'null'
        rho:
          type:
          - number
          - 'null'
        tradetime:
          type:
          - string
          - 'null'
          description: YYYY-MM-DD (last trade or last market update; see docs)
        vol_oi_ratio:
          type:
          - number
          - 'null'
        dte:
          type:
          - integer
          - 'null'
          description: Days to expiration
        midpoint:
          type:
          - number
          - 'null'
      additionalProperties: false
  securitySchemes:
    EODHDQueryKey:
      type: apiKey
      in: query
      name: api_token
      description: EODHD API key (stored as a secret in ChatGPT).