EOD Historical Data Fundamentals API
Fundamental data for stocks and companies
Fundamental data for stocks and companies
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-fundamentals-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: EODHD Financial Data Calendar Fundamentals 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: Fundamentals
description: Fundamental data for stocks and companies
paths:
/bulk-fundamentals/{EXCHANGE}:
get:
summary: Retrieve bulk fundamental data for an exchange
description: Fetches fundamental data in bulk for all symbols on a given exchange. Supports filtering by specific symbols and data sections (General, Highlights, Valuation, etc.).
operationId: GetBulkFundamentals
parameters:
- name: EXCHANGE
in: path
required: true
description: Exchange code (e.g., 'US', 'LSE', 'TO').
schema:
type: string
- name: api_token
in: query
required: true
description: Your API token for authentication.
schema:
type: string
- name: symbols
in: query
required: false
description: Comma-separated list of symbols to filter (e.g., 'AAPL,MSFT,GOOGL').
schema:
type: string
- name: offset
in: query
required: false
description: Offset for pagination (number of records to skip).
schema:
type: integer
default: 0
- name: limit
in: query
required: false
description: Maximum number of records to return (max 500).
schema:
type: integer
default: 500
- name: version
in: query
required: false
description: API version for response format.
schema:
type: integer
- name: fmt
in: query
required: false
description: Output format.
schema:
type: string
enum:
- json
default: json
responses:
'200':
description: Successfully retrieved bulk fundamental data.
content:
application/json:
schema:
type: array
items:
type: object
properties:
General:
type: object
properties:
Code:
type: string
Name:
type: string
Exchange:
type: string
Sector:
type: string
Industry:
type: string
Highlights:
type: object
properties:
MarketCapitalization:
type: number
EBITDA:
type: number
PERatio:
type: number
Valuation:
type: object
properties:
TrailingPE:
type: number
ForwardPE:
type: number
'400':
description: Invalid request parameters.
'401':
description: Unauthorized. Invalid API token.
'404':
description: Exchange not found.
tags:
- Fundamentals
/fundamentals/{ticker}:
get:
summary: Retrieve filtered fundamental data for a specific symbol
description: Fetches various sections of fundamental data for a given stock symbol. Use filters to specify the data section and sub-sections, such as Financials::Balance_Sheet::quarterly::2024-06-30 for quarterly Balance Sheet data.
operationId: GetFundamentalData
parameters:
- name: ticker
in: path
required: true
description: The ticker symbol in the format SYMBOL.EXCHANGE, e.g., 'AAPL.US' for Apple Inc. on NASDAQ.
schema:
type: string
- name: api_token
in: query
required: true
description: Your API token for authentication. Use 'demo' for limited access with specific symbols.
schema:
type: string
example: demo
- name: filter
in: query
required: false
description: Filter parameter to specify data section and optional sub-sections, e.g., `Financials::Balance_Sheet::quarterly::2024-06-30`. Supported sections include General, Highlights, Valuation, SharesStats, Technicals, SplitsDividends, AnalystRatings, Holders, InsiderTransactions, ESGScores, outstandingShares, Earnings, and Financials. When omitted, returns all sections.
schema:
type: string
example: Financials::Income_Statement::annual::2023-12-31
- name: historical
in: query
required: false
description: Set to 1 to return historical data for certain sections (e.g., outstandingShares).
schema:
type: integer
enum:
- 0
- 1
- name: from
in: query
required: false
description: Start date for historical data in 'YYYY-MM-DD' format.
schema:
type: string
format: date
- name: to
in: query
required: false
description: End date for historical data in 'YYYY-MM-DD' format.
schema:
type: string
format: date
- name: version
in: query
required: false
description: API version for response format.
schema:
type: integer
- name: no_cache
in: query
required: false
description: Set to 1 to bypass cache and get fresh data.
schema:
type: integer
enum:
- 0
- 1
responses:
'200':
description: Successfully retrieved filtered fundamental data for the specified symbol and section.
content:
application/json:
schema:
type: object
properties:
General:
type: object
description: General company information
properties:
Code:
type: string
Name:
type: string
Exchange:
type: string
Sector:
type: string
Highlights:
type: object
description: Key financial highlights
properties:
MarketCapitalization:
type: number
EBITDA:
type: number
PERatio:
type: number
Valuation:
type: object
description: Company valuation metrics
properties:
TrailingPE:
type: number
ForwardPE:
type: number
EnterpriseValue:
type: number
SharesStats:
type: object
description: Shares statistics
properties:
SharesOutstanding:
type: number
SharesFloat:
type: number
PercentInstitutions:
type: number
Technicals:
type: object
description: Technical indicators
properties:
Beta:
type: number
52WeekHigh:
type: number
52WeekLow:
type: number
SplitsDividends:
type: object
description: Dividend and split information
properties:
DividendYield:
type: number
DividendDate:
type: string
format: date
LastSplitFactor:
type: string
AnalystRatings:
type: object
description: Analyst ratings
properties:
Rating:
type: number
StrongBuy:
type: integer
Sell:
type: integer
Holders:
type: object
description: Institutional and fund holders
properties:
Institutions:
type: array
items:
type: object
properties:
name:
type: string
totalShares:
type: number
Funds:
type: array
items:
type: object
properties:
name:
type: string
totalShares:
type: number
InsiderTransactions:
type: array
description: Insider transactions
items:
type: object
properties:
date:
type: string
format: date
ownerName:
type: string
transactionCode:
type: string
transactionAmount:
type: number
ESGScores:
type: object
description: Environmental, social, and governance scores
properties:
environmentScore:
type: number
socialScore:
type: number
governanceScore:
type: number
outstandingShares:
type: object
description: Outstanding shares data
properties:
annual:
type: array
items:
type: object
properties:
date:
type: string
format: date
shares:
type: number
quarterly:
type: array
items:
type: object
properties:
date:
type: string
format: date
shares:
type: number
Earnings:
type: object
description: Earnings data
properties:
History:
type: array
items:
type: object
properties:
date:
type: string
format: date
epsActual:
type: number
Trend:
type: array
items:
type: object
properties:
period:
type: string
epsEstimateAvg:
type: number
Financials:
type: object
description: Financial statements
properties:
Balance_Sheet:
type: object
description: Balance sheet data
properties:
annual:
type: array
quarterly:
type: array
Income_Statement:
type: object
description: Income statement data
properties:
annual:
type: array
quarterly:
type: array
Cash_Flow:
type: object
description: Cash flow data
properties:
annual:
type: array
quarterly:
type: array
'400':
description: Invalid request parameters or missing required filter.
'401':
description: Unauthorized. Invalid API token.
'404':
description: Data not found for the specified symbol or filter.
tags:
- Fundamentals
/v1.1/bulk-fundamentals/{EXCHANGE}:
get:
summary: Retrieve bulk fundamental data for an exchange (v1.1)
description: Fetches fundamental data in bulk for all symbols on a given exchange using API v1.1. Supports filtering by specific symbols and data sections (General, Highlights, Valuation, etc.). In v1.1, the fmt parameter only supports json format.
operationId: GetBulkFundamentalsV1_1
parameters:
- name: EXCHANGE
in: path
required: true
description: Exchange code (e.g., 'US', 'LSE', 'TO').
schema:
type: string
- name: api_token
in: query
required: true
description: Your API token for authentication.
schema:
type: string
- name: symbols
in: query
required: false
description: Comma-separated list of symbols to filter (e.g., 'AAPL,MSFT,GOOGL').
schema:
type: string
- name: offset
in: query
required: false
description: Offset for pagination (number of records to skip).
schema:
type: integer
default: 0
- name: limit
in: query
required: false
description: Maximum number of records to return (max 500).
schema:
type: integer
default: 500
- name: version
in: query
required: false
description: API version for response format.
schema:
type: integer
- name: fmt
in: query
required: false
description: Output format. In v1.1, only json format is supported.
schema:
type: string
enum:
- json
default: json
responses:
'200':
description: Successfully retrieved bulk fundamental data.
content:
application/json:
schema:
type: array
items:
type: object
properties:
General:
type: object
properties:
Code:
type: string
Name:
type: string
Exchange:
type: string
Sector:
type: string
Industry:
type: string
Highlights:
type: object
properties:
MarketCapitalization:
type: number
EBITDA:
type: number
PERatio:
type: number
Valuation:
type: object
properties:
TrailingPE:
type: number
ForwardPE:
type: number
'400':
description: Invalid request parameters.
'401':
description: Unauthorized. Invalid API token.
'404':
description: Exchange not found.
tags:
- Fundamentals
/v1.1/fundamentals/{ticker}:
get:
summary: Retrieve filtered fundamental data for a specific symbol (v1.1)
description: Fetches various sections of fundamental data for a given stock symbol using API v1.1. This version differs from v1 in the Earnings Trend section, which is split into Quarterly and Annual sub-objects with an additional "quarter" field on quarterly items. Use filters to specify the data section and sub-sections, such as Financials::Balance_Sheet::quarterly::2024-06-30 for quarterly Balance Sheet data.
operationId: GetFundamentalDataV1_1
parameters:
- name: ticker
in: path
required: true
description: The ticker symbol in the format SYMBOL.EXCHANGE, e.g., 'AAPL.US' for Apple Inc. on NASDAQ.
schema:
type: string
- name: api_token
in: query
required: true
description: Your API token for authentication. Use 'demo' for limited access with specific symbols.
schema:
type: string
example: demo
- name: filter
in: query
required: false
description: Filter parameter to specify data section and optional sub-sections, e.g., `Financials::Balance_Sheet::quarterly::2024-06-30`. Supported sections include General, Highlights, Valuation, SharesStats, Technicals, SplitsDividends, AnalystRatings, Holders, InsiderTransactions, ESGScores, outstandingShares, Earnings, and Financials. When omitted, returns all sections.
schema:
type: string
example: Financials::Income_Statement::annual::2023-12-31
- name: historical
in: query
required: false
description: Set to 1 to return historical data for certain sections (e.g., outstandingShares).
schema:
type: integer
enum:
- 0
- 1
- name: from
in: query
required: false
description: Start date for historical data in 'YYYY-MM-DD' format.
schema:
type: string
format: date
- name: to
in: query
required: false
description: End date for historical data in 'YYYY-MM-DD' format.
schema:
type: string
format: date
- name: version
in: query
required: false
description: API version for response format.
schema:
type: integer
- name: no_cache
in: query
required: false
description: Set to 1 to bypass cache and get fresh data.
schema:
type: integer
enum:
- 0
- 1
responses:
'200':
description: Successfully retrieved filtered fundamental data for the specified symbol and section.
content:
application/json:
schema:
type: object
properties:
General:
type: object
description: General company information
properties:
Code:
type: string
Name:
type: string
Exchange:
type: string
Sector:
type: string
Highlights:
type: object
description: Key financial highlights
properties:
MarketCapitalization:
type: number
EBITDA:
type: number
PERatio:
type: number
Valuation:
type: object
description: Company valuation metrics
properties:
TrailingPE:
type: number
ForwardPE:
type: number
EnterpriseValue:
type: number
SharesStats:
type: object
description: Shares statistics
properties:
SharesOutstanding:
type: number
SharesFloat:
type: number
PercentInstitutions:
type: number
Technicals:
type: object
description: Technical indicators
properties:
Beta:
type: number
52WeekHigh:
type: number
52WeekLow:
type: number
SplitsDividends:
type: object
description: Dividend and split information
properties:
DividendYield:
type: number
DividendDate:
type: string
format: date
LastSplitFactor:
type: string
AnalystRatings:
type: object
description: Analyst ratings
properties:
Rating:
type: number
StrongBuy:
type: integer
Sell:
type: integer
Holders:
type: object
description: Institutional and fund holders
properties:
Institutions:
type: array
items:
type: object
properties:
name:
type: string
totalShares:
type: number
Funds:
type: array
items:
type: object
properties:
name:
type: string
totalShares:
type: number
InsiderTransactions:
type: array
description: Insider transactions
items:
type: object
properties:
date:
type: string
format: date
ownerName:
type: string
transactionCode:
type: string
transactionAmount:
type: number
ESGScores:
type: object
description: Environmental, social, and governance scores
properties:
environmentScore:
type: number
socialScore:
type: number
governanceScore:
type: number
outstandingShares:
type: object
description: Outstanding shares data
properties:
annual:
type: array
items:
type: object
properties:
date:
type: string
format: date
shares:
type: number
quarterly:
type: array
items:
type: object
properties:
date:
type: string
format: date
shares:
type: number
Earnings:
type: object
description: Earnings data. In v1.1, Trend is split into Quarterly and Annual sub-objects. Quarterly items include a "quarter" field (Q1-Q4).
properties:
History:
type: array
items:
type: object
properties:
date:
type: string
format: date
epsActual:
type: number
Trend:
type: object
description: Earnings trend data split into Quarterly and Annual sub-objects. This is the key difference from v1 where Trend was a flat array.
properties:
Quarterly:
type: array
description: Quarterly earnings trend items with an additional quarter identifier.
items:
type: object
properties:
period:
type: string
quarter:
type: string
description: Fiscal quarter identifier.
enum:
- Q1
- Q2
- Q3
- Q4
epsEstimateAvg:
type: number
Annual:
type: array
description: Annual earnings trend items.
items:
type: object
properties:
period:
type: string
epsEstimateAvg:
type: number
Financials:
type: object
description: Financial statements
properties:
Balance_Sheet:
type: object
description: Balance sheet data
properties:
annual:
type: array
quarterly:
type: array
Income_Statement:
type: object
description: Income statement data
properties:
annual:
type: array
quarterly:
type: array
Cash_Flow:
type: object
description: Cash flow data
properties:
annual:
type: array
quarterly:
type: array
'400':
description: Invalid request parameters or missing required filter.
'401':
description: Unauthorized. Invalid API token.
'404':
description: Data not found for the specified symbol or filter.
tags:
- Fundamentals
components:
securitySchemes:
EODHDQueryKey:
type: apiKey
in: query
name: api_token
description: EODHD API key (stored as a secret in ChatGPT).