/financials returns every statement in one call, as maps of line key → row, with values
keyed by period label. Turn that into a DataFrame once and everything else is pandas.
Row keys are the standardized vocabulary (
std:revenue, std:cost_of_revenue,
std:gross_profit, std:cfo, …) — the same keys fact-source accepts, so any cell in the
frame can be cited: statement=income_statement&key=std:revenue&end_date=<column>. The
filer’s own XBRL lines (us-gaap:Revenues) sit in the same map with a parent_key; the
filter above keeps only the standardized rows. Values are in fin["reporting_currency"].Handle limits like a good citizen
X-Quota-Remaining on quota-carrying plans, and remember: one /financials
call returns whole statements — never page line by line.
Discrete or cumulative quarters
The default (reporting_basis=individual) gives discrete three-month figures. If you want
the year-to-date column exactly as each 10-Q prints it, add reporting_basis=as_reported.
Annual columns are the same either way.
As originally reported
Backtesting against what the market knew at the time?/financials serves the latest
restated value for every period. For the originally filed figures use the as-filed view:
format=csv or format=xlsx to download the grid instead. Macro endpoints are
point-in-time by construction — no look-ahead there either.