Get a full financial statement
Line-item income statement, balance sheet, or cash flow with per-period metric labels.
Returns up to 25 periods of a complete financial statement -- income statement, balance sheet, or cash flow -- with metric names, values, units, per-period coverage annotations, and source links. Nordic cells carry per-figure provenance; US statements are cited per annual filing (see Provenance).
When to use this
- Building a multi-year trend chart of operating margin.
- Rendering a full income statement table on a company page.
- Feeding a forecasting model that needs every reported line.
For headline KPIs only, use the financials endpoint — it is cheaper and pre-aggregated.
Path
| Field | Type | Description |
|---|---|---|
| companyrequired | string | Company name or ticker. |
Query
| Field | Type | Description |
|---|---|---|
| statement | string default: income_statement | income_statement | balance_sheet | cash_flow |
| years | integer default: 10 | Max periods to return (1–25). |
| market | string | nordic | us. Omit to auto-detect. |
| period_type | string default: annual | annual | quarterly | auto. Quarterly line items are US-only (see Period types). |
| year | integer | Filter to a specific fiscal year. |
| quarter | integer | Filter to a specific fiscal quarter (1–4). Implies period_type=quarterly when period_type is annual. |
Example
curl "https://api.clarifo.com/api/v1/data/companies/Fiskars/statement?statement=income_statement&years=10" \
-H "Authorization: Bearer $CLARIFO_API_KEY"Response
{
"company_name": "Fiskars",
"market": "nordic",
"statement": "income_statement",
"period_type": "annual",
"periods": [
{
"year": 2024,
"period": "2024",
"coverage_status": "complete",
"available_core_metrics": 8,
"expected_core_metrics": 8,
"metrics": {
"revenue": {
"metric_key": "revenue",
"metric_name": "Liikevaihto",
"value": 1250500000,
"unit": "EUR",
"currency": "EUR",
"source": "esef",
"source_url": "https://filings.xbrl.org/…",
"concept": "ifrs-full:Revenue",
"filing_index": "743700UJPK…"
}
}
}
],
"coverage_summary": {
"complete": 10,
"partial": 0,
"sparse": 0,
"total": 10,
"core_metric_set": ["revenue", "operating_income", "…"]
},
"sources": [
{
"id": "src_1",
"company": "Fiskars",
"document_title": "Fiskars 2024 Financial Statement",
"document_type": "financial_statement",
"year": 2024,
"source_url": "https://filings.xbrl.org/…",
"source_kind": "s3_pdf",
"page_reference": "financial_statement",
"page_reference_type": "document",
"citation_label": "Fiskars 2024 Financial Statement",
"citation_markdown": "[Fiskars 2024 Financial Statement](https://filings.xbrl.org/…)",
"…": "…"
}
],
"source_policy": {"citation_mode": "claim_level", "…": "…"}
}ESEF cells report value in full currency units and unit is the
currency code ("EUR", "SEK", ...). Older Nordic years come from
PDF-extracted tables whose unit can differ, so always read unit per
cell. Empty fields are omitted rather than sent as null.
Coverage fields
Every period carries coverage_status (complete = at least 80 % of the
statement's core line items present, partial = 30–79 %, sparse =
below 30 %), available_core_metrics, expected_core_metrics and
missing_core_metrics. The top-level coverage_summary counts periods
per band and lists the core_metric_set used. Use these to drop or flag a
period where only a handful of facts were ingested.
Provenance fields
Nordic metric objects carry per-figure provenance when the source provides it:
| Field | Description |
|---|---|
source | "esef" (iXBRL filing) or "avainluvut" (figure extracted from a PDF filing page). |
source_url | ESEF: the filing viewer. PDF-extracted: a Clarifo snapshot link for the page. |
concept | ESEF: the IFRS concept tag (e.g. "ifrs-full:Revenue"). PDF-extracted: "avainluvut:<metric>". |
filing_index | ESEF filing identifier. |
page_id | PDF-extracted figures: the filing page, resolvable via the snapshot endpoint. |
US metric objects carry metric_key, metric_name, metric_name_en,
value, unit and currency only. Amounts are in whole US dollars
(unit and currency are both "USD", including on per-share rows). There is no per-cell source,
concept, filing_index or page_id: provenance is attached per
annual period instead, as periods[]._provenance (form_type,
accession_number, filing_url, document_url, display_label) naming
the 10-K or 20-F that owns the fiscal year. For a restated year this is
the amendment, which may not have supplied every line item. US quarterly
periods carry no filing link.
The top-level sources list holds one evidence card per distinct source
behind the statement (a filing, or a page for PDF-extracted figures) (with citation_label and citation_markdown), and
source_policy describes how to render citations. Show users
citation_markdown, not raw page_ids.
Period types
period_type | Returns |
|---|---|
annual (default) | Newest fiscal years. |
quarterly | Newest quarters. US only. |
auto | US: annual + quarterly rows mixed, newest first. Nordic: annual rows plus a note. |
Nordic statements are annual-only: ESEF filings are annual and interim
reports are not ingested at line-item level. A Nordic quarterly request
returns HTTP 200 with an empty periods list and:
{
"company_name": "Fiskars",
"market": "nordic",
"statement": "income_statement",
"period_type": "quarterly",
"error": "quarterly_line_items_not_available",
"explanation": "Quarterly line-item statements (quarterly) are not available for Nordic companies: …",
"alternative_tools": ["get_company_financials", "search_filing_content"]
}For Nordic quarterly headline figures, use
the financials endpoint with
period_type=quarterly.
Misses
If neither market has statement data for the company, the response is
HTTP 200 with "error": "No statement data found",
"failure_kind": "not_found", the echoed company, statement,
period_type and tried_markets. When the company is known but has no
line items yet, a coverage block explains why
("reason": "no_detailed_data").