Grundbegrepp
Det du behöver förstå en gång för att hantera varje svar med säkerhet.
Åtta begrepp bär hela API:et. När du känner till dem läser du varje svar rätt och vet i förväg vad en förfrågan kostar.
Hitta företag entydigt
Parametern q i fetch-organization tar emot tre sorters indata. Exemplen på den här sidan är förfrågningar för Hetzner Online GmbH, Ansbach HRB 6089:
| Indata | Exempel | När det passar |
|---|---|---|
| Företagsnamn |
Hetzner Online GmbH |
För att komma igång. Skriv namnet så fullständigt som det står i registret. |
| Registerdomstol och registernummer |
Ansbach HRB 6089 |
Unikt för varje registrerat företag. Domstol, registertyp och nummer hör ihop. |
| entity_id |
94eb910fef13f94585c48c263fa446d4 |
För följdförfrågningar. Du får det i varje svar. |
Enbart registernumret räcker inte, eftersom varje registerdomstol tilldelar sina egna nummer. Ordningen är däremot fri: i exemplet hittar HRB 6089 Ansbach samma företag.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: DIN_API_NYCKEL" \ --data-urlencode 'q=Ansbach HRB 6089'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "DIN_API_NYCKEL"}, params={ "q": "Ansbach HRB 6089", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-organization"); url.searchParams.append("q", "Ansbach HRB 6089"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
entity_id.
Om API:et inte hittar något företag svarar det med 404 och debiterar ingenting. För otydlig indata finns AI-läget (ai_search=on-default): det hittar företaget även från delar av namnet och researchar det på webben. Det kostar 20 extra krediter, även om det inte hittar något företag. För att få flera kandidater på en gång använder du Sök & export.
Funktioner
Varje företagsprofil innehåller grunddata, bland annat namn, bolagsform, status, registeranteckning, adress, verksamhetsföremål, bransch, kapital och företrädarregler. Allt annat begär du som funktion (feature), till exempel related_persons för de verkställande direktörerna eller financial_kpi för de finansiella nyckeltalen.
Flera funktioner skickar du med upprepad feature eller som lista: features=related_persons,financial_kpi. Varje funktion visas i svaret under sin egen nyckel. Bara publications heter history där.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: DIN_API_NYCKEL" \ --data-urlencode 'q=Hetzner Online GmbH' \ --data-urlencode 'feature=related_persons' \ --data-urlencode 'feature=financial_kpi'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "DIN_API_NYCKEL"}, params={ "q": "Hetzner Online GmbH", "feature": ["related_persons", "financial_kpi"], }, ) 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", "related_persons"); url.searchParams.append("feature", "financial_kpi"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
API:et ignorerar okända namn utan felmeddelande, så kontrollera stavningen. Funktioner som din plan inte omfattar utelämnas och debiteras inte.
Alla funktioner med sina priser finns i fetch-organization, varje fält i Datakatalogen.
Krediter
Dataförfrågningar kostar krediter. För en företagsprofil gäller dessa regler:
- Grundpriset på 5 krediter gäller när API:et returnerar ett företag.
- En funktion kostar krediter bara när den returnerar data i svaret. En tom funktion är gratis, även
insolvency_publicationsutan poster. - Realtid och AI-läge är inte funktioner utan tillägg med egna regler:
- Realtid kostar 10 extra krediter så snart live-hämtningen lyckas. Det gäller även när den inte visar något nytt.
- AI-läget kostar 20 extra krediter, även om det inte hittar något företag. Tillägget bortfaller bara när API:et avbryter förfrågan med 408 för att den tar för lång tid.
- Alla andra fel kostar ingenting.
Regeln för varje enskild funktion finns i Debitering, priserna i fetch-organization.
Ett exempel: grunddata med related_persons och financial_kpi kostar 5 + 2 + 1 = 8 krediter om båda funktionerna returnerar data.
Före varje förfrågan kontrollerar API:et om ditt saldo täcker det högsta möjliga priset. Om inte svarar API:et med 402 och debiterar ingenting. Vad som faktiskt debiterades står i meta.request_credit_cost, ditt saldo efteråt i meta.credits_remaining.
1{2 "meta": {3 "request_credit_cost": 5,4 "credits_remaining": 1455 }6}
Du får krediter som startkrediter, varje månad med en kreditprenumeration, eller en gång som påfyllningskrediter. Utan kreditprenumeration är startkrediter och påfyllningskrediter giltiga i 30 dagar; med en aktiv prenumeration förfaller de inte. Allt annat finns i Debitering.
Aktuella data och Realtid
Som standard kommer företagsprofilen från vår databas. Hur aktuell en uppgift är beror på dess källa.
Handelsregister
Vi håller grunddata, personer och registerkungörelser aktuella i vår databas från registret. Det är snabbt och räcker för de flesta ändamål.
Med Realtid (realtime_mode=handelsregister-default) hämtar API:et Aktueller Abdruck (AD, aktuellt utdrag) live från Handelsregister (handelsregistret) i ögonblicket för din förfrågan och returnerar det som JSON. Du får även de nu registrerade personerna i related_persons.current, utan att betala för funktionen.
Om live-hämtningen fungerade visas i _realtime_mode.status. Vi debiterar de 10 krediterna för Realtid bara vid success.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: DIN_API_NYCKEL" \ --data-urlencode 'q=Hetzner Online GmbH' \ --data-urlencode 'realtime_mode=handelsregister-default'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "DIN_API_NYCKEL"}, params={ "q": "Hetzner Online GmbH", "realtime_mode": "handelsregister-default", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-organization"); url.searchParams.append("q", "Hetzner Online GmbH"); url.searchParams.append("realtime_mode", "handelsregister-default"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
1{2 "name": "Hetzner Online GmbH",3 "_realtime_mode": {4 "mode": "handelsregister-default",5 "status": "success"6 },7 "related_persons": {8 "current": [9 {10 "entity_id": "78ad32e16ff779f589a9e88d23356f74",11 "label": "MANAGING_DIRECTOR",12 "role": {13 "en": {14 "long": "Managing Director",15 "short": "MD"16 },17 "de": {18 "long": "Geschäftsführer",19 "short": "GF"20 }21 },22 "name": "Max Mustermann",23 "name_parts": {24 "given": "Max",25 "family": "Mustermann",26 "maiden": null,27 "canonical_name": "Mustermann, Max",28 "aliases": [29 "Mustermann, Max"30 ],31 "previous_names": null32 },33 "start_date": null,34 "end_date": null,35 "birth_date": "1976-01-15",36 "location": {37 "home": {38 "city": "Musterheim"39 }40 },41 "organization_representation_scheme": {42 "current": [43 "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."44 ],45 "history": []46 },47 "role_representation_scheme": {48 "current": [49 "einzelvertretungsberechtigt",50 "mit der Befugnis, im Namen der Gesellschaft mit sich im eigenen Namen oder als Vertreter eines Dritten Rechtsgeschäfte abzuschließen"51 ],52 "history": []53 }54 },55 {56 "entity_id": "73549375ff7d709b9e7e2941ad1ffaa3",57 "label": "MANAGING_DIRECTOR",58 "role": {59 "en": {60 "long": "Managing Director",61 "short": "MD"62 },63 "de": {64 "long": "Geschäftsführer",65 "short": "GF"66 }67 },68 "name": "Paul Musterwald",69 "name_parts": {70 "given": "Paul",71 "family": "Musterwald",72 "maiden": null,73 "canonical_name": "Musterwald, Paul",74 "aliases": [75 "Musterwald, Paul"76 ],77 "previous_names": null78 },79 "start_date": null,80 "end_date": null,81 "birth_date": "1989-07-18",82 "location": {83 "home": {84 "city": "Probebrück"85 }86 },87 "organization_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 "role_representation_scheme": {94 "current": [95 "einzelvertretungsberechtigt"96 ],97 "history": []98 }99 },100 {101 "entity_id": "cfecded2c1d17946c8ab0379aa786eed",102 "label": "MANAGING_DIRECTOR",103 "role": {104 "en": {105 "long": "Managing Director",106 "short": "MD"107 },108 "de": {109 "long": "Geschäftsführer",110 "short": "GF"111 }112 },113 "name": "Jan Musterhuber",114 "name_parts": {115 "given": "Jan",116 "family": "Musterhuber",117 "maiden": null,118 "canonical_name": "Musterhuber, Jan",119 "aliases": [120 "Musterhuber, Jan"121 ],122 "previous_names": null123 },124 "start_date": null,125 "end_date": null,126 "birth_date": "1955-11-06",127 "location": {128 "home": {129 "city": "Probeingen"130 }131 },132 "organization_representation_scheme": {133 "current": [134 "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."135 ],136 "history": []137 },138 "role_representation_scheme": {139 "current": [140 "einzelvertretungsberechtigt"141 ],142 "history": []143 }144 }145 ]146 },147 "meta": {148 "request_credit_cost": 15,149 "credits_remaining": 145150 }151}
Om live-hämtningen misslyckas returnerar API:et sparade data från vår databas. Det ser du på _realtime_mode.status, som då inte är success. Realtid debiteras då inte, vilket även meta.request_credit_cost visar.
Realtid lönar sig när dagens läge spelar roll. Till exempel när du kontrollerar nya affärspartner innan ni skriver avtal, eller ser vem som får företräda företaget just nu.
Årsbokslut
Vi letar efter nypublicerade årsbokslut varje dag. Företagen har dock upp till tolv månader efter räkenskapsårets slut på sig att publicera dem (§ 325 HGB), och många utnyttjar hela fristen. Vissa företag missar medvetet den lagstadgade fristen och publicerar ännu senare.
Det senaste bokslutet avser därför ofta året före förra året. Mer i Aktualitet.
Insolvenskungörelser
Insolvensdomstolarna publicerar oftast sina kungörelser samma dag som beslutet eller kort därefter. Du får dem via funktionen insolvency_publications, var och en med domstol, målnummer och datum.
Nyheter
Funktionen news returnerar nyheter om företaget från webben, med rubrik, källa, datum och länk. Hur aktuella de är beror på när det senast rapporterades om företaget. För små företag finns det ofta bara ett fåtal passande artiklar.
Historik och giltighet
Många uppgifter ändras över tid. API:et returnerar därför det aktuella läget och historiken sida vid sida:
currentär läget per i dag.historylistar varje registrerat tillstånd medeffective_fromocheffective_to. Omeffective_toärnullgäller tillståndet fortfarande i dag.- Personer finns i
related_persons.currentochrelated_persons.past, var och en medstart_dateochend_date.
Varje uppgift med historik kommer från registren och publikationerna, till exempel från Chronologischer Abdruck (CD, kronologiskt utdrag) i Handelsregister eller från alla publicerade årsbokslut.
Så här ser det ut i vårt exempel för företrädarreglerna hos Hetzner Online GmbH. I exempelsvaret nämner de styrelsen (Vorstand) fram till den 28 juli 2015 och de verkställande direktörerna sedan dess:
1{2 "representation_scheme": {3 "current": [4 "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."5 ],6 "history": [7 {8 "value": [9 "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."10 ],11 "effective_from": "2002-10-15",12 "effective_to": "2015-07-28"13 },14 {15 "value": [16 "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."17 ],18 "effective_from": "2015-07-28",19 "effective_to": null20 }21 ]22 }23}
De flesta datum kommer i formatet YYYY-MM-DD. Hur långt bakåt historiken sträcker sig beskrivs i Ålder och historik.
Tomma värden
Inte varje företag har ett värde för varje fält. API:et visar det på två sätt:
null: det finns inget värde för detta fält.[]: listan har inga poster, till exempel inga insolvenskungörelser.
En begärd funktion utan data kommer som null eller [] och kostar ingenting.
1{2 "name": "dm-drogerie markt GmbH + Co. KG",3 "legal_form": "GmbH & Co. KG",4 "contact_data": {5 "website": "https://www.dm.de",6 "phone_number": "+49 721 55920",7 "email": null8 },9 "capital": {10 "current": null,11 "history": []12 },13 "mergers_and_acquisitions": null,14 "insolvency_publications": []15}
Behandla i din kod en saknad nyckel, null och [] likadant, eftersom vissa tomma objekt kommer som []. Läs också fälten via deras namn, eftersom nycklarnas ordning inte är fast.
Om ett värde saknas behöver företaget oftast inte publicera det alls. Vad lagen kräver beroende på bolagsform och storlek beskrivs i Datatillgänglighet. Vissa uppgifter håller vi medvetet tillbaka; de har då redacted: true.
Stabilitet och versioner
API:et växer additivt. Nya data och funktioner kommer som nya fält. Vi tar aldrig bort befintliga fält, vi byter inte namn på dem, och vi ändrar varken deras typ eller betydelse. Därmed förblir varje version bakåtkompatibel.
Ändringar som skulle bryta befintlig kod kommer bara i en ny API-version, till exempel under /v2. Den aktuella versionen körs under /v1.
Låt därför din klient ignorera okända fält och behandla okända värden som ett allmänt fall. Nya fält och funktioner listas i Changelog.
Planer
Företagsprofil, Dokument, Sök & export och Signals kan du använda med varje konto, även utan kreditprenumeration. En kreditprenumeration ger nya krediter varje månad och låser upp mer data:
| Vad du får utöver det | Plus | Pro | Max |
|---|---|---|---|
| Personprofil: Personers roller och innehav | ingår | ingår | ingår |
| Sök & export: Filter för ägande, ledning och insolvens | ingår inte | ingår | ingår |
| Företagsprofil: Över 90 utökade finansiella nyckeltal | ingår inte | ingår | ingår |
| Företagsprofil: Verksamhetsbokslut för energiföretag (§ 6b EnWG) | ingår inte | ingår inte | ingår |
Företagsprofil: Fördjupade delägardata (shareholders_deep) |
ingår inte | ingår inte | ingår |
Företagsnätverk (network) |
ingår inte | ingår | ingår |
| Signals: Insolvenser | ingår inte | ingår | ingår |
| Signals: Omvandlingar & M&A | ingår inte | ingår inte | ingår |
API:et utelämnar funktioner utanför din plan utan fel och debiterar dem inte. Personprofiler och sökfilter utanför din plan avvisas med 403, också utan kostnad. För Signals gäller detta ämnen som du uttryckligen begär; annars får du helt enkelt alla ämnen i din plan.
Planernas priser och krediter hittar du på prissidan.