API Reference

Income Statements

A company's income statement as clean, normalized numbers — revenue, cost of revenue, operating income, net income, and per-share figures — derived deterministically from the SEC XBRL data companies file. Annual, quarterly, or trailing-twelve-month, with the source accession and filing URL on every row.

GET/v1/financials/income-statements

Provide a ticker or cik and a period. Each row covers one reporting period, newest first, and carries the source accession and filing URL.

Coverage & freshness
We cover ~2,000 US-listed companies — the entire S&P 500 plus roughly 1,500 more US mid- and small-caps — with numbers derived from SEC filings and kept current within about a day of a new 10-K or 10-Q. See Coverage & data source for the full list and the IFRS boundary.

Query parameters#

tickerstringoptional
US ticker, e.g. AAPL. Provide ticker or cik (at least one is required).
cikstringoptional
SEC Central Index Key — an alternative to ticker.
period"annual" | "quarterly" | "ttm"required
Reporting period (required). annual = 10-K periods, quarterly = 10-Q periods, ttm = trailing twelve months.
limitnumberoptional
Number of reporting periods to return, newest first. Defaults to 4.
report_periodstringoptional
Return only the period whose report date equals this exact date (YYYY-MM-DD, the fiscal period end). Combine with the range filters as an additional AND constraint.
report_period_gtestringoptional
Only periods with a report date on or after this date (YYYY-MM-DD). Also available: report_period_lte, report_period_gt, report_period_lt.

Example request#

curlbash
curl "https://api.focusalpha.ai/v1/financials/income-statements?ticker=AAPL&period=annual&limit=4" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"

Response#

Returns an income_statements array, newest first. Each row carries the shared identifying fields, then the income statement line items.

Shared row fields#

Every statement row carries the same identifying fields, then its line items.

tickerstringrequired
Company ticker.
ciknumberrequired
SEC Central Index Key.
report_periodstringrequired
The fiscal period end date (YYYY-MM-DD).
periodstringrequired
The requested period — annual, quarterly, or ttm.
fiscal_periodstring | nulloptional
The fiscal label — FY, Q1, Q2, Q3, or Q4. Q4 appears on quarterly/ttm rows whose period ends in the fiscal-year-end quarter; annual rows are always FY.
currencystringrequired
Reporting currency, e.g. USD.
accession_numberstring | nulloptional
The SEC filing these numbers were derived from.
filing_urlstring | nulloptional
Link to the source filing on EDGAR.
calendar_datestring | nulloptional
Reserved for a calendar-aligned period date; currently always null.

Income statement line items#

Fields: revenue, cost_of_revenue, gross_profit, operating_expense, selling_general_and_administrative_expenses, research_and_development, operating_income, interest_expense, nonoperating_income_expense, ebit, income_tax_expense, net_income_discontinued_operations, net_income_non_controlling_interests, net_income, net_income_common_stock, preferred_dividends_impact, consolidated_income, earnings_per_share, earnings_per_share_diluted, dividends_per_common_share, weighted_average_shares, weighted_average_shares_diluted. A line item not reported for a period is null.

Example response#

income-statements.jsonjson
{
  "income_statements": [
    {
      "ticker": "AAPL",
      "cik": 320193,
      "report_period": "2024-09-28",
      "period": "annual",
      "fiscal_period": "FY",
      "currency": "USD",
      "accession_number": "0000320193-24-000123",
      "filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123",
      "revenue": 391035000000,
      "cost_of_revenue": 210352000000,
      "gross_profit": 180683000000,
      "operating_income": 123216000000,
      "net_income": 93736000000,
      "earnings_per_share": 6.11,
      "earnings_per_share_diluted": 6.08
    }
  ]
}
Numbers, as filed
Values are pulled from each company’s XBRL facts — public-domain structured data filed with the SEC — and normalized to a consistent schema. They are not adjusted, restated, or estimated.
Need all three statements?
The combined /v1/financials route returns income statements, balance sheets, and cash-flow statements in a single call.

Errors#

Statuses: 400 (missing both ticker and cik, a missing or invalid period, or a bad limit / date), 401 (bad or missing API key), 402 (per-minute rate limit or monthly quota exceeded — upgrade your plan), 404 (unresolvable ticker or CIK), 503 with a Retry-After header (data temporarily unavailable — retry shortly), and 500. A known company with no US-GAAP data is a successful 200 with empty arrays, not an error. See Errors.