Reference

Data fields

Every field the MCP server serves, per tool, with type, meaning and the rule for when a field is empty (null).

Search deliberately returns only a compact overview card per result: not all data. That is intentional (fast & economical). The agent fetches the full record on demand via get_company_details or get_full_record.
search_companies

10-field card per result, for searching, ranking, scanning.

get_company_details

Complete profile of one company (all sections below).

get_full_record

Superset of the profile: full taxonomy + lineage.

1 search_companies → card

Compact excerpt. Codes are already resolved to labels here (e.g. GmbH, Oberösterreich).

FieldTypeMeaningnull when …
fnrstringcompany register number (e.g. 078052h)never
namestringregistered company namenever
legal_formstringlegal-form label (e.g. GmbH)unknown
bundeslandstringfederal-state label (e.g. Wien)unknown
postal_codestringpostal code of the registered seat (e.g. 1010)not stated
citystringmunicipality of the registered seat (e.g. Wien)not stated
streetstringstreet + house numberoften empty
is_financial_institutionboolbank/insurer according to the official register (UGB ratios are then missing by design)- (always set)
size_gklstringUGB filing class: W micro, K small, M medium, G large (≠ balance-sheet size, holdings often file small)unknown
bilanzsumme_bandstringhonest size band by total assetsno financial statement
bilanzsumme_latestnumber €total assets of the latest financial statementno financial statement
manager_namestringname of the primary authorized representative (public Firmenbuch data; birth year yes, no day/month)not stated
equity_ratio_latest0-1equity ratio (latest year)not computable
revenue_latestnumber €revenue (latest year)no P&L in the latest financial statement
growth_profilestringshrinking/stable/growing/fast_growing< 2 comparable years
has_guv_latestbooldoes the latest financial statement include a P&L?- (always set)
geschaeftszweigstringbusiness line (Firmenbuch free text)not registered (~15%)
industry_sectionstringÖNACE 2025 section A-V (details under industry)no classification available
oenace_divisionstringÖNACE 2025 division (2-digit, e.g. 85)no classification available
oenace_division_labelstringGerman division title (e.g. Erziehung und Unterricht)no classification available
oenace_groupstringÖNACE 2025 group (3-digit, e.g. 85.5)no classification available
oenace_group_labelstringGerman group title (e.g. Sonstiger Unterricht)no classification available
oenace_division_2008 / oenace_division_2008_labelstringÖNACE 2008 division + title (e.g. 45 motor-vehicle trade; split into 46/47 in 2025)no classification available
oenace_group_2008 / oenace_group_2008_labelstringÖNACE 2008 group + title (e.g. 45.1)no classification available

2 get_company_details → profile

The company sits under result. The raw codes live here (e.g. legal_form: "GES" = GmbH, bundesland: "O" = Upper Austria). The complete code tables are further down under Code tables.

identity · Master data

FieldTypeMeaning
fnrstringcompany register number
register_idstringtechnical ID, form AT_<fnr>
euidstring | nullEuropean Unique Identifier (BRIS), e.g. ATBRA.030444-000: EU-wide unique company ID
namestringregistered company name
legal_formstringlegal form as code (GES = GmbH family; all codes)
statusstringactive / historical / deleted
courtstring | nullcompetent commercial-register court (often empty)

location · Registered seat

FieldTypeMeaning
countrystringCountry of the registered seat, verbatim from the register (usually AUT; e.g. DEU for a foreign seat)
zweigniederlassungobjectDomestic branch office (street, postal code, city), in addition to the seat — never a substitute
bundeslandstringfederal state as code, e.g. W Vienna, O Upper Austria (all codes)
citystringmunicipality
postal_codestringpostal code
streetstring | nullstreet (often empty)

company · Key facts

