openapi: 3.1.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).