Skip to main content

Fundamental Financials API Reference

Two routes serve fundamentals:

  • GET /fundamental builds one document from Yahoo Finance, the figures stored in the database and the scraped providers, with the source of every figure.
  • GET /fundamental/deep returns what the deep enrichment stored: highlights, financial statements, earnings history and analyst ratings.

Ratios are ratios: a 0.32 % dividend yield is 0.0032.


GET /fundamental​

ParameterTypeDefaultDescription
tickerstring—Ticker (e.g. AIR.PA). ticker or isin is required
isinstring—ISIN of the instrument
exchangestring—Exchange, to choose a listing
currencystring—Currency, to choose a listing
providerstringallOne provider name, or several separated by commas, instead of all of them
fmtstringeodhdeodhd (rendered document) or raw (the answer of each provider)
nocachebooleanfalseIgnore the cached answer
curl -s -H "X-API-KEY: $FONREX_API_KEY" "http://localhost:5000/fundamental?ticker=AIR.PA"

The rendered document (fmt=eodhd)​

SectionContent
GeneralName, ISIN, exchange, currency, country, sector and industry, description, address, website
HighlightsMarket capitalisation, EBITDA, P/E, EPS, dividend yield, margins, returns, revenue…
ValuationTrailing and forward P/E, price/sales, price/book, enterprise value ratios
SharesStatsShares outstanding and float, insider and institution ownership, short interest
TechnicalsBeta, 52-week high and low, moving averages
SplitsDividendsDividend rate and yield, payout ratio, dates, last split
AnalystRatingsConsensus, target price, number of buy/hold/sell ratings
Holders, InsiderTransactions, ESGScoresHolders, SEC Form 4 transactions (US shares), ESG scores
Earnings, FinancialsStored earnings history and financial statements
ProvidersWhat each provider returned
SourcesThe source of each figure, e.g. {"Highlights": {"PERatio": "YahooFinance", "PEGRatio": "database (2026-10-01)"}}
ETF_DataOnly for an ETF

Each figure is taken, in this order, from:

  1. the Yahoo Finance answer of this request;
  2. the figures stored by the deep enrichment, reported as database (date of the fetch);
  3. for the trailing P/E, the earnings per share and the dividend yield only, the scraped providers publishing the same quantity (Google Finance, Barron's, MarketWatch, WSJ, Investing.com).

Estimates for the current year (Boursorama, ZoneBourse) and quarterly figures (Google Finance) are other quantities: they are never used as a fallback but remain available with fmt=raw.

Which instrument is asked​

For a listing of your catalogue, Yahoo Finance is asked with the symbol verified for the listing (found from the ISIN and checked against the currency of the listing), never with the bare ticker, which may be another instrument on Yahoo. Without a verified symbol, Yahoo is not asked and its entry says why. Scraped providers are searched by mapping, ISIN or ticker; a provider that answers about another ISIN is reported as an error.

Every value goes through the validation layer before it is used.

The complete answer is cached one hour; nocache=true bypasses it.


GET /fundamental/deep​

ParameterTypeDefaultDescription
ticker / isinstring—The instrument (one of the two is required)
refreshbooleanfalseFetch again from Yahoo Finance instead of using the cached answer
sectionsstringallall, or a comma-separated list among highlights, statements, earnings, ratings
curl -s -H "X-API-KEY: $FONREX_API_KEY" \
"http://localhost:5000/fundamental/deep?ticker=AIR.PA&sections=highlights,ratings"

Answer layout:

{
"asset_profile": { "isin": "NL0000235190", "ticker": "AIR.PA", "name": "Airbus SE", "exchange": "XPAR", "currency": "EUR" },
"highlights": { "pe_ratio": 28.5, "dividend_yield": 0.0125, "roe": 0.162, "...": "..." },
"statements": {
"income": { "annual": [ { "period_end": "2025-12-31", "...": "..." } ], "quarterly": [] },
"balance": { "annual": [], "quarterly": [] },
"cashflow": { "annual": [], "quarterly": [] }
},
"earnings_history": [ { "...": "..." } ],
"analyst_ratings": { "...": "..." },
"meta": { "fetched_at": "2026-10-08T16:40:00+00:00", "source": "yfinance", "cache_hit": false, "symbol": "AIR.PA" }
}

The figures are fetched from Yahoo Finance with the verified symbol (meta.symbol) and stored. Without a verified symbol nothing is fetched: the answer is what the database already holds, meta.source is database and meta.note gives the reason. Complete answers are cached 24 hours; a request receives only the sections it asked for.


Legacy routes​

GET /stocks (market overview) and GET /stocks/{ticker}/financials remain from earlier versions. They ask Yahoo Finance with the ticker as typed; prefer /fundamental.