FieldTypeMeaning
stammkapitalnumber | nullshare capital in € (often empty)
first_filing_yearintfirst available financial-statement year
last_filing_yearintlatest available financial-statement year
filing_years_availableintnumber of available financial-statement years
founded_yearint | nullfounding year from the initial registration (new entry in the Firmenbuch); available for companies registered from ~1995 onwards, otherwise null
founded_sourcestring | nullorigin of the founding year (e.g. neueintragung)
descriptionnullnot populated in V1

size · Size classification

FieldTypeMeaning
gklstringsize class: W micro, K small, M medium, G large
bilanzsumme_bandstringtotal-assets band, small to very_large
peer_percentilesobjectpercentile rank per metric within its own size class (e.g. bilanzsumme: 99.3 = larger than 99.3%)

financials · Financial data

Header fields first, then the positions, each as a time series (year → value).

FieldTypeMeaning
latest_yearintlatest financial-statement year
has_guv_latestbooldoes the latest year include a P&L?
revenue_basisstring | nullorigin of the revenue figure
revenue_yearint | nullFiling year latest.revenue comes from
revenue_basis_changeobject | nullSeries-break notice (abridged P&L, §279 UGB): revenue no longer disclosed, gross profit continues
register_documentsobject | nullFinancial-statement documents the register holds only as PDF (consolidated accounts, AGM minutes); original via get_document
konzernboolFigures come from consolidated group accounts — never silently mixed with single-entity values
filings[].parsed_sourcestring | nullnull = structured XML; pdf_text_llm_v1 = extracted from the official PDF (arithmetically validated, each value flagged PDF_EXTRACTED)
latestobjectkey figures of the latest year (subset)
bilanzobjectbalance-sheet positions (see below)
guvobjectP&L positions (see below; empty {} without a P&L)

Balance-sheet positions in financials.bilanz

PositionMeaning
Total
bilanzsummetotal assets (sum of all assets, equal to total equity and liabilities)
Assets
anlagevermoegenfixed assets (long-term assets)
sachanlagenproperty, plant and equipment (land, buildings, machinery)
finanzanlagenfinancial assets (investments, securities)
umlaufvermoegencurrent assets (short-term assets)
vorraeteinventories (stock)
forderungenreceivables (e.g. trade receivables)
cashcash and cash equivalents (cash, bank balances)
Equity & liabilities
eigenkapitalequity
stammkapitalshare capital (subscribed capital)
kapitalruecklagencapital reserves
gewinnruecklagenrevenue reserves
bilanzgewinn_verlustretained profit / loss
rueckstellungenprovisions
verbindlichkeitenliabilities (debt)

P&L positions in financials.guv · only with has_guv (~3 % of companies)

Under § 277 UGB, only medium-sized and large corporations are required to publish their profit and loss statement (P&L). What matters is whether at least two of the following thresholds (§ 221 UGB; since 2024) are exceeded on two consecutive balance-sheet dates:

  • total assets of €6.25 million
  • revenue of €12.5 million
  • an average of 50 employees

Small and micro corporations only have to publish the balance sheet under § 278 UGB.

PositionMeaning
umsatzerloeserevenue: only under the nature-of-expense method (Gesamtkostenverfahren)
rohergebnisgross result (revenue less cost of sales): only under the cost-of-sales method (Umsatzkostenverfahren)
materialaufwandcost of materials: only under the nature-of-expense method
personalaufwandpersonnel expenses
abschreibungendepreciation and amortization
ebitoperating result (operating earnings before financial result and taxes), § 231(2): almost always present
ebitdaoperating result plus depreciation
jahresueberschussnet income / net loss for the year: almost always present
operating_resultoperating result, correctly named (identical to ebit): only when the P&L reports the financial result and taxes separately (~8 %)
ebit_stricttrue EBIT = earnings before taxes + interest expense: only with separate reporting (~8 %), otherwise not included
Two P&L methods: every company reports under exactly one of two methods, never both. The nature-of-expense method reports umsatzerloese and materialaufwand, the cost-of-sales method reports rohergebnis instead (revenue less cost of sales). That is why around 40 % of P&Ls lack the umsatzerloese line: the revenue is then contained in the rohergebnis. The revenue_basis field on the record states which of the two sources the revenue figure comes from.
Note on EBIT: the Austrian UGB financial statement (§ 231(2)) does not report EBIT. ebit is the operating result (operating earnings before financial result and taxes) and almost always present; operating_result is the same value, correctly named. The true EBIT (ebit_strict, incl. financial result = earnings before taxes + interest expense) and operating_result appear only when the P&L reports the financial result and taxes separately: that covers around 8 % of financial statements; otherwise these two fields are not included. For companies with a material financial or investment result (such as holdings), operating result and true EBIT diverge noticeably.
Balance sheet only, no P&L: where no P&L is available, guv = {}, revenue_latest = null, and margin-based ratios remain empty. Filter for it with has_guv / has_guv_latest.

