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).