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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/eodhd-options-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
openapi: 3.2.0
info:
title: EODHD Financial Data 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.
responses:
'200':
description: Contracts list.
content:
application/json:
schema:
type: object
required:
- meta
- data
- links
properties:
meta:
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
data:
type: array
items:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
const: options-contracts
attributes:
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
additionalProperties: false
links:
type: object
required:
- next
properties:
next:
type:
- string
- 'null'
description: URL to fetch the next page, or null if last page.
additionalProperties: false
additionalProperties: false
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:
type: object
properties:
status:
type: integer
error:
type: string
message:
type: string
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
status:
type: integer
error:
type: string
message:
type: string
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
status:
type: integer
error:
type: string
message:
type: string
'422':
description: Unprocessable Entity
content:
application/json:
schema:
type: object
properties:
status:
type: integer
error:
type: string
message:
type: string
'429':
description: Too Many Requests
content:
application/json:
schema:
type: object
properties:
status:
type: integer
error:
type: string
message:
type: string
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.
responses:
'200':
description: EOD options data (standard or compact).
content:
application/json:
schema:
oneOf:
- type: object
required:
- meta
- data
- links
properties:
meta:
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
data:
type: array
items:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
const: options-eod
attributes:
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
additionalProperties: false
links:
type: object
required:
- next
properties:
next:
type:
- string
- 'null'
description: URL to fetch the next page, or null if last page.
additionalProperties: false
additionalProperties: false
- type: object
required:
- meta
- data
- links
properties:
meta:
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
data:
type: array
items:
type: array
items:
type:
- string
- number
- integer
- 'null'
description: Row aligned to
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/eodhd/refs/heads/main/openapi/eodhd-options-api-openapi.yml