Segmented Financials
As-reported segment breakdowns — how a company splits its revenue and operating income across product lines, geographies, and business segments — parsed directly from the dimensioned facts in its SEC 10-K and 10-Q XBRL filings. Pass a ticker and get the segment tables exactly as the company disclosed them, newest period first.
/v1/financials/income-statements/segments?ticker={ticker}Provide a ticker (or cik) and get that issuer’s income-statement segment breakdowns under an income_statement_segments array, newest reporting period first. Each row is one filing period; its metrics (e.g. revenue, operating_income) are broken out by the axes the company reports along — product, geography, and business segment.
Coverage & data source#
Segment tables are parsed straight from the dimensioned XBRL facts in each company’s SEC filing instance — not from a companyfacts summary, which drops segment dimensions — and kept fresh automatically as new 10-Ks and 10-Qs land. We cover roughly 1,300 US-listed companies that actually disclose segment breakdowns; the rest of our ~2,000-company universe reports as a single segment (or files inline XBRL without a standalone label linkbase) and returns an empty array. Values are passed through as reported — we do not re-derive, reconcile, or fill segments the company didn’t break out.
Query parameters#
tickerstringoptionalAAPL. One of ticker or cik is required.cikstringoptional320193 or 0000320193. Use in place of ticker.periodstringoptionalannual or quarterly. Optional — defaults to annual. Segments have no ttm grain; any other value returns 400.limitnumberoptional4; minimum 1. A value below 1 returns 400.report_periodstringoptionalYYYY-MM-DD value.report_period_gte / _lte / _gt / _ltstringoptionalYYYY-MM-DD comparisons — gte/lte are inclusive, gt/lt exclusive. Combine to select a range.ticker or cik. A request with neither returns 400.Example request#
curl "https://api.focusalpha.ai/v1/financials/income-statements/segments?ticker=AAPL&period=annual&limit=1" \
-H "Authorization: Bearer $FOCUSALPHA_API_KEY"Response#
Returns an income_statement_segments array, one element per reporting period, newest first. Each row carries seven identifying scalar fields followed by the segment metrics.
Row scalars#
tickerstring | nulloptionalreport_periodstringrequiredYYYY-MM-DD) — the fiscal period end. Rows sort by this, newest first.fiscal_periodstring | nulloptionalFY2025 or Q2 2026.periodstringrequiredannual or quarterly.currencystring | nulloptionalUSD.accession_numberstring | nulloptional0000320193-25-000079.filing_urlstring | nulloptionalSegment metrics#
Beyond the scalars, each row carries one key per metric the company breaks out — most commonly revenue and operating_income. A metric value is itself an object keyed by axis (the dimension the company split along), and each axis holds an array of { label, value } members:
product{ label, value }[]optionalgeography{ label, value }[]optionalsegment{ label, value }[]optionallabelstringrequiredvaluenumberrequiredcurrency (whole units, not thousands).product, geography, and reportable segment; another filer may report only a single segment axis. Treat the metric and axis keys as an open map: iterate what’s present rather than assuming a fixed set. Members within an axis are not guaranteed to sum to the consolidated total (some companies disclose a partial breakdown or a separate reconciliation).Example response#
{
"income_statement_segments": [
{
"ticker": "AAPL",
"report_period": "2025-09-27",
"fiscal_period": "FY2025",
"period": "annual",
"currency": "USD",
"accession_number": "0000320193-25-000079",
"filing_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm",
"revenue": {
"product": [
{ "label": "iPhone", "value": 209586000000 },
{ "label": "Mac", "value": 33708000000 },
{ "label": "iPad", "value": 28023000000 },
{ "label": "Wearables, Home and Accessories", "value": 35686000000 }
],
"geography": [
{ "label": "U.S.", "value": 151790000000 },
{ "label": "China", "value": 64377000000 },
{ "label": "Other countries", "value": 199994000000 }
],
"segment": [
{ "label": "Americas", "value": 178353000000 },
{ "label": "Europe", "value": 111032000000 },
{ "label": "Greater China", "value": 64377000000 },
{ "label": "Japan", "value": 28703000000 },
{ "label": "Rest of Asia Pacific", "value": 33696000000 }
]
},
"operating_income": {
"segment": [
{ "label": "Americas", "value": 72480000000 },
{ "label": "Europe", "value": 47739000000 }
]
}
}
]
}Errors#
Statuses: 400 (neither ticker nor cik, an out-of-range limit, a bad period, or a malformed report-period date), 401 (bad or missing API key), 402 (per-minute rate limit or monthly quota exceeded — upgrade your plan), 404 (unknown issuer), and 503 (data temporarily unavailable; includes a Retry-After header — retry shortly). A known issuer that discloses no segments is a successful 200 with an empty income_statement_segments array. Errors use the bare { error, message } envelope — see Errors.