Where do the three financial statements live in the JSON?
The Fundamental Analysis domain teaches three statements: the balance sheet (what a company owns and owes at a moment), the income statement (what it earned over a period), and the cash flow statement (what actually moved through the bank). This lesson connects that vocabulary to the exact keys you will type.
The map
All three arrive from one call, /fundamentals/{ticker}, and everything below lives under one section of it:
Financials
Balance_Sheet { currency_symbol, yearly: {date: {...}}, quarterly: {date: {...}} }
Income_Statement { currency_symbol, yearly: {date: {...}}, quarterly: {date: {...}} }
Cash_Flow { currency_symbol, yearly: {date: {...}}, quarterly: {date: {...}} }
Three statements, two periodicities, six collections. Each is an object keyed by reporting date, newest first, and each entry is one reporting date. The periodicity keys are yearly and quarterly; there is no annual (read 28 September 2026). The reference course's balance sheet is Financials::Balance_Sheet; its income statement is Financials::Income_Statement; its cash flow statement is Financials::Cash_Flow. Note the underscores and the exact casing — Cash_Flow, not CashFlow, and not cash_flow.
Alongside it, Earnings carries History (reported EPS against estimates, per period) and Trend (forward estimates). Those are not statements; they are the market's expectation layer sitting next to the accounts.
Snapshot sections versus historical sections
This distinction causes more confusion than the key names do.
Financials, Earnings::History and outstandingShares are historical: they hold a series, one entry per reporting date. Earnings::Trend is the exception inside that section — it holds forward estimates, and they are revised continuously.
Highlights, Valuation, SharesStats and Technicals are snapshots: single current values, overwritten as the data updates. Apple's response carried UpdatedAt: "2026-07-27" in General and MostRecentQuarter: "2026-03-31" in Highlights. If you store a snapshot section without stamping it with the date you fetched it, you have destroyed the only thing that made it interpretable.
The cross-check that teaches the most
Take two figures from Apple's Highlights and SharesStats, as at 2026-07-28. Every number in this section is a snapshot — that is the point of the section — so yours will differ and the checks will still land:
EarningsShare8.26,PERatio40.7881. Multiply: 8.26 × 40.7881 = 336.91.MarketCapitalization4,948,317,175,808,SharesOutstanding14,687,356,000. Divide: 4,948,317,175,808 ÷ 14,687,356,000 = 336.91.
Two independent routes to the same price, agreeing to the cent. That is a good sign, and it is worth running whenever you meet a new provider.
Now run one that does not agree. RevenueTTM is 451,442,016,256 and ProfitMargin is 0.2715, implying net income of about $122.6 billion. But EarningsShare 8.26 × 14,687,356,000 shares gives about $121.3 billion. The two are roughly 1% apart.
Neither is an error. They are different calculations: diluted versus outstanding share counts, and trailing windows that do not begin on the same day. The lesson is not that one number is wrong — it is that fields in the same object are not guaranteed to be mutually consistent, because they were not all computed the same way.
The statements are in the company's reporting currency, and the price is in the listing's trading currency; the two need not match. Each statement block carries its own currency_symbol; the listing's currency is General.CurrencyCode. On TSM.US the price is in USD and the statements in TWD; on HSBA.LSE the price is in pence (GBX) and the statements in USD (both read 2026-09-07). Run the two cross-checks above on such a name and both fail by the exchange rate, and on the London line by a further hundred. Before dividing any price by any statement figure, read both currency fields, convert on the statement date, and handle pence separately. The vendor's Highlights ratios are already reconciled; the ones you compute are not until you do this.
Null is not zero
Apple's SharesStats returned SharesShort: null, SharesShortPriorMonth: null and ShortRatio: null, while ShortPercentFloat came back as 0.01. null means the value is unavailable. 0 means the value is zero. Treating them as the same thing is how a screener ends up ranking companies by "no data available" and calling it a finding. Unavailable here is the precise word: the same names are populated one section over, where Technicals.SharesShort and Technicals.ShortRatio carry the count and the days-to-cover (read 29 September 2026). The next lesson has more fields like that.
Try it now
- Here is
/fundamentals/AAPL.US?filter=Financials::Income_Statement::yearly, first its newest period in full and then its two newest and two oldest dates. Compare the earliest date with Apple'sIPODatein/fundamentals/AAPL.US?filter=General, the third table. History rarely reaches all the way back.
- Run the
EarningsShare × PERatioversusMarketCapitalization ÷ SharesOutstandingcheck on the figures below:/fundamentals/AAPL.US?filter=Highlights,SharesStats, both sections in one call. If the two prices disagree by more than rounding, find out which window each one uses before you use either. Then run it on a company of your own: the fundamentals tab of the Terminal carries the same four fields, and you can change the symbol there.
Open AAPL.US — fundamentals in the EODHD Terminal
- Here is one line item,
totalRevenue, for Apple's fiscal 2025: theyearlyentry and the fourquarterlyentries that make up that year, read by date key. Sum the four quarters and compare with the yearly figure. The four most recent quarters would not have matched it: say why, from Apple'sFiscalYearEnd. Where the right four quarters and a year still differ, you have found a restatement, and that is worth understanding.