API Reference

Combined Financials

The aggregator route — income statements, balance sheets, and cash-flow statements for a company in a single call, 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

Provide a ticker or cik and a period. The combined route returns all three statements at once under a top-level financials object, holding income_statements, balance_sheets, and cash_flow_statements arrays — each newest first, each row carrying 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?ticker=AAPL&period=annual&limit=1" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"

Response#

Returns a top-level financials object nesting three arrays — income_statements, balance_sheets, and cash_flow_statements — each newest first. Every row across all three carries the same identifying fields (ticker, cik, report_period, period, fiscal_period, currency, accession_number, filing_url, calendar_date) followed by that statement’s line items.

For the full per-statement field lists, see the focused pages: Income statements, Balance sheets, and Cash-flow statements. A line item not reported for a period is null.

Example response#

financials.jsonjson
{
  "financials": {
    "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,
        "operating_income": 123216000000,
        "net_income": 93736000000,
        "earnings_per_share": 6.11
      }
    ],
    "balance_sheets": [
      {
        "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",
        "total_assets": 364980000000,
        "total_liabilities": 308030000000,
        "shareholders_equity": 56950000000
      }
    ],
    "cash_flow_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",
        "net_cash_flow_from_operations": 118254000000,
        "free_cash_flow": 108807000000
      }
    ]
  }
}
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.

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.