stocks tool

Public

stocks_get_income_statements

Normalized income statements for one US public company, newest first.

Description

Normalized income statements for one US public company, newest first.

The result is the shared response envelope: data holds the company identity (ticker, cik, company_name, period_type) and the bounded statements list; meta holds result-level provenance (source: "sec_edgar_companyfacts", and as_of, the freshest line-level timestamp on this page); pagination holds the cursor paging state. To page, pass pagination.next_cursor back as cursor; when pagination.has_more is false, next_cursor is null and you have reached the oldest period.

Set as_reported=true to serve as-originally-reported values instead of the latest restated values, and keep it constant while paging. Before a company's next statement ingest this mode raises out_of_coverage. In both modes, meta.restatements lists restated reported lines with original and superseding accessions. Arithmetic-derived Q4, non-fiscal-year TTM, YTD-difference, and FCF lines carry null lineage; a TTM matching a reported fiscal year carries the annual accessions.

Each statement is one fiscal period with a lines object keyed by canonical line names (revenue, cost_of_revenue, gross_profit, operating_income, net_income, eps_basic, eps_diluted, shares_basic, shares_diluted). A missing key means the company did not report that line for the period — never zero. Each value carries value (exact decimal as a JSON string), unit, currency, as_of, and the source filing's accession_number; data is normalized from SEC EDGAR XBRL.

Errors carry a machine code: unknown_entity for a well-formed symbol we hold no mapping for (resolve the symbol first if unsure), out_of_coverage when as_reported is requested before the company's first vintage-era statement ingest, and bad_parameter for input the schema can't reject (a non-ticker string or a malformed cursor).

Parameters

Input schema

NameTypeRequiredDefaultDescription
tickerstringYesTicker symbol, e.g. 'AAPL' or 'BRK.B' (class separators accepted).
period"annual" | "quarterly" | "ttm"No"annual"Fiscal frame: 'annual' = full fiscal years (FY), 'quarterly' = fiscal quarters (Q1–Q4), 'ttm' = trailing twelve months (not yet populated; returns no statements for now).
limitintegerNo4Fiscal periods to return, newest first (1–12).
cursorstring | nullNonullOpaque pagination cursor from a previous response's `pagination.next_cursor`; omit to start from the newest period.
as_reportedbooleanNofalseServe as-originally-reported values instead of latest restated values. Keep this constant while paging. Before the next statement ingest, this mode raises `out_of_coverage`. Reported restatements carry original and superseding accessions; arithmetic-derived Q4, non-fiscal-year TTM, YTD-difference, and FCF lines carry null lineage, while a TTM matching a reported fiscal year carries the annual accessions.

Provenance

Sources

Dataset registry: stocks_fundamentals