ratios · Financial ratios

13 ratios, each as a time-series object. Margin and return ratios require a P&L and remain empty otherwise.

RatioMeaning
equity_ratioequity ratio (equity / total assets)
debt_ratiodebt ratio (debt / total assets)
debt_to_equitygearing (debt / equity)
working_capital_ratioworking-capital ratio
anlagedeckungsgrad_1fixed-asset coverage ratio I (equity / fixed assets)
ebit_marginmargin based on the operating result (operating_result / revenue)
ebit_strict_marginmargin on true EBIT (ebit_strict / revenue); null when ebit_strict is null
ebitda_marginEBITDA margin (EBITDA / revenue)
net_marginnet margin (net income / revenue)
personalkostenquotepersonnel-cost ratio (personnel expenses / revenue)
materialaufwandsquotematerial-cost ratio (cost of materials / revenue)
roareturn on assets (ROA)
roereturn on equity (ROE)
capital_profilequalitative capital-structure profile

Each ratio object contains, among others, latest, latest_year, history (year → value), avg_3y/avg_5y, min_5y/max_5y, volatility, trend as well as growth measures.

growth · Growth

FieldTypeMeaning
profilestring | nullshrinking / stable / growing / fast_growing (empty with < 2 comparable years)
methodstring | nullcalculation basis of the profile

employees · Employees

FieldTypeMeaning
latest / latest_year / historyobject | nullemployee count per year, often empty, since the Firmenbuch records employee numbers only sparsely

filings · Filed financial statements + events

filings[] fieldTypeMeaning
stichtagstringbalance-sheet date of the financial statement
formatstringsource format (e.g. legacy_finanzonline, jab_4_0)
parsedboolmachine-parsed?
gklstringsize class at the time of filing
doc_key · document_url · pdf_doc_keystring | nulldocument references (partly empty)

events[]: register events, derived from the daily change feed since 1 July 2026. The official excerpt provides no event log; on every daily update we compare the master data and record deviations as typed events (name_change, seat_change, legal_form_change, management_change, capital_change) with date, description and source. For capital changes additionally capital_from/capital_to, for management changes managers_added/managers_removed (role + name). Two levels: the detailed events (with before/after) are recorded from 1 July 2026; in addition there are coarser historical register events (type + date only, source=change_feed: founding, deletion, merger, split, conversion, capital_change, legal_form_change and others) reaching back to ~2020. Queryable across companies via list_events (see below).

financial_institution · Regulated financial company

Present only for banks, insurers and similar regulated institutions. The source is the official register (OeNB bank list, linked by company register number; insurers via EIOPA/GLEIF in preparation), no name guessing.

FieldTypeMeaning
kindstringbank, insurer, pensionskasse, vorsorgekasse, fund, other_financial
sourcestringregister (official list, unambiguous) or heuristic (name fallback)
caveatstringnote: banks (BWG) / insurers (VAG) report under their own scheme, UGB ratios are missing or diverge

On the search card this is surfaced as the flag is_financial_institution (bool).

industry · Industry (ÖNACE / NACE)

