stocks tool
Publicstocks_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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| ticker | string | Yes | — | Ticker 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). |
| limit | integer | No | 4 | Fiscal periods to return, newest first (1–12). |
| cursor | string | null | No | null | Opaque pagination cursor from a previous response's `pagination.next_cursor`; omit to start from the newest period. |
| as_reported | boolean | No | false | Serve 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
- sec_edgar_companyfactsU.S. Securities and Exchange Commission (EDGAR)
Dataset registry: stocks_fundamentals