Core data
Name, legal form, register entry, address, business purpose, capital and representation rules: the basic data of every Company profile.
The core data describes who a company is: name, legal form, register entry, address, purpose, capital and representation rules. It is part of the basic data and comes with every company profile, without requesting a feature.
Most fields come from the Handelsregister (commercial register) and the other official registers. We also collect keywords, products and contact data from the web. What a company must register depends on its legal form; the Availability column shows this per field.
Example
The examples on this page come from an example request for Hetzner Online GmbH, Ansbach HRB 6089. If its entry changes, your own request returns different values.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'q=Hetzner Online GmbH'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "YOUR_API_KEY"}, params={ "q": "Hetzner Online GmbH", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-organization"); url.searchParams.append("q", "Hetzner Online GmbH"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
1{2 "entity_id": "94eb910fef13f94585c48c263fa446d4",3 "name": "Hetzner Online GmbH",4 "status": "ACTIVE",5 "legal_form": "GmbH",6 "registration": {7 "court": "Ansbach",8 "register_type": "HRB",9 "register_number": "6089"10 },11 "keywords": [12 "Dedicated Server",13 "Cloud Hosting",14 "Webhosting",15 "Colocation",16 "Object Storage",17 "Domainregistrierung",18 "SSL-Zertifikate",19 "Web-Hosting-Unternehmen"20 ],21 "products_and_services": [22 "Dedizierte Root-Server (Dedicated Servers)",23 "Cloud-Server und virtuelle Server",24 "Managed Server",25 "Webhosting (Shared Hosting)",26 "Colocation Rack / Rechenzentrumsflächen",27 "Storage Box / Object Storage / Storage Share",28 "Domain-Registrierung",29 "SSL-Zertifikate",30 "Load Balancer",31 "DNS Console",32 "Registration Robot",33 "Custom Solutions"34 ],35 "industry_classification": {36 "WZ2008": [37 {38 "code": "62.01.0",39 "label": "Erbringung von Dienstleistungen der Informationstechnologie"40 },41 {42 "code": "63.11.0",43 "label": "Datenverarbeitung, Hosting und damit verbundene Tätigkeiten"44 },45 {46 "code": "61.90.0",47 "label": "Telekommunikation, sonstige"48 }49 ],50 "WZ2025": [51 {52 "code": "62.20.1",53 "label": "Erbringung von Beratungsleistungen auf dem Gebiet der Informationstechnologie"54 },55 {56 "code": "46.50.1",57 "label": "Großhandel mit Datenverarbeitungsgeräten, peripheren Geräten und Software"58 },59 {60 "code": "62.90.0",61 "label": "Erbringung von sonstigen Dienstleistungen der Informationstechnologie"62 }63 ]64 },65 "contact_data": {66 "website": "https://www.hetzner.com/",67 "phone_number": "09831 5050",68 "email": "[email protected]"69 },70 "address": {71 "house_number": "25",72 "street": "Industriestraße",73 "postal_code": "91710",74 "city": "Gunzenhausen",75 "county": "Weißenburg-Gunzenhausen",76 "state": "Bayern",77 "country": "DEU",78 "coordinates": {79 "latitude": 49.12483,80 "longitude": 10.7805281 }82 },83 "seat": {84 "city": "Gunzenhausen"85 },86 "registration_date": null,87 "representation_scheme": {88 "current": [89 "Ist nur ein Geschäftsführer bestellt, so vertritt er die Gesellschaft allein. Sind mehrere Geschäftsführer bestellt, so wird die Gesellschaft durch zwei Geschäftsführer oder durch einen Geschäftsführer gemeinsam mit einem Prokuristen vertreten."90 ],91 "history": [92 {93 "value": [94 "Ist nur ein Vorstandsmitglied bestellt, so vertritt es die Gesellschaft allein. Sind mehrere Vorstandsmitglieder bestellt, so wird die Gesellschaft durch zwei Vorstandsmitglieder oder durch ein Vorstandsmitglied gemeinsam mit einem Prokuristen vertreten."95 ],96 "effective_from": "2002-10-15",97 "effective_to": "2015-07-28"98 },99 {100 "value": [101 "Ist nur ein Geschäftsführer bestellt, so vertritt er die Gesellschaft allein. Sind mehrere Geschäftsführer bestellt, so wird die Gesellschaft durch zwei Geschäftsführer oder durch einen Geschäftsführer gemeinsam mit einem Prokuristen vertreten."102 ],103 "effective_from": "2015-07-28",104 "effective_to": null105 }106 ]107 },108 "capital": {109 "current": {110 "amount": 50000,111 "currency": "EUR",112 "kind": "STAMMKAPITAL"113 },114 "history": [115 {116 "value": {117 "amount": 50000,118 "currency": "EUR",119 "kind": "GRUNDKAPITAL"120 },121 "effective_from": "2002-10-15",122 "effective_to": null123 }124 ]125 },126 "purpose": "Die Durchführung von Internet- und Netzwerkdienstleistungen, das Erstellen und Vertreiben von Software, der Handel mit Hard- und Software, der Betrieb einer Werbeagentur,darüber hinaus der Im- und Export von Waren aller Art, soweit sie keiner Einfuhr- oder Ausfuhrbeschränkung unterliegen und soweit keine Genehmigungen erforderlich sind.",127 "meta": {128 "request_credit_cost": 5,129 "credits_remaining": 145130 }131}
Name and legal form
Name, legal form and status describe the company, the entity_id identifies it. Store the entity_id if you want to fetch or monitor a company again later, or link it to your own data.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| entity_idstring | The company’s ID at handelsregister.ai. Store it as the key in your data. In the parameter q it matches exactly this company.Basic data |
"94eb910fef13f94585c48c263fa446d4" |
always |
| namestring | Company name as it appears in the register, with its legal form suffix. |
"Hetzner Online GmbH" |
as above |
| legal_formstring |
Legal form, usually as the common German abbreviation. Compare case-insensitively, because the spelling can vary slightly, for example oHG. With AI Mode, the full form can appear. The list shows common values; there are more.Values: GmbH Gesellschaft mit beschränkter Haftung (limited liability company), UG (haftungsbeschränkt) Unternehmergesellschaft (mini GmbH), AG Aktiengesellschaft (stock corporation), SE Societas Europaea (European company), KGaA Kommanditgesellschaft auf Aktien (partnership limited by shares), GmbH & Co. KG KG with a GmbH as general partner, KG Kommanditgesellschaft (limited partnership), OHG Offene Handelsgesellschaft (general partnership), e.K. eingetragener Kaufmann (registered sole trader), eG eingetragene Genossenschaft (registered cooperative), PartG Partnerschaftsgesellschaft (professional partnership), also with limited professional liability, e.V. eingetragener Verein (registered association), eGbR eingetragene Gesellschaft bürgerlichen Rechts (registered civil-law partnership) |
"GmbH" |
as above |
| statusstring |
Register status of the company. Other values are possible; treat unknown values as “not active”.Values: ACTIVE active, INSOLVENT in insolvency proceedings, DISSOLVED dissolved, in liquidation, TERMINATED deleted from the register |
"ACTIVE" |
as above |
Register entry
Register court, register type and register number identify a company. We write them together, in our example as “Ansbach HRB 6089”. You can also pass them in this form in the parameter q.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| registrationobject|null | The company’s register entry.Empty when AI Mode knows a company only from web sources; its entity_id then starts with AI_TMP_Basic data | – | always |
| registration.courtstring | Register court as a place name, without “Amtsgericht” (local court), for example Ansbach or Charlottenburg (Berlin). |
"Ansbach" |
as above |
| registration.register_typestring |
Register type, meaning the register and, for the Handelsregister, its division.Values: HRB Handelsregister division B: GmbH, UG, AG, SE, KGaA, HRA Handelsregister division A: e.K., OHG, KG, GmbH & Co. KG, GnR Genossenschaftsregister (register of cooperatives), PR Partnerschaftsregister (register of partnerships), VR Vereinsregister (register of associations), GsR Gesellschaftsregister (company register) for the eGbR |
"HRB" |
as above |
| registration.register_numberstring | Register number as text. Unique only together with register court and register type. |
"6089" |
as above |
| registration_datestring|null | Date of entry in the register, as an ISO 8601 timestamp.Empty when the date is not recorded |
"2013-03-18T00:00:00+00:00" |
mostly: GmbH, UG, AG, SE, KGaA, KG, OHG, eG, PartG rarely: GmbH & Co. KG, e.K. |
Address and registered seat
address is the business address, seat the registered seat (Sitz) in the register. The two can differ, for example when a company is registered in Munich and works in Gauting.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| addressobject | Business address of the company.Basic data | – | always |
| address.streetstring|null | Street without house number.Empty when the address consists of the city only |
"Industriestraße" |
mostly |
| address.house_numberstring|null | House number as text, also with a suffix like “6 a”.Empty when the address has no house number |
"25" |
as above |
| address.postal_codestring|null | Postal code as text, so leading zeros are kept.Empty when the address consists of the city only |
"91710" |
as above |
| address.citystring | City of the business address. |
"Gunzenhausen" |
always |
| address.countystring | District (Landkreis) or district-free city. Missing as a key in some addresses. |
"Weißenburg-Gunzenhausen" |
mostly |
| address.statestring | Federal state (Bundesland). Missing as a key in some addresses. |
"Bayern" |
as above |
| address.countrystring | Country as a three-letter ISO 3166 code, for example DEU. Missing as a key in some addresses. |
"DEU" |
as above |
| address.coordinatesobject | Geo coordinates of the business address, for maps and radius searches. | – | as above |
| address.coordinates.latitudenumber|null | Latitude in decimal degrees.Empty when the address could not be geocoded |
49.12483 |
as above |
| address.coordinates.longitudenumber|null | Longitude in decimal degrees.Empty when the address could not be geocoded |
10.78052 |
as above |
| seatobject | The company’s registered seat (Sitz) in the register. | – | always |
| seat.citystring | City of the registered seat. It can differ from the business address. |
"Gunzenhausen" |
as above |
Business purpose and industry
The business purpose (Unternehmensgegenstand) is in the register for GmbH, UG, AG, SE, KGaA, eG and PartG. GmbH & Co. KG, KG, OHG and sole traders (e.K.) register no purpose. Industry, keywords and products and services exist for every legal form.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| purposestring|null | Business purpose as it appears in the register, in German. With AI Mode, this is a short summary of the business, also for legal forms without a registered purpose.Empty when the legal form registers no purpose, for example KG, OHG and e.K.Basic data |
"Die Durchführung von Internet- und Netzwerkdienstleistun…" |
always: GmbH, UG, AG, SE, KGaA, eG, PartG never: GmbH & Co. KG, KG, OHG, e.K. |
| industry_classificationobject | Industry according to the German classification of economic activities (WZ), in two versions. | – | always |
| industry_classification.WZ2025array | Industry codes according to WZ 2025, the current version. The industry filter of the search uses these codes too.Empty when no industry could be assigned | – | mostly |
| industry_classification.WZ2025[].codestring | Five-digit WZ code, for example 62.20.1. |
"62.20.1" |
as above |
| industry_classification.WZ2025[].labelstring | Name of the economic activity, in German. |
"Erbringung von Beratungsleistungen auf dem Gebiet der In…" |
as above |
| industry_classification.WZ2008array | Industry codes according to the older version WZ 2008, for systems that still use it.Empty when no WZ 2008 assignment exists | – | partly |
| industry_classification.WZ2008[].codestring | Five-digit WZ code according to WZ 2008. |
"62.01.0" |
as above |
| industry_classification.WZ2008[].labelstring | Name of the economic activity, in German. |
"Erbringung von Dienstleistungen der Informationstechnolo…" |
as above |
| keywordsarray | Keywords about the company’s business, collected from public web sources. Extended with AI Mode.Empty when the company has little presence on the web | – | as above |
| products_and_servicesarray | The company’s products and services as a list, collected from public web sources. Extended with AI Mode.Empty when the company has little presence on the web | – | as above |
purpose contains a short summary of the business instead of the register text. AI Mode adds keywords and products and services from the web.
Capital
Corporations register their share capital (Stammkapital or Grundkapital), every change with its date. current is the amount in force, history the changes in chronological order. Partnerships and sole traders have no fixed capital; there current is null and history is empty.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| capitalobject | Registered capital with its history.Basic data | – | always |
| capital.currentobject|null | The capital amount in force.Empty when the legal form registers no fixed capital, for example KG, OHG, e.K. and PartG | – |
always: GmbH, UG, AG, SE, KGaA rarely: eG never: GmbH & Co. KG, KG, OHG, e.K., PartG |
| capital.current.amountnumber | Amount as a number, in the currency of currency. |
50000 |
as above |
| capital.current.currencystring | Currency as an ISO 4217 code, almost always EUR. |
"EUR" |
as above |
| capital.current.kindstring |
Kind of capital. Other values are possible.Values: STAMMKAPITAL Stammkapital (share capital) of a GmbH or UG, GRUNDKAPITAL Grundkapital (share capital) of an AG, SE or KGaA, LIABILITY_SUM Haftsumme (liability amount), for example of a cooperative, CONDITIONAL conditional capital of an AG, in earlier entries |
"STAMMKAPITAL" |
as above |
| capital.historyarray | All registered amounts in chronological order, including the one in force. | – | as above |
| capital.history[].valueobject | The amount with amount, currency and kind, structured like current. | – | as above |
| capital.history[].value.change_amountobject | Amount of the change according to the register entry, with amount and currency. Whether the capital was increased or reduced follows from comparing it with the previous amount. | – |
partly: AG, SE, KGaA rarely: GmbH, UG, eG never: GmbH & Co. KG, KG, OHG, e.K., PartG |
| capital.history[].effective_fromstring|null | Valid from this day, in the format YYYY-MM-DD. |
"2002-10-15" |
always: GmbH, UG, AG, SE, KGaA rarely: eG never: GmbH & Co. KG, KG, OHG, e.K., PartG |
| capital.history[].effective_tostring|null | Valid until this day.Empty when the amount is still in force |
"2005-02-28" |
as above |
Representation rules
The representation rules (Vertretungsregelung) define who may act for the company. The response contains them word for word from the register, in German. In our example request for Hetzner Online GmbH, the history named the management board (Vorstand) until 28 July 2015, the managing directors after that. The authority of individual people is under Power of representation.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| representation_schemeobject | General representation rules of the company with their history.Basic data | – |
always: GmbH, UG, GmbH & Co. KG, KG, OHG, eG, PartG mostly: AG, SE, KGaA, e.K. |
| representation_scheme.currentarray|null | The rules in force as a list of text paragraphs, word for word from the register.Empty when no rules are registered | – | as above |
| representation_scheme.historyarray | All registered versions with their validity, including the one in force. | – | as above |
| representation_scheme.history[].valuearray | The text of this version as a list of paragraphs. | – | as above |
| representation_scheme.history[].effective_fromstring|null | Valid from this day, in the format YYYY-MM-DD. |
"2002-10-15" |
as above |
| representation_scheme.history[].effective_tostring|null | Valid until this day.Empty when the version is still in force |
"2015-07-28" |
as above |
history is empty. The version in force is in current.
Contact and web
Contact data is not in the register. We collect it from the company’s website. Whether it exists therefore depends on what the company publishes on the web.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| contact_dataobject | Contact data from the company’s website.Basic data | – | always |
| contact_data.websitestring|null | Address of the website.Empty when no website was found |
"https://www.hetzner.com/" |
partly |
| contact_data.phone_numberstring|null | Phone number as the company publishes it. The format is not normalized.Empty when no number was found |
"09831 5050" |
as above |
| contact_data.emailstring|null | General email address of the company.Empty when no address was found |
"[email protected]" |
as above |
| website_contentstring|null |
The text of the website as Markdown, for example for your own analysis or a language model. Comes with the feature website_content, only together with AI Mode and at no extra cost.Empty when no website was foundwebsite_content |
"Dedicated Servers, Cloud & Hosting from Germany | Hetzne…" |
as above |
Realtime
With realtime_mode=handelsregister-default, the API also queries the Handelsregister live. The response then contains the people currently registered and _realtime_mode with the result of the query. Realtime is only charged if the query succeeds, but then regardless of what it returns.
| Field | Meaning | Example | Availability |
|---|---|---|---|
| _realtime_modeobject | Result of the Realtime query. Only in the response if you requested realtime_mode.Basic data | – | always |
| _realtime_mode.modestring | The requested mode, handelsregister-default. |
"handelsregister-default" |
as above |
| _realtime_mode.statusstring |
Whether the live query succeeded. With any other value, the response contains the stored data, and Realtime is not charged.Values: success live query succeeded, the data comes straight from the Handelsregister |
"success" |
as above |
_realtime_mode.status is then not success, and Realtime is not charged. If the request takes too long, you get 408 at no cost; try again later.