EOD Historical Data Options API
Options contracts and pricing data
Options contracts and pricing data
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/eod-historical-options-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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).