Financials
KPIs, balance sheet and P&L from the annual financial statements.
The financial data comes from the annual financial statements that companies publish in the Unternehmensregister (company register). You request it with five features of fetch-organization. Each feature costs credits only when it returns data.
| Feature | What it returns | Credits |
|---|---|---|
| financial_kpi | Financial KPIs: one row of KPIs per financial year | 1 |
| balance_sheet_accounts | Balance sheet: all items per financial year as a tree | 3 |
| profit_and_loss_account | Profit and loss statement (P&L, German GuV): all items per financial year as a tree | 3 |
| annual_financial_statements | Annual statements (Markdown): the full text of the statements, compact for AI agents | 5 |
| annual_financial_statements__html | Annual statements (HTML): the full text with tables as HTML, for display | 5 |
Conventions
- Amounts are in euros, as full amounts without rounding to thousands. Revenue of €538.2 million comes as
538151607.13. - Signs: expenses carry the sign that the statement prints. Some statements show them positive, others negative. So compare expenses without their sign. Losses and deficits are negative.
- Ratios and margins are decimals:
0.75means 75 %. Factors such asdebt_to_equityandinterest_coverageare multiples. - Financial year:
yearis the calendar year in which the financial year ends. A financial year from 2024-10-01 to 2025-09-30 is therefore2025. The exact dates are in_provenance.period_startandperiod_end. - Order: each feature returns a list with one entry per financial year, newest first. A year can be missing between two years if there is no statement for it.
nullmeans: the statement does not give the value, or it cannot be derived from it. A small company, for example, publishes no P&L, sorevenuestays empty.
If a company has no matching statements, the feature comes as an empty list []. We charge no credits for that.
Individual and consolidated statements
An individual statement (Jahresabschluss) shows the company itself, a consolidated statement (Konzernabschluss) the whole group. Without further input, each feature chooses on its own. A response can therefore contain individual and group figures, even for the same year in different features.
Each entry states in _provenance which statement its figures come from. Compare years only within the same statement_type. Otherwise you compare a company with its group.
With financial_statement_type=annual you get only individual statements, with consolidated only consolidated statements. financial_years limits the response to the newest financial years, from 1 to 30. Both parameters apply to all five features and do not change the price. More in Analyze financial KPIs.
The origin of an entry
Each entry of Financial KPIs, balance sheet and P&L contains _provenance, in every plan and also without a plan. The fields are the same in all three features. In the Financial KPIs, _provenance is always the last key of the row.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[]._provenanceobject |
Which statement the figures of the row come from. Present in every row, in every plan and also without a plan, always as the last key.financial_kpi |
– |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[]._provenance.statement_typestring|null |
The kind of statement, as the register names it.Values: Jahresabschluss individual statement of the company, Bilanz a balance sheet published on its own, Konzernabschluss figures of the group, null market data of a listed company |
"Jahresabschluss" |
as above |
| financial_kpi[]._provenance.period_startstring|null | First day of the financial year, as printed in the statement.Empty when the statement gives no start, and for market data |
"2023-01-01" |
as above |
| financial_kpi[]._provenance.period_endstring|null | Last day of the financial year, the balance sheet date. A financial year can be shorter or longer than twelve months, for example after a formation or a change of the financial year. |
"2023-12-31" |
as above |
| financial_kpi[]._provenance.exempt_subsidiaryboolean |
true if the company published its parent's consolidated statement instead of its own. All figures for the year then apply to the group of parent_organization. |
false |
as above |
| financial_kpi[]._provenance.parent_organizationobject|null | The company whose consolidated statement was published, with entity_id and name. The entity_id is null if the name does not identify a company uniquely.Empty when exempt_subsidiary is false |
null |
rarely |
Size and legal form
What a company publishes is set by law, depending on legal form and size class. This decides which fields have values.
GmbH and UG, AG, SE and KGaA, the GmbH & Co. KG and the eG publish their statements. A KG or OHG with a natural person as the partner with personal liability publishes only if it is very large. The same applies to sole traders. Partnership companies (PartG) publish no statements. A group subsidiary can, under certain conditions, skip the disclosure of its own statement. For this it must be included in its parent's consolidated statement (§ 264 (3) HGB).
| Size class | What is published | What you get |
|---|---|---|
| Micro | A shortened balance sheet | Balance sheet and the figures from it, for example total assets |
| Small | Balance sheet and notes, no P&L | Balance sheet and the figures from it, partly the number of employees; usually not the revenue |
| Medium | Balance sheet, P&L, notes and management report; the P&L may start with the gross result | Balance sheet and P&L; the revenue if the P&L shows it separately |
| Large | The complete annual statement with management report | Balance sheet, P&L and KPIs in full depth |
Micro companies may also just deposit their balance sheet. It is then not freely available. More on size classes and deadlines in Data availability.
Companies have twelve months after the end of the financial year to publish, and many use the full period. The newest entry therefore often covers the year before last or an older one.
The Availability column in the tables below sums this up per legal form. There, “partly” means: the value comes if the company's size class publishes it.
Basic KPIs
You get these KPIs with every account, with or without a plan, in the feature financial_kpi (Financial KPIs).
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpiarray |
The Financial KPIs: one row per financial year, newest first.Empty when the company has published no statements that can be evaluatedfinancial_kpi |
– |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].yearinteger | The calendar year in which the financial year ends. |
2023 |
as above |
| financial_kpi[].revenuenumber|null | Revenue in euros.Empty when the statement contains no P&L or no revenue |
538151607.13 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].net_incomenumber|null | Net income or net loss for the year in euros; a loss is negative. |
164916783.06 |
as above |
| financial_kpi[].active_totalnumber|null | Total assets in euros. |
397093655.67 |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].employeesnumber|null | Number of employees, as the statement gives it.Empty when the statement has no notes with the number of employees, for example for micro companies |
340 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].material_expensesnumber|null | Cost of materials in euros, with the sign from the statement. |
116509640.56 |
as above |
| financial_kpi[].personnel_expensesnumber|null | Personnel expenses in euros, with the sign from the statement. |
37557386.2 |
as above |
For example, one financial year from our example request for Hetzner Online GmbH, Ansbach HRB 6089, with the basic KPIs and its origin:
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'q=Hetzner Online GmbH' \ --data-urlencode 'feature=financial_kpi' \ --data-urlencode 'financial_years=1'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "YOUR_API_KEY"}, params={ "q": "Hetzner Online GmbH", "feature": ["financial_kpi"], "financial_years": "1", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-organization"); url.searchParams.append("q", "Hetzner Online GmbH"); url.searchParams.append("feature", "financial_kpi"); url.searchParams.append("financial_years", "1"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
1{2 "financial_kpi": [3 {4 "year": 2023,5 "employees": 340,6 "active_total": 397093655.67,7 "revenue": 538151607.13,8 "material_expenses": 116509640.56,9 "personnel_expenses": 37557386.2,10 "net_income": 164916783.06,11 "_provenance": {12 "statement_type": "Jahresabschluss",13 "period_start": "2023-01-01",14 "period_end": "2023-12-31",15 "exempt_subsidiary": false,16 "parent_organization": null17 }18 }19 ]20}
Extended KPIs
With the Pro and Max plans, each row of the Financial KPIs contains more than 90 further KPIs. They come in the same row and at the same price.
We calculate ratios, margins and totals such as ebitda or net_debt_broad from the items of the statement. If a required item is missing, the KPI is null.
Size and per-employee values
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].company_size_by_employeesstring|null |
Size class by number of employees.Values: micro micro, small small, medium medium, large largefinancial_kpi · from Pro |
"large" |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].company_size_by_assetsstring|null |
Size class by total assets.Values: micro micro, small small, medium medium, large large |
"large" |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].company_size_by_revenuestring|null |
Size class by revenue.Values: micro micro, small small, medium medium, large large |
"large" |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].revenue_per_employeenumber|null | Revenue per employee in euros. |
1582798.844 |
as above |
| financial_kpi[].net_income_per_employeenumber|null | Net income per employee in euros. |
485049.362 |
as above |
Balance sheet: totals and items
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].assets_totalnumber|null |
Sum of assets according to the balance sheet, in euros.financial_kpi · from Pro |
397093655.67 |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].equity_totalnumber|null | Equity in euros. |
297695266.84 |
as above |
| financial_kpi[].liabilities_totalnumber|null | Total liabilities in euros. |
28921831.79 |
as above |
| financial_kpi[].provisions_totalnumber|null | Total provisions in euros. |
55716527.94 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].current_assets_totalnumber|null | Current assets in euros. |
75902450.81 |
as above |
| financial_kpi[].fixed_assets_totalnumber|null | Fixed assets in euros. |
316193205.41 |
as above |
| financial_kpi[].inventory_totalnumber|null | Inventories in euros. |
2605622.88 |
as above |
| financial_kpi[].receivables_totalnumber|null | Receivables and other assets in euros. |
34451734.53 |
as above |
| financial_kpi[].trade_receivablesnumber|null | Trade receivables in euros. |
25390709.7 |
as above |
| financial_kpi[].intragroup_receivablesnumber|null | Receivables from affiliated companies in euros. |
548819.99 |
as above |
| financial_kpi[].securities_current_totalnumber|null | Securities held as current assets in euros. |
null |
as above |
| financial_kpi[].cash_and_equivalentsnumber|null | Cash on hand, bank balances and cheques in euros. |
38845093.4 |
as above |
| financial_kpi[].ppe_totalnumber|null | Property, plant and equipment in euros. |
269497218.27 |
as above |
| financial_kpi[].land_and_buildingsnumber|null | Land and buildings, including buildings on third-party land, in euros. |
46944085.59 |
as above |
| financial_kpi[].intangible_assetsnumber|null | Intangible assets in euros. |
18788946.41 |
as above |
| financial_kpi[].goodwillnumber|null | Goodwill in euros. |
null |
as above |
| financial_kpi[].long_term_financial_assetsnumber|null | Financial assets (long-term) in euros. |
27907040.73 |
as above |
| financial_kpi[].prepaid_expensesnumber|null | Prepaid expenses in euros. |
4997999.45 |
as above |
| financial_kpi[].capital_reservesnumber|null | Capital reserves in euros. |
536224.77 |
as above |
| financial_kpi[].revenue_reservesnumber|null | Revenue reserves in euros. |
20005000 |
as above |
| financial_kpi[].profit_loss_carried_forwardnumber|null | Profit or loss carried forward in euros; a loss carried forward is negative. |
332187259.01 |
as above |
| financial_kpi[].pension_provisionsnumber|null | Provisions for pensions and similar obligations in euros. |
null |
as above |
| financial_kpi[].other_provisionsnumber|null | Other provisions in euros. |
22278401.94 |
as above |
| financial_kpi[].trade_payablesnumber|null | Trade payables in euros. |
14625866.4 |
as above |
| financial_kpi[].intragroup_payablesnumber|null | Liabilities to group companies in euros. |
2667666.2 |
as above |
| financial_kpi[].liabilities_to_affiliated_companiesnumber|null | Liabilities to affiliated companies in euros. |
2667666.2 |
as above |
| financial_kpi[].other_liabilitiesnumber|null | Other liabilities in euros. |
11628299.19 |
as above |
| financial_kpi[].deferred_incomenumber|null | Deferred income in euros. |
14760029.1 |
as above |
| financial_kpi[].bank_debtnumber|null | Liabilities to banks in euros. |
null |
as above |
| financial_kpi[].bondsnumber|null | Bonds in euros. |
null |
as above |
Structure and balance sheet ratios
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].equity_rationumber|null |
Equity ratio: equity divided by total assets.financial_kpi · from Pro |
0.75 |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].debt_to_equitynumber|null | Debt-to-equity: liabilities divided by equity, as a factor. |
0.097 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].debt_to_assetsnumber|null | Liabilities divided by total assets. |
0.073 |
as above |
| financial_kpi[].cash_to_assetsnumber|null | Cash and cash equivalents divided by total assets. |
0.098 |
as above |
| financial_kpi[].cash_to_liabilitiesnumber|null | Cash and cash equivalents divided by liabilities. |
1.343 |
as above |
| financial_kpi[].receivables_to_assetsnumber|null | Receivables divided by total assets. |
0.087 |
as above |
| financial_kpi[].inventory_to_assetsnumber|null | Inventories divided by total assets. |
0.007 |
as above |
| financial_kpi[].ppe_to_assetsnumber|null | Property, plant and equipment divided by total assets. |
0.679 |
as above |
| financial_kpi[].intangible_to_assetsnumber|null | Intangible assets divided by total assets. |
0.047 |
as above |
| financial_kpi[].goodwill_to_assetsnumber|null | Goodwill divided by total assets. |
null |
as above |
| financial_kpi[].intangible_to_equitynumber|null | Intangible assets divided by equity. |
0.063 |
as above |
| financial_kpi[].tangible_equitynumber|null | Equity without intangible assets and goodwill, in euros. |
278906320.43 |
as above |
| financial_kpi[].tangible_equity_rationumber|null | Tangible equity divided by total assets. |
0.702 |
as above |
Working capital and debt
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].operating_working_capitalnumber|null |
Inventories plus trade receivables, minus trade payables, in euros.financial_kpi · from Pro |
13370466.18 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].net_working_capital_strictnumber|null | Current assets minus short-term liabilities, narrowly defined, in euros. |
61276584.41 |
as above |
| financial_kpi[].net_working_capital_approxnumber|null | Approximation of net working capital when the statement does not give all maturities, in euros. |
46980619.02 |
as above |
| financial_kpi[].interest_bearing_debt_strictnumber|null | Interest-bearing debt, narrowly defined: mainly bank debt and bonds, in euros. |
null |
as above |
| financial_kpi[].interest_bearing_debt_broadnumber|null | Interest-bearing debt, broadly defined, in euros. |
14295965.39 |
as above |
| financial_kpi[].net_debt_narrownumber|null | Net debt: interest-bearing debt (narrow) minus cash and cash equivalents, in euros. Negative means net cash. |
null |
as above |
| financial_kpi[].net_debt_broadnumber|null | Net debt: interest-bearing debt (broad) minus cash and cash equivalents, in euros. Negative means net cash. |
-24549128.01 |
as above |
P&L items and results
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].material_expenses_goodsnumber|null |
Cost of raw materials, consumables and supplies and of purchased goods, in euros.financial_kpi · from Pro |
1157010.5 |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].material_expenses_servicesnumber|null | Cost of purchased services in euros. |
115352630.06 |
as above |
| financial_kpi[].wages_salariesnumber|null | Wages and salaries in euros. |
33140885.29 |
as above |
| financial_kpi[].social_expensesnumber|null | Social security contributions in euros. |
4416500.91 |
as above |
| financial_kpi[].pension_costsnumber|null | Expenses for pensions and support in euros. |
null |
as above |
| financial_kpi[].depreciation_amortizationnumber|null | Depreciation and amortization of intangible assets and property, plant and equipment, in euros. |
129958760.25 |
as above |
| financial_kpi[].depreciation_amortization_operatingnumber|null | Operating depreciation and amortization, without write-downs of financial assets, in euros. |
129958760.25 |
as above |
| financial_kpi[].write_downs_financial_assets_and_securitiesnumber|null | Write-downs of financial assets and of securities held as current assets, in euros. |
null |
as above |
| financial_kpi[].other_operating_incomenumber|null | Other operating income in euros. |
1229615.57 |
as above |
| financial_kpi[].other_operating_expensesnumber|null | Other operating expenses in euros. |
29380170.42 |
as above |
| financial_kpi[].selling_expensesnumber|null | Selling expenses in euros, for a P&L under the cost of sales method. |
null |
as above |
| financial_kpi[].admin_expensesnumber|null | General administrative expenses in euros, for a P&L under the cost of sales method. |
null |
as above |
| financial_kpi[].gross_profitnumber|null | Gross profit: revenue minus cost of materials or cost of sales, in euros. |
null |
as above |
| financial_kpi[].ebitnumber|null | Earnings before interest and taxes (EBIT) in euros. |
null |
as above |
| financial_kpi[].ebtnumber|null | Result from ordinary activities before taxes (EBT) in euros. |
null |
as above |
| financial_kpi[].ebitdanumber|null | Earnings before interest, taxes, depreciation and amortization (EBITDA) in euros. |
null |
as above |
| financial_kpi[].income_taxesnumber|null | Taxes on income and earnings in euros. |
67650181.5 |
as above |
| financial_kpi[].other_taxesnumber|null | Other taxes in euros. |
94694.61 |
as above |
| financial_kpi[].income_after_taxesnumber|null | Result after taxes in euros. |
165011477.67 |
as above |
| financial_kpi[].interest_incomenumber|null | Interest and similar income in euros. |
5025778.39 |
as above |
| financial_kpi[].interest_expensenumber|null | Interest and similar expenses in euros, with the sign from the statement. |
42.37 |
as above |
| financial_kpi[].finance_incomenumber|null | Total income from financing activities, in euros. |
5025778.39 |
as above |
| financial_kpi[].finance_income_from_affiliatesnumber|null | Income from investments in affiliated companies, in euros. |
null |
as above |
Margins and P&L ratios
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].gross_marginnumber|null |
Gross margin: gross profit divided by revenue.financial_kpi · from Pro |
null |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].ebitda_marginnumber|null | EBITDA margin: EBITDA divided by revenue. |
null |
as above |
| financial_kpi[].ebit_marginnumber|null | EBIT margin: EBIT divided by revenue. |
null |
as above |
| financial_kpi[].net_marginnumber|null | Net margin: net income divided by revenue. |
0.306 |
as above |
| financial_kpi[].material_intensitynumber|null | Material ratio: cost of materials divided by revenue. |
0.216 |
as above |
| financial_kpi[].personnel_intensitynumber|null | Personnel ratio: personnel expenses divided by revenue. |
0.07 |
as above |
| financial_kpi[].sganumber|null | Selling and administrative expenses combined (SG&A), in euros. |
null |
as above |
| financial_kpi[].sga_rationumber|null | Selling and administrative expenses divided by revenue. |
null |
as above |
| financial_kpi[].opex_corenumber|null | Core operating expenses of the financial year in euros. |
66937556.62 |
as above |
| financial_kpi[].opex_rationumber|null | Core operating expenses divided by revenue. |
0.124 |
as above |
| financial_kpi[].interest_coveragenumber|null | Interest coverage: EBIT divided by interest expense, as a factor. |
null |
as above |
| financial_kpi[].effective_tax_ratenumber|null | Effective tax rate: income taxes divided by result before taxes. |
null |
as above |
| financial_kpi[].capitalized_own_work_rationumber|null | Own work capitalized divided by revenue. |
0.003 |
as above |
| financial_kpi[].inventory_change_rationumber|null | Changes in inventories divided by revenue. |
null |
as above |
| financial_kpi[].finance_to_ebt_rationumber|null | Financial result divided by result before taxes. |
null |
as above |
Source of the row
| Field | Meaning | Example | Availability |
|---|---|---|---|
| financial_kpi[].source_statement_datestring|null |
Balance sheet date of the statement the row comes from. Same as _provenance.period_end.financial_kpi · from Pro |
"2023-12-31" |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| financial_kpi[].source_statement_typestring|null | Kind of statement the row comes from. Same as _provenance.statement_type. |
"Jahresabschluss" |
as above |
Accounting standards
Companies prepare their statements under different rules. Most follow the German Commercial Code (HGB). Groups on the capital market prepare their consolidated statement under the international IFRS standards.
Even under HGB, statements look different. The balance sheet follows the scheme of § 266 HGB; small companies publish it in shortened form. The P&L follows the total cost method or the cost of sales method (§ 275 HGB). Each method keeps its own items.
So that you can compare items across years and between companies, we give every recognized line a uniform name. It is in name.de and name.en, no matter which standard and which label the statement prints for the line. “5. Personalaufwand” thus becomes Personalaufwand and Personnel expenses everywhere.
name.in_report keeps the label exactly as it appears in the statement, with its outline number. Use it for display and for checking against the original. We take amounts, order and structure from the statement.
If we do not map a line to a uniform item, name.en is missing and name.de repeats the printed label. So name.en tells you whether a line has a uniform name.
For KPIs calculated the same way for every company, use the Financial KPIs. Which framework a statement was prepared under is given in audit.accounting_framework in the annual statements, if the statement contains an auditor's opinion.
Balance sheet
The feature balance_sheet_accounts returns the balance sheet of each financial year with all items. The items form a tree, structured as in the statement. We normalize their names; more on this under Accounting standards.
The roots are Aktivseite (assets) and Passivseite (equity and liabilities). Recognize them and every known item by name.de, not by position. How deep an item sits can differ between two statements. So search the whole tree.
The children of an item do not have to add up to its total. “Davon” lines (“of which”) are part of the parent value, not an addition.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| balance_sheet_accountsarray |
The balance sheets: one entry per financial year, newest first.Empty when the company has published no balance sheetbalance_sheet_accounts |
– |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| balance_sheet_accounts[].yearinteger | The calendar year in which the financial year ends. |
2023 |
as above |
| balance_sheet_accounts[].balance_sheet_accountsarray | The tree of items with the roots Aktivseite and Passivseite. Each node has name, value and children. | – | as above |
| balance_sheet_accounts[].balance_sheet_accounts[].name.destring | The uniform German name of the item, the same across years, companies and accounting standards. Use it to recognize an item. If the line is not mapped to a uniform item, this is the printed label. |
"Aktivseite" |
as above |
| balance_sheet_accounts[].balance_sheet_accounts[].name.enstring | The uniform English name of the item. If the key is missing, the line is not mapped to a uniform item. |
"Assets" |
as above |
| balance_sheet_accounts[].balance_sheet_accounts[].name.in_reportstring|null | The label exactly as the statement prints it, with its outline number. Meant for display and for checking against the original. |
"Aktiva" |
as above |
| balance_sheet_accounts[].balance_sheet_accounts[].valuenumber|null | The amount of the item in euros. If the statement prints no amount, this is the sum of the children. |
397093655.67 |
as above |
| balance_sheet_accounts[].balance_sheet_accounts[].childrenarray | The sub-items in the printed order, with the same structure. Can be empty. | – |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| balance_sheet_accounts[]._provenanceobject | Which statement the balance sheet comes from, with the same fields as in the Financial KPIs. | – |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| balance_sheet_accounts[].activity_statementsarray |
The activity statements of an energy utility (§ 6b EnWG). Each activity has activity.name with de, en and in_report, the balance sheet tree and _provenance with statement_type Tätigkeitsabschluss. Only if the statement contains activity statements.balance_sheet_accounts · from Max |
– | rarely |
With the Max plan you also get the activity statements of energy utilities, at no extra cost. These are the separate balance sheets that an energy utility publishes for each regulated activity under § 6b EnWG. They are in activity_statements, each with activity.name, the tree and _provenance. The activities usually cover only part of the company. So do not add them up and do not compare them with the company's totals.
In the example of Hetzner Online GmbH, the start of the 2023 balance sheet, shortened to the first branch of the assets side:
1{2 "balance_sheet_accounts": [3 {4 "year": 2023,5 "balance_sheet_accounts": [6 {7 "name": {8 "de": "Aktivseite",9 "en": "Assets",10 "in_report": "Aktiva"11 },12 "value": 397093655.67,13 "children": [14 {15 "name": {16 "de": "Anlagevermögen",17 "en": "Fixed Assets",18 "in_report": "A. Anlagevermögen"19 },20 "value": 316193205.41,21 "children": [22 {23 "name": {24 "de": "Immaterielle Vermögensgegenstände",25 "en": "Intangible Assets",26 "in_report": "I. Immaterielle Vermögensgegenstände"27 },28 "value": 18788946.41,29 "children": [30 {31 "name": {32 "de": "Entgeltlich erworbene Konzessionen",33 "en": "Purchased Concessions",34 "in_report": "1. entgeltlich erworbene Konzessionen, gewerbliche Schutzrechte und ähnliche Rechte und Werte sowie Lizenzen an solchen Rechten und Werten"35 },36 "value": 13879378,37 "children": []38 },39 {40 "name": {41 "de": "Geleistete Anzahlungen",42 "en": "Advance Payments",43 "in_report": "2. geleistete Anzahlungen"44 },45 "value": 4909568.41,46 "children": []47 }48 ]49 }50 ]51 }52 ]53 }54 ],55 "_provenance": {56 "statement_type": "Jahresabschluss",57 "period_start": "2023-01-01",58 "period_end": "2023-12-31",59 "exempt_subsidiary": false,60 "parent_organization": null61 }62 }63 ]64}
P&L
The feature profit_and_loss_account returns the profit and loss statement of each financial year. The nodes are structured as in the balance sheet; the list is called profit_and_loss_accounts here.
The top level contains items and printed subtotals side by side, for example gross result or net income. So do not add them up; use the printed results.
Medium and large companies publish a P&L. Medium companies may start it with the gross result; then revenue is missing as a separate line.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| profit_and_loss_accountarray |
The profit and loss statements: one entry per financial year, newest first. Each entry holds its items under profit_and_loss_accounts.Empty when the company has published no P&L, for example as a small companyprofit_and_loss_account |
– |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| profit_and_loss_account[].yearinteger | The calendar year in which the financial year ends. |
2023 |
as above |
| profit_and_loss_account[].profit_and_loss_accountsarray | The lines of the P&L in the printed order, as a tree like in the balance sheet. At the top, items and subtotals stand side by side. | – | as above |
| profit_and_loss_account[].profit_and_loss_accounts[].name.destring | The uniform German name of the item, the same across years, companies and accounting standards. If the line is not mapped to a uniform item, this is the printed label. |
"Umsatzerlöse" |
as above |
| profit_and_loss_account[].profit_and_loss_accounts[].name.enstring | The uniform English name of the item. If the key is missing, the line is not mapped to a uniform item. |
"Revenue" |
as above |
| profit_and_loss_account[].profit_and_loss_accounts[].name.in_reportstring|null | The label exactly as the statement prints it. Meant for display and for checking against the original. |
"1. Umsatzerlöse" |
as above |
| profit_and_loss_account[].profit_and_loss_accounts[].valuenumber|null | The amount in euros. Expenses carry the sign from the statement. |
538151607.13 |
as above |
| profit_and_loss_account[].profit_and_loss_accounts[].childrenarray | The sub-lines with the same structure. Can be empty. | – | as above |
| profit_and_loss_account[]._provenanceobject | Which statement the P&L comes from, with the same fields as in the Financial KPIs. | – | as above |
| profit_and_loss_account[].activity_statementsarray |
The P&L per activity of an energy utility (§ 6b EnWG): activity.name, the lines in profit_and_loss_accounts and _provenance. Only if the statement contains activity statements.profit_and_loss_account · from Max |
– | rarely |
Here too, the Max plan returns the activity statements of energy utilities in activity_statements, with the P&L of each activity under profit_and_loss_accounts. You match the balance sheet and P&L of an activity through activity.name.de.
Annual statements
The features annual_financial_statements and annual_financial_statements__html return the published statements in full text. This includes balance sheet, P&L, notes and management report, as far as the company publishes them.
The Markdown variant is mainly meant for AI agents. It is much more compact than HTML and saves tokens. The originals often have no clean structure. Common Markdown renderers therefore do not display the text cleanly without further processing. For display with tables, use the HTML variant. Both variants have the same fields; only the text is in document_md or in document_html.
Without financial_years you get the five newest statements. With financial_years=3 you get all statements of the three newest financial years. A statement can be very long. The HTML variant in particular gets large with many years.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| annual_financial_statementsarray |
The published statements in full text as Markdown, newest first.Empty when the company has published no statementsannual_financial_statements |
– |
mostly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| annual_financial_statements[].document_typestring |
The kind of statement.Values: Jahresabschluss individual statement, Konzernabschluss statement of the group |
"Jahresabschluss" |
as above |
| annual_financial_statements[].document_titlestring | The title of the publication, with the financial year. |
"Jahresabschluss zum Geschäftsjahr vom 01.01.2023 bis zum…" |
as above |
| annual_financial_statements[].document_datestring | The date of publication. |
"2025-06-25" |
as above |
| annual_financial_statements[].yearinteger | The calendar year in which the financial year ends. |
2023 |
as above |
| annual_financial_statements[].languagestring | The language of the statement as its German name, for example Deutsch or Englisch. It is a text, not a code. |
"Deutsch" |
as above |
| annual_financial_statements[].document_mdstring | The full text as Markdown, with balance sheet, P&L, notes and management report, as far as published. Compact for AI agents; for display, use document_html. |
"Firma\nInformation\nBezeichnung \nHetzner Online GmbH, G…" |
as above |
| annual_financial_statements__htmlarray |
The same statements as HTML with tables, for display. Each entry has the same fields; the text is in document_html instead of document_md.Empty when the company has published no statementsannual_financial_statements__html |
– | as above |
Audit
If a statement contains an auditor's opinion, audit describes the audit: who audited, under which framework and when the opinion was signed. Without an opinion, audit is null.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| annual_financial_statements[].auditobject|null |
The audit of the statement, if it contains an auditor's opinion. Included in the price of the feature.Empty when the statement contains no auditor's opinionannual_financial_statements |
– |
partly: GmbH, UG, AG, SE, KGaA, GmbH & Co. KG, eG rarely: KG, OHG, e.K. never: PartG |
| annual_financial_statements[].audit.kindstring |
The kind of report.Values: AUDIT_REPORT auditor's opinion (Bestätigungsvermerk) |
"AUDIT_REPORT" |
as above |
| annual_financial_statements[].audit.subjectstring |
Which statement was audited.Values: OWN the company's own statement, OWN_GROUP the company's own consolidated statement |
"OWN" |
as above |
| annual_financial_statements[].audit.auditedboolean | true if the statement was audited. |
true |
as above |
| annual_financial_statements[].audit.accounting_frameworkstring|null |
The framework of the audited statement.Values: HGB German Commercial Code (Handelsgesetzbuch), IFRS_EU IFRS as adopted in the EU, PUBLG German Disclosure Act (Publizitätsgesetz) |
"HGB" |
as above |
| annual_financial_statements[].audit.auditor.namestring | Name of the audit firm. |
"WP Koehler GmbH Wirtschaftsprüfungsgesellschaft" |
as above |
| annual_financial_statements[].audit.auditor.typestring |
Kind of auditor.Values: FIRM audit firm (Wirtschaftsprüfungsgesellschaft), COOP_ASSOCIATION cooperative auditing association |
"FIRM" |
as above |
| annual_financial_statements[].audit.auditor.entity_idstring|null | The entity_id of the audit firm, usable as q in fetch-organization.Empty when the name does not identify a company uniquely |
null |
as above |
| annual_financial_statements[].audit.auditor.networkobject|null | The audit network with key and name, for example PwC.Empty when the firm belongs to no known network | – | as above |
| annual_financial_statements[].audit.auditor.signatoriesarray | The signing auditors with name, academic_title and qualification, for example WP for Wirtschaftsprüfer (German public auditor). | – | as above |
| annual_financial_statements[].audit.signedobject|null | Place (place) and date (date) of the auditor's opinion. | – | as above |
The newest statement of Hetzner Online GmbH at the time of our example request, text shortened:
1{2 "annual_financial_statements": [3 {4 "document_type": "Jahresabschluss",5 "document_date": "2025-06-25",6 "document_title": "Jahresabschluss zum Geschäftsjahr vom 01.01.2023 bis zum 31.12.2023",7 "language": "Deutsch",8 "year": 2023,9 "audit": {10 "kind": "AUDIT_REPORT",11 "subject": "OWN",12 "audited": true,13 "accounting_framework": "HGB",14 "auditor": {15 "name": "WP Koehler GmbH Wirtschaftsprüfungsgesellschaft",16 "type": "FIRM",17 "entity_id": null,18 "network": null,19 "signatories": [20 {21 "name": "Reiner Musterwald",22 "academic_title": null,23 "qualification": "WP"24 }25 ]26 },27 "signed": {28 "place": "Seeheim-Jugehein",29 "date": "2024-06-10"30 }31 },32 "document_md": "Firma Information Bezeichnung Hetzner Online GmbH, Gunzenhausen Rechnungslegung / Finanzberichte Unternehmensregister Jahresabschluss zum Geschäftsjahr vom 01.01.2023 bis zum 31.12.2023 Datum: 25.06.2025 Sprache: Deutsch | | | --- | | He…"33 }34 ]35}