EOD Historical Data Options API
Options contracts and pricing data
Options contracts and pricing data
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).