For around 95% of companies, the industry is the official ÖNACE 2025 assignment of the register (Statistik Austria, open HVD dataset, source = register): deterministic, updated monthly, with the full path down to the 5-digit subclass. Only the remaining ~5% (without an official assignment) are classified from the Firmenbuch business line (free text). oenace and nace are built symmetrically and carry the same codes by construction (ÖNACE 2025 = EU NACE Rev. 2.1); ÖNACE with German and English titles, NACE with the official English ones (NACE has no national subclass and ends at class level). The original business line is always preserved. Note: this block used to be called branch and was renamed and extended.

FieldTypeMeaning
geschaeftszweigstringoriginal business line (free text)
oenace.section / section_label_de / section_label_enstringÖNACE 2025 section A-V + titles DE/EN
oenace.division / division_label_de / division_label_enstringdivision (2-digit, e.g. 68) + titles DE/EN
oenace.group / group_label_de / group_label_enstringgroup (e.g. 68.3) + titles DE/EN
oenace.class / subclass / code + *_label_de/*_label_enstringclass (e.g. 11.07), 5-digit subclass + code = official 5-digit code (e.g. 11070): with source=register
oenace.versionstringOENACE_2025
nace.section / division / group + *_labelstringEU NACE Rev. 2.1: identical codes, official English titles, version = NACE_REV_2.1
oenace_2008.section / division / group / class + *_label_de/*_label_enstringthe ÖNACE 2008 twin, only for free-text classification (the official register path directly yields the 2025 code); version = OENACE_2008
code_2008stringassigned ÖNACE 2008 class: only for free-text classification (not with source=register)
source · classified_fromstringregister (official Statistik Austria assignment, authoritative): otherwise lexicon / llm · based on official_register or geschaeftszweig/name

Without a business line the rule is: no guessing. Only unambiguous company names are classified (classified_from: name), otherwise industry is empty. The search card surfaces geschaeftszweig, industry_section plus oenace_division/oenace_group (2025) and oenace_division_2008/oenace_group_2008 including their German labels.

Two editions, both searchable. The codes are ÖNACE 2025 (= NACE Rev. 2.1); in addition, the ÖNACE 2008 edition is maintained. The filters oenace_section/oenace_division/oenace_group match both editions, so a query in the older system never comes up empty. Mind the differences: motor-vehicle trade is division 45 in ÖNACE 2008 and split into 46/47 in ÖNACE 2025. The mapping is the official Statistik Austria correspondence table (deterministic). list_sectors shows which divisions occur per edition.

management · Management

FieldTypeMeaning
n_signatories_latestintnumber of authorized signatories (latest year)
signatories_stable_yearsintyears of unchanged management
primary_manager.ageintcurrent age of the primary managing director (year-based)
primary_manager.birth_yearintbirth year (year only)
primary_manager.role_labelstringfunction (e.g. managing director)
primary_manager.vertretungstring | nulltype of representation (sole / joint representation)
signatories[]listcomplete authorized signatories (all officers: managing directors + authorized officers, "Prokuristen", …): per entry name (only with a legal basis), role_label, vertretung, birth_year (year only), age
Data protection (GDPR): names of authorized representatives (e.g. managing directors) come from the public Firmenbuch and are served for single-company queries. Birth dates only at year granularity (age / birth year, no day or month). Mass extraction and resale are prohibited under the terms of use.

3 get_full_record → full record

Contains everything from the profile plus:

  • financials.positions, the complete 317-position taxonomy (every UGB position)
  • financials.passthrough, unknown source codes incl. history (lossless)
  • financials.completeness, quality measure (position count per year)
  • financials.guv_years, the years with a P&L
  • management.signatories_history, authorized signatories per year
  • derivations, metrics_version + formula registry of the ratios

The same rule applies here: officer names are public Firmenbuch data (single-company queries), birth dates at year granularity only.

4 list_events · get_event_stats → change feed (Pro)

Cross-company feed of register changes, the market and deal-sourcing view: "which companies changed management / raised capital / moved their seat, where, since when". For the change history of one known company, get_company_details is enough (field events[]).

list_events · Filters

ArgumentMeaning
typesone or more of name_change / seat_change / legal_form_change / capital_change / management_change
since / untilperiod (ISO date); default: last 30 days
bundesland · oenace_section · oenace_division · legal_formthe same facets as search_companies
fnrswatchlist, monitor only these company register numbers
page · page_sizepage (1) · results per page (25, max 100)

Returned per event: fnr, name, date, type, description, for capital capital_from/capital_to, for management managers_added/managers_removed (role + name), plus bundesland, legal_form, industry_section. Sorted by date (newest first).

get_event_stats returns, for the same filters, counts by type and by federal state, for market dashboards ("how many capital increases in Upper Austria this month").

Companies instead of events? To find companies that had an event, with financial context and ranked by size, use the event_signal filter in search_companies (see section 5). The triggering events are then attached to each company card.

Two levels. Detailed changes with before/after (capital_from/capital_to, managers_added/managers_removed) are recorded continuously from 1 July 2026 from the daily master-data comparison. In addition, coarser historical register events (type + date only, source=change_feed) reach back to ~2020. An empty result means: no change in the period, not missing data.

5 Filters, sorting, pages

Arguments of search_companies.

FilterMeaning
namesubstring of the company name
legal_formlegal form, e.g. GmbH
bundeslandplain name, e.g. Wien
size_gklsize class W/K/M/G
bilanzsumme_min / _maxtotal assets from / to (€)
equity_ratio_min / _maxequity ratio from / to (0-1)
revenue_min / _maxrevenue from / to (€)
employees_min / _maxemployees from / to
growth_profileshrinking / stable / growing / fast_growing
has_guv · has_guv_latestonly companies with a P&L (ever / in the latest year)
last_filing_year_minlatest financial statement at least from this year
founded_year_min / _maxfounding year from / to
gf_age_minprimary managing director at least X years old (succession screen)
manager_namesubstring of the authorized representative's name (public Firmenbuch data)
oenace_section / oenace_division / oenace_groupindustry: section (A-V), division (68) or group (68.3, precise peers). Matches ÖNACE 2025 and ÖNACE 2008, e.g. motor-vehicle trade as 45 (2008) or 46/47 (2025)
geschaeftszweigsubstring of the business-line free text
postal_code / citypostal-code prefix (1010 exact, 10 = all 10xx) or municipality (substring)
nearradius search: { place, radius_km } or { postal_code, radius_km } (exactly one; radius 1-150 km). Results receive distance_km and are sorted by distance. An ambiguous place name is rejected together with the candidate postal codes.
queryfree-text search across name and activity; freely combinable with all structured filters. Each card receives match_reason (which field matched).
event_signal (Pro)event-driven search, only companies that had a corporate event signal in the period: ownership_change (shareholder capital change, often a share transfer), leadership_change (change of managing directors / officers), capital_raise (capital increase), restructuring (merger/split/contribution/…), new_company, closure, rebrand, relocation. Combines with all financial/profile filters; each card receives the triggering events + latest_event_date. This is the deal-sourcing / sales-trigger view.
event_since / event_untiltime window for event_signal (ISO date); default: last 365 days
statusactive / inactive / all

Sorting: sort = { field, descending } over bilanzsumme, revenue, equity_ratio, employees, last_filing_year, revenue_growth_1y, revenue_growth_3y, revenue_growth_5y (revenue growth: 1 year, 3- and 5-year CAGR; requires a multi-year P&L, otherwise ranked last) (or distance for a radius search). Default: total assets descending. An unknown sort field is rejected together with the list of valid fields. Pages: page (from 1), page_size (default 25).

Response helpers. Every search additionally returns has_more (more pages available), applied_filters (the actually applied, normalized filters, e.g. "Wien" → W) and, when a search with ≥ 2 filters yields 0 results, relaxations: which single filter should be dropped to get results (with the result count per variant). This lets an AI agent find the right constraint in one call instead of varying blindly. Name searches are relevance-ranked (exact/prefix matches first).

6 Code tables

Federal state (code → plain name): B Burgenland · K Kärnten (Carinthia) · N Niederösterreich (Lower Austria) · O Oberösterreich (Upper Austria) · S Salzburg · St Steiermark (Styria) · T Tirol (Tyrol) · V Vorarlberg · W Wien (Vienna).

Legal form: the granular Firmenbuch code sits in the profile (legal_form). The GmbH family is the prefix GE… excluding GEN (GES ≈ 99.7%); the search card labels it as GmbH. GEN is the cooperative (labelled eGen) and is not part of the GmbH filter.

Size class gkl: W micro · K small · M medium · G large.

7 Example response

This is what a complete get_company_details response looks like for a sample company (abridged; time series exemplary). Fields with null and empty objects/lists are also part of the response and are sent where useful, so the agent can distinguish between "not present" and "unknown".

Note: this example is a sample record to illustrate the structure.

// response envelope
"schema_version": "1.0",
"data_version": "2026-06-27",
"provenance": {
  "source":        "Österreichisches Firmenbuch / BMJ, Justiz",
  "license":       "CC BY 4.0",
  "data_version":  "2026-06-27",
  "schema_version": "1.0",
  "built_at":      "2026-06-27T07:32:14Z"
},
"result": {
  "identity": {
    "fnr":         "999999x",
    "register_id": "AT_999999x",
    "name":        "Beispiel Industrie GmbH",
    "legal_form":  "GES",           // code → label "GmbH" (see section 6)
    "status":      "active",
    "court":       null
  },
  "location": {
    "country":     "AUT",
    "bundesland":  "O",             // Oberösterreich (Upper Austria)
    "city":        "Linz",
    "postal_code": "4020",
    "street":      null
  },
  "company": {
    "stammkapital":           35000,
    "first_filing_year":      2014,
    "last_filing_year":       2024,
    "filing_years_available": 11,
    "founded_year":           2013,
    "founded_source":         "first_filing-1",
    "description":            "Unternehmensberatung"
  },
  "size": {
    "gkl":               "M",           // medium
    "bilanzsumme_band":  "large",
    "peer_percentiles": {
      "bilanzsumme":    82.4,
      "equity_ratio":   71.3,
      "revenue":        68.9
    }
  },
  "financials": {
    "latest_year":     2024,
    "has_guv_latest":  true,
    "revenue_basis":   "umsatzerloese",
    "latest": {
      "bilanzsumme":    12450000,
      "eigenkapital":   5230000,
      "umsatzerloese":  18900000,
      "ebit":           1430000,
      "ebitda":         2210000,
      "jahresueberschuss": 980000
    },
    "bilanz": {
      "bilanzsumme": {
        "latest":      12450000,
        "latest_year": 2024,
        "history":     { "2022": 10840000, "2023": 11620000, "2024": 12450000 }
      },
      "eigenkapital":    { "latest": 5230000,  "history": { "2022": 4380000, "2023": 4790000, "2024": 5230000 } }
      // … further balance-sheet positions (verbindlichkeiten, anlagevermoegen, vorraete, cash, …)
    },
    "guv": {
      "umsatzerloese":  { "latest": 18900000, "history": { "2022": 16200000, "2023": 17550000, "2024": 18900000 } },
      "ebit":           { "latest": 1430000,  "history": { "2022": 1180000, "2023": 1290000, "2024": 1430000 } }
      "materialaufwand":   { "latest": -9100000 },
      "personalaufwand":   { "latest": -5200000 },
      "abschreibungen":    { "latest": -780000 },
      "ebitda":            { "latest": 2210000 },
      "jahresueberschuss": { "latest": 980000 }
      // cost-of-sales method instead: "rohergebnis" instead of umsatzerloese + materialaufwand
    }
  },
  "ratios": {
    "equity_ratio": {
      "latest":        0.42,
      "latest_year":   2024,
      "history":       { "2022": 0.404, "2023": 0.412, "2024": 0.42 },
      "avg_3y":        0.412,
      "min_5y":        0.39,
      "max_5y":        0.42,
      "trend":         "rising",
      "growth_1y":     0.019,
      "growth_3y_cagr": 0.021
    },
    "ebit_margin":  { "latest": 0.076, "trend": "stable" }
    // … debt_ratio, debt_to_equity, working_capital_ratio, anlagedeckungsgrad_1,
    //    ebitda_margin, net_margin, personalkostenquote, materialaufwandsquote,
    //    roa, roe, capital_profile
  },
  "growth": {
    "profile": "growing",
    "method":  "revenue_3y_cagr"
  },
  "employees": null,                  // only sparsely recorded in the Firmenbuch
  "management": {
    "n_signatories_latest":    2,
    "signatories_stable_years": 4,
    "primary_manager_name":    "Maria Beispiel",   // public Firmenbuch data (name served)
    "primary_manager": {
      "age":         52,
      "birth_year":  1974,            // year only (GDPR)
      "role_label":  "GESCHÄFTSFÜHRER/IN (handelsrechtlich)",
      "vertretung":  "selbständig"
    }
  },
  "filings": [
    {
      "stichtag":     "2024-12-31",
      "format":       "jab40_semantic",
      "parsed":       true,
      "gkl":          "M",
      "eingereicht":  "2025-08-12",
      "document_url": "https://justizonline.gv.at/…",
      "pdf_doc_key":  null
    }
    // … older financial statements, sorted by stichtag descending
  ],
  "events": [],
  "industry": {                              // industry, derived from the business line
    "geschaeftszweig": "Unternehmensberatung",
    "oenace": {                              // ÖNACE 2025 (national), titles DE + EN
      "section":           "N",
      "section_label_de":  "Erbringung von freiberuflichen, wissenschaftlichen und technischen Dienstleistungen",
      "section_label_en":  "Professional, scientific and technical activities",
      "division":          "70",
      "division_label_de": "Verwaltung und Führung von Unternehmen; Unternehmensberatung",
      "division_label_en": "Activities of head offices and management consultancy",
      "group":             "70.2",
      "group_label_de":    "Unternehmensberatung",
      "group_label_en":    "Business and other management consultancy activities",
      "version":           "OENACE_2025"
    },
    "nace": {                                // EU NACE Rev. 2.1, same codes, English titles
      "section":        "N",
      "section_label":  "Professional, scientific and technical activities",
      "division":       "70",
      "division_label": "Activities of head offices and management consultancy",
      "group":          "70.2",
      "group_label":    "Business and other management consultancy activities",
      "version":        "NACE_REV_2.1"
    },
    "oenace_2008": {                          // ÖNACE 2008 twin, symmetric, also searchable
      "section":           "M",
      "division":          "70",
      "division_label_de": "Verwaltung und Führung von Unternehmen; Unternehmensberatung",
      "group":             "70.2",
      "class":             "70.22",
      "version":           "OENACE_2008"
    },
    "code_2008":       "70.22",       // assigned ÖNACE 2008 class
    "source":          "llm",          // or "lexicon"
    "classified_from": "geschaeftszweig"  // or "name"
  }
}

On the search card (search_companies), codes are already resolved to labels (e.g. legal_form: "GmbH", bundesland: "Oberösterreich"). The full profile and get_full_record carry the raw codes; the tables above in section 6 explain the resolution.

8 Freshness & disclaimer

Every response carries provenance.data_version and built_at (build time of the served data). The data comes from the Austrian Firmenbuch (BMJ, Justiz, EU High Value Dataset, CC BY 4.0), is processed automatically and provided without warranty as to accuracy, completeness or timeliness. The official Firmenbuch excerpt always prevails.

Developer version of this page: FIELD_REFERENCE.md in the repo.