Companies

Retrieve Company Financials

Changed on

Experimental endpoint — the response schema may change without an API version bump.

Returns standardized financial KPIs for a company as a structured document: a company envelope containing periods, each holding its Income Statement, Balance Sheet and Cash Flow statements, each holding line_items.

When several filings report the same period, the candidates are ranked and one statement is selected. A filing the company reports its own financials in beats one it does not, such as an employee benefit plan's Form 11-K or a filing notice. A statement in the currency the company reports in beats an off-currency one, which is usually a subsidiary's filing that resolved to the parent. A complete statement beats a fragment, such as the single restated line in an amendment. Only then does the most recently published filing win. A selected statement denominated in a currency other than the company's carries currency_mismatch: true.

Currency is as presented, and is never converted. currency is the currency the statement is denominated in as the filer presented it - the presentation currency, not the functional currency, which we do not capture. No figure in this payload is ever translated into another currency at any rate, and value being in absolute units makes values comparable across scales, not across currencies. A company that re-presents in a new currency therefore produces a series whose units change partway through, with no restatement of the earlier years: compare currency.code across periods before aggregating or charting. A line item may carry its own currency differing from the statement's - that is a dual-currency filing, not an error.

Each statement carries source_filing: the filing the figures were read from, with document_url and viewer_url pointing at our hosted copy of that document. This is returned to every account. The publishing authority's identity and its own direct URL remain masked unless the account has source unmasking enabled. The full sources array — every contributing filing, including candidates that selection rejected — is returned only with source unmasking (sources_masked reports which applies). as_of=YYYY-MM-DD restricts selection to filings released on or before that date; it does not reproduce the values served on that date, because figures are corrected in place. Each line item's updated_at says when its value was last written. as_known_at returns each value as we held it at a past time (recorded since 2026-10-19T17:05:18Z), selected under today's rules, and include=revisions lists each value's recorded changes.

Use the depth and parent_code fields on each line item to render the Capital IQ-style statement hierarchy.

value and raw_value are exact decimal strings, not numbers - parse them with a decimal type. raw_value and scale come back null when the figure was computed rather than read off the page. source_page is reserved and is currently null on every line item; provenance is filing-level. confidence is non-null only where the KPI verifier independently re-derived the figure and agreed - null means unjudged, not low-confidence.

Scope - this is not the bulk dataset. This endpoint serves one selected statement per (fiscal year, period, statement type). The comparative statements themselves, restatements, the validation_n_hard/validation_n_soft quality flags, derivation_method and stable row ids are available only in the S3 line_items/ parquet delivery, not here at any plan level. The is_comparative flag on each statement does tell you whether the selected figures were read from a later report's prior-year column.

Cost: 40 credits per request, flat - independent of how many periods or line items are returned, and not reduced by filtering. Pay-as-you-go accounts read the full history by default. If an account has been limited to a rolling window on filing release date, the response carries a history_window object; read the effective limit from history_window.max_history_days. The deep back-catalogue is not reachable through such a window.

Access Level Required: Requires Financial KPIs (Level 3).

get/companies/{id}/financials/

Request

  • Base URL: https://api.financialreports.eu
  • URL: https://api.financialreports.eu/companies/{id}/financials/
  • Auth: one of:
    • API key in header X-API-Key
    • HTTP bearer

Path parameters

idinteger required

A unique integer value identifying this company.

Query parameters

as_known_atstring

Values as we held them at this time (ISO-8601 datetime, e.g. 2026-10-20T12:00:00Z; a datetime without an offset is UTC; a bare date YYYY-MM-DD means the end of that day in UTC). Each value we corrected since is served as it was then, a value first written since is left out, and each period's statement is then selected from those values under today's selection rules. Filings not yet released at that time are left out. Combines with as_of. History starts at 2026-10-19T17:05:18Z: an earlier time returns 400; a future time is read as now. Not reconstructed yet: values deleted since and not re-created, re-attributions, hidden filings and statement relabels (selection sees today's statements), and the extraction block, which is served as it is today. updated_at is capped at this time.

as_ofstring

Filing-date cutoff (YYYY-MM-DD): only filings released on or before as_of are considered when picking the statement for each period. This is NOT a snapshot of the values we served on that date - figures are corrected in place, and a request with as_of returns today's version of each value from those filings. Use each line item's updated_at to see when a value last changed, and as_known_at for the values as we held them at a past time.

fiscal_period'9M' | 'FY' | 'H1' | 'H2' | 'Q1' | 'Q2' | 'Q3' | 'Q4'

Filter by fiscal period.

fiscal_yearinteger

Filter by exact fiscal year (e.g. 2024).

fiscal_year_frominteger

Fiscal year range start (inclusive).

fiscal_year_tointeger

Fiscal year range end (inclusive).

include'revisions'

revisions adds a revisions list to every line item: each recorded change to that value, oldest first, with old_value -> new_value and a reason category. With as_known_at, only the changes up to that time.

line_itemsstring

Comma-separated KPI codes to include (e.g. revenue,ebitda,net_income_loss). Omit to return all extracted line items. Statements with none of the requested codes are dropped. Unknown codes return 400 — see /line-item-definitions/.

statement_type'BS' | 'CFS' | 'IS'

Filter to a single statement type.

Response

Structured company financials document.

company_idinteger required
template'industrial' | 'bank' | 'insurer'

The company's KPI template. Banks and insurers also get their template's own line items; see templates on /api/line-item-definitions/ for which items are meaningful for it.

sources_maskedboolean required
period_countinteger required
noticestring

Changes

    • info

      added the new optional query request parameter as_known_at

    • info

      added the new optional query request parameter include

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property ////// to the response with the status