Βασικές έννοιες
Όσα χρειάζεται να κατανοήσεις μία φορά για να χειρίζεσαι με σιγουριά κάθε απάντηση.
Οκτώ έννοιες στηρίζουν ολόκληρο το API. Όταν τις γνωρίζεις, διαβάζεις σωστά κάθε απάντηση και ξέρεις εκ των προτέρων τι κοστίζει ένα αίτημα.
Μονοσήμαντη εύρεση εταιρειών
Η παράμετρος q του fetch-organization δέχεται τρία είδη εισόδου. Τα παραδείγματα αυτής της σελίδας είναι αιτήματα για τη Hetzner Online GmbH, Ansbach HRB 6089:
| Είσοδος | Παράδειγμα | Πότε ταιριάζει |
|---|---|---|
| Επωνυμία εταιρείας |
Hetzner Online GmbH |
Για αρχή. Γράψε την επωνυμία όσο πιο πλήρη, όπως εμφανίζεται στο μητρώο. |
| Δικαστήριο μητρώου και αριθμός μητρώου |
Ansbach HRB 6089 |
Μοναδικό για κάθε εγγεγραμμένη εταιρεία. Δικαστήριο, τύπος μητρώου και αριθμός πάνε μαζί. |
| entity_id |
94eb910fef13f94585c48c263fa446d4 |
Για επόμενα αιτήματα. Το λαμβάνεις σε κάθε απάντηση. |
Ο αριθμός μητρώου μόνος του δεν αρκεί, γιατί κάθε δικαστήριο μητρώου αποδίδει δικούς του αριθμούς. Η σειρά, αντίθετα, είναι ελεύθερη: στο παράδειγμα, το HRB 6089 Ansbach βρίσκει την ίδια εταιρεία.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'q=Ansbach HRB 6089'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "YOUR_API_KEY"}, 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": "YOUR_API_KEY" }, }); const data = await response.json();
entity_id.
Αν το API δεν βρει εταιρεία, απαντά με 404 και δεν χρεώνει τίποτα. Για ασαφή είσοδο, υπάρχει η Λειτουργία AI (ai_search=on-default): βρίσκει την εταιρεία και από μέρη της επωνυμίας και την ερευνά στο διαδίκτυο. Κοστίζει 20 επιπλέον πιστώσεις, ακόμη και αν δεν βρει εταιρεία. Για να λάβεις πολλούς υποψηφίους ταυτόχρονα, χρησιμοποίησε την Αναζήτηση & Εξαγωγή.
Features
Κάθε προφίλ εταιρείας περιέχει τα βασικά στοιχεία, μεταξύ αυτών επωνυμία, νομική μορφή, κατάσταση, εγγραφή μητρώου, διεύθυνση, σκοπό, κλάδο, κεφάλαιο και κανόνες εκπροσώπησης. Όλα τα υπόλοιπα τα ζητάς ως feature, για παράδειγμα related_persons για τους διαχειριστές ή financial_kpi για τους Οικονομικούς δείκτες.
Πολλά features τα περνάς με επαναλαμβανόμενο feature ή ως λίστα: features=related_persons,financial_kpi. Κάθε feature εμφανίζεται στην απάντηση στο δικό του κλειδί. Μόνο το publications ονομάζεται εκεί history.
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=related_persons' \ --data-urlencode 'feature=financial_kpi'
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": ["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": "YOUR_API_KEY" }, }); const data = await response.json();
Το API αγνοεί άγνωστα ονόματα χωρίς μήνυμα σφάλματος, οπότε έλεγξε την ορθογραφία. Features που δεν περιλαμβάνει το πλάνο σου παραλείπονται και δεν χρεώνονται.
Όλα τα features με τις τιμές τους αναφέρονται στο fetch-organization, κάθε πεδίο στον Κατάλογο δεδομένων.
Πιστώσεις
Τα αιτήματα δεδομένων κοστίζουν πιστώσεις. Για ένα προφίλ εταιρείας ισχύουν οι εξής κανόνες:
- Η βασική τιμή των 5 πιστώσεων ισχύει όταν το API επιστρέφει μια εταιρεία.
- Ένα feature κοστίζει πιστώσεις μόνο όταν επιστρέφει δεδομένα στην απάντηση. Ένα κενό feature είναι δωρεάν, και το
insolvency_publicationsχωρίς καταχωρίσεις. - Ο Πραγματικός χρόνος και η Λειτουργία AI δεν είναι features αλλά προσαυξήσεις με δικούς τους κανόνες:
- Ο Πραγματικός χρόνος κοστίζει 10 επιπλέον πιστώσεις μόλις πετύχει η ζωντανή ανάκτηση. Αυτό ισχύει και όταν δεν δείχνει κάτι νέο.
- Η Λειτουργία AI κοστίζει 20 επιπλέον πιστώσεις, ακόμη και αν δεν βρει εταιρεία. Η προσαύξηση δεν χρεώνεται μόνο όταν το API ακυρώνει το αίτημα με 408 επειδή διαρκεί πολύ.
- Όλα τα άλλα σφάλματα δεν κοστίζουν τίποτα.
Ο κανόνας για κάθε επιμέρους feature βρίσκεται στη Χρέωση, οι τιμές στο fetch-organization.
Ένα παράδειγμα: τα βασικά στοιχεία με related_persons και financial_kpi κοστίζουν 5 + 2 + 1 = 8 πιστώσεις αν και τα δύο features επιστρέψουν δεδομένα.
Πριν από κάθε αίτημα, το API ελέγχει αν το υπόλοιπό σου καλύπτει την υψηλότερη δυνατή τιμή. Αν όχι, το API απαντά με 402 και δεν χρεώνει τίποτα. Τι χρεώθηκε πραγματικά βρίσκεται στο meta.request_credit_cost, το υπόλοιπό σου μετά στο meta.credits_remaining.
1{2 "meta": {3 "request_credit_cost": 5,4 "credits_remaining": 1455 }6}
Πιστώσεις λαμβάνεις ως αρχικές πιστώσεις, κάθε μήνα με μια συνδρομή πιστώσεων ή εφάπαξ ως πιστώσεις επαναφόρτισης. Χωρίς συνδρομή πιστώσεων, οι αρχικές πιστώσεις και οι πιστώσεις επαναφόρτισης ισχύουν 30 ημέρες· με ενεργή συνδρομή δεν λήγουν. Όλα τα υπόλοιπα στη Χρέωση.
Επικαιρότητα δεδομένων και Πραγματικός χρόνος
Από προεπιλογή, το προφίλ εταιρείας προέρχεται από τη βάση δεδομένων μας. Πόσο επίκαιρη είναι μια πληροφορία εξαρτάται από την πηγή της.
Handelsregister
Τα βασικά στοιχεία, τα πρόσωπα και τις ανακοινώσεις μητρώου τα διατηρούμε επίκαιρα στη βάση δεδομένων μας από το μητρώο. Αυτό είναι γρήγορο και αρκεί για τους περισσότερους σκοπούς.
Με τον Πραγματικό χρόνο (realtime_mode=handelsregister-default), το API ανακτά τον Aktueller Abdruck (AD, τρέχον απόσπασμα) ζωντανά από το Handelsregister (εμπορικό μητρώο) τη στιγμή του αιτήματός σου και τον επιστρέφει ως JSON. Λαμβάνεις επίσης τα πρόσωπα που είναι εγγεγραμμένα αυτή τη στιγμή στο related_persons.current, χωρίς να πληρώσεις για το feature.
Αν η ζωντανή ανάκτηση λειτούργησε φαίνεται στο _realtime_mode.status. Τις 10 πιστώσεις για τον Πραγματικό χρόνο τις χρεώνουμε μόνο με success.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: YOUR_API_KEY" \ --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": "YOUR_API_KEY"}, 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": "YOUR_API_KEY" }, }); 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}
Αν η ζωντανή ανάκτηση αποτύχει, το API επιστρέφει τα αποθηκευμένα δεδομένα από τη βάση δεδομένων μας. Το καταλαβαίνεις από το _realtime_mode.status, που τότε δεν είναι success. Ο Πραγματικός χρόνος τότε δεν χρεώνεται, όπως δείχνει και το meta.request_credit_cost.
Ο Πραγματικός χρόνος αξίζει όταν μετράει η σημερινή κατάσταση. Για παράδειγμα, ελέγχεις νέους επιχειρηματικούς εταίρους πριν από την υπογραφή ή βλέπεις ποιος μπορεί να εκπροσωπεί την εταιρεία αυτή τη στιγμή.
Ετήσιες οικονομικές καταστάσεις
Αναζητούμε καθημερινά νέες δημοσιευμένες ετήσιες οικονομικές καταστάσεις. Οι εταιρείες όμως έχουν έως δώδεκα μήνες μετά το τέλος του οικονομικού έτους για να τις δημοσιεύσουν (§ 325 HGB), και πολλές αξιοποιούν όλη την προθεσμία. Ορισμένες εταιρείες χάνουν σκόπιμα τη νόμιμη προθεσμία και δημοσιεύουν ακόμη αργότερα.
Οι πιο πρόσφατες καταστάσεις αφορούν επομένως συχνά το προπροηγούμενο έτος. Περισσότερα στην Επικαιρότητα.
Ανακοινώσεις αφερεγγυότητας
Τα πτωχευτικά δικαστήρια δημοσιεύουν συνήθως τις ανακοινώσεις τους την ημέρα της απόφασης ή λίγο μετά. Τις λαμβάνεις μέσω του feature insolvency_publications, την καθεμία με δικαστήριο, αριθμό υπόθεσης και ημερομηνία.
Ειδήσεις
Το feature news επιστρέφει ειδήσεις για την εταιρεία από το διαδίκτυο, με τίτλο, πηγή, ημερομηνία και σύνδεσμο. Πόσο πρόσφατες είναι εξαρτάται από το πότε γράφτηκε τελευταία κάτι για την εταιρεία. Για μικρές εταιρείες υπάρχουν συχνά λίγα σχετικά δημοσιεύματα.
Ιστορικό και ισχύς
Πολλά στοιχεία αλλάζουν με τον χρόνο. Γι’ αυτό το API επιστρέφει την τρέχουσα κατάσταση και το ιστορικό το ένα δίπλα στο άλλο:
- Το
currentείναι η κατάσταση σήμερα. - Το
historyαπαριθμεί κάθε καταχωρισμένη κατάσταση μεeffective_fromκαιeffective_to. Αν τοeffective_toείναιnull, η κατάσταση ισχύει ακόμη σήμερα. - Τα πρόσωπα βρίσκονται στα
related_persons.currentκαιrelated_persons.past, το καθένα μεstart_dateκαιend_date.
Κάθε στοιχείο με ιστορικό προέρχεται από τα μητρώα και τις δημοσιεύσεις, για παράδειγμα από τον Chronologischer Abdruck (CD, χρονολογικό απόσπασμα) του Handelsregister ή από όλες τις δημοσιευμένες ετήσιες οικονομικές καταστάσεις.
Έτσι φαίνεται στο παράδειγμά μας για τους κανόνες εκπροσώπησης της Hetzner Online GmbH. Στο παράδειγμα απάντησης, αναφέρουν το διοικητικό συμβούλιο έως τις 28 Ιουλίου 2015 και τους διαχειριστές από τότε:
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}
Οι περισσότερες ημερομηνίες έρχονται στη μορφή YYYY-MM-DD. Πόσο πίσω φτάνει το ιστορικό περιγράφεται στο Παλαιότητα και ιστορικό.
Κενές τιμές
Δεν έχει κάθε εταιρεία τιμή για κάθε πεδίο. Το API το δείχνει με δύο τρόπους:
null: δεν υπάρχει τιμή για αυτό το πεδίο.[]: η λίστα δεν έχει καταχωρίσεις, για παράδειγμα καμία ανακοίνωση αφερεγγυότητας.
Ένα feature που ζητήθηκε χωρίς δεδομένα έρχεται ως null ή [] και δεν κοστίζει τίποτα.
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}
Στον κώδικά σου, χειρίσου ένα κλειδί που λείπει, το null και το [] με τον ίδιο τρόπο, γιατί ορισμένα κενά αντικείμενα έρχονται ως []. Διάβαζε επίσης τα πεδία με βάση τα ονόματά τους, γιατί η σειρά των κλειδιών δεν είναι σταθερή.
Αν λείπει μια τιμή, η εταιρεία συνήθως δεν υποχρεούται καν να τη δημοσιεύσει. Τι απαιτεί ο νόμος ανάλογα με τη νομική μορφή και το μέγεθος περιγράφεται στη Διαθεσιμότητα δεδομένων. Ορισμένα στοιχεία τα αποκρύπτουμε σκόπιμα· τότε φέρουν redacted: true.
Σταθερότητα και εκδόσεις
Το API επεκτείνεται προσθετικά. Νέα δεδομένα και features έρχονται ως νέα πεδία. Δεν αφαιρούμε ποτέ υπάρχοντα πεδία, δεν τα μετονομάζουμε και δεν αλλάζουμε ούτε τον τύπο ούτε τη σημασία τους. Έτσι κάθε έκδοση παραμένει συμβατή προς τα πίσω.
Αλλαγές που θα έσπαγαν υπάρχοντα κώδικα έρχονται μόνο σε νέα έκδοση του API, για παράδειγμα στο /v2. Η τρέχουσα έκδοση λειτουργεί στο /v1.
Γι’ αυτό άφησε τον client σου να αγνοεί άγνωστα πεδία και χειρίσου τις άγνωστες τιμές ως γενική περίπτωση. Τα νέα πεδία και features αναφέρονται στο Changelog.
Πλάνα
Προφίλ εταιρείας, Έγγραφα, Αναζήτηση & Εξαγωγή και Signals μπορείς να τα χρησιμοποιείς με κάθε λογαριασμό, ακόμη και χωρίς συνδρομή πιστώσεων. Μια συνδρομή πιστώσεων φέρνει νέες πιστώσεις κάθε μήνα και ξεκλειδώνει περισσότερα δεδομένα:
| Τι λαμβάνεις επιπλέον | Plus | Pro | Max |
|---|---|---|---|
| Προφίλ προσώπου: Ρόλοι και συμμετοχές προσώπων | περιλαμβάνεται | περιλαμβάνεται | περιλαμβάνεται |
| Αναζήτηση & Εξαγωγή: Φίλτρα για ιδιοκτησία, διοίκηση και αφερεγγυότητα | δεν περιλαμβάνεται | περιλαμβάνεται | περιλαμβάνεται |
| Προφίλ εταιρείας: Πάνω από 90 εκτεταμένοι οικονομικοί δείκτες | δεν περιλαμβάνεται | περιλαμβάνεται | περιλαμβάνεται |
| Προφίλ εταιρείας: Οικονομικές καταστάσεις δραστηριοτήτων εταιρειών ενέργειας (§ 6b EnWG) | δεν περιλαμβάνεται | δεν περιλαμβάνεται | περιλαμβάνεται |
Προφίλ εταιρείας: Εταίροι σε βάθος (shareholders_deep) |
δεν περιλαμβάνεται | δεν περιλαμβάνεται | περιλαμβάνεται |
Δίκτυο εταιρείας (network) |
δεν περιλαμβάνεται | περιλαμβάνεται | περιλαμβάνεται |
| Signals: Αφερεγγυότητες | δεν περιλαμβάνεται | περιλαμβάνεται | περιλαμβάνεται |
| Signals: Μετασχηματισμοί & M&A | δεν περιλαμβάνεται | δεν περιλαμβάνεται | περιλαμβάνεται |
Το API παραλείπει features εκτός του πλάνου σου χωρίς σφάλμα και δεν τα χρεώνει. Προφίλ προσώπων και φίλτρα αναζήτησης εκτός του πλάνου σου τα απορρίπτει με 403, επίσης χωρίς κόστος. Για τα Signals, αυτό ισχύει για θέματα που ζητάς ρητά· χωρίς αυτό, λαμβάνεις απλώς όλα τα θέματα του πλάνου σου.
Τις τιμές και τις πιστώσεις των πλάνων θα τις βρεις στη σελίδα τιμών.