Node-SDK

Die API aus JavaScript und TypeScript.

Installieren

Terminal
npm install handelsregister
export HANDELSREGISTER_API_KEY=DEIN_API_SCHLUESSEL
Was
Was Wert
Paket handelsregister
Aktuelle Version 0.7.0
Node.js 22.13 oder neuer
TypeScript Typdefinitionen enthalten
Lizenz AGPL-3.0
Quellcode github.com/Handelsregister-AI/handelsregister-js

Erste Anfrage

JavaScript
import { Handelsregister } from 'handelsregister';

const client = new Handelsregister({ apiKey: process.env.HANDELSREGISTER_API_KEY });

const firma = await client.fetchOrganization({ q: 'Hetzner Online GmbH' });
console.log(firma.entity_id, firma.name);
console.log(firma.registration); // { court: 'Ansbach', register_type: 'HRB', register_number: '6089' }
console.log(firma.meta.request_credit_cost);
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  "meta": {12    "request_credit_cost": 5,13    "credits_remaining": 14514  }15}
200 · Ausschnitt aus unserer Beispielantwort für die Hetzner Online GmbH, Ansbach HRB 6089, nur Basisdaten
JavaScript
const firma = await client.fetchOrganization({
  q: 'Ansbach HRB 6089',
  features: ['financial_kpi', 'related_persons'],
});
Gleiche Anfragen beantwortet der Client eine Stunde lang aus seinem Zwischenspeicher, ohne neue Credits. Anfragen mit Echtzeit gehen immer an die API. Mit cacheEnabled: false schaltest du den Zwischenspeicher ab.

Fehler behandeln

Exception
Exception Status Bedeutung
AuthenticationError 401 Kein oder ein ungültiger API-Schlüssel.
InsufficientCreditsError 402 Das Guthaben reicht nicht für diese Anfrage.
SubscriptionRequiredError 403 Die Anfrage braucht einen höheren Plan. requiredPlans nennt die passenden Pläne.
NotFoundError 404 Keine passende Firma oder Person gefunden.
RequestTimeoutError 408 Das Register hat nicht rechtzeitig geantwortet. Es wurde nichts berechnet.
RequestValidationError 400, 422 Ein Parameter hat einen ungültigen Wert.
RateLimitError 429 Zu viele Anfragen pro Minute.
ServerError 5xx Die Datenquelle ist gerade nicht erreichbar oder ausgelastet. Später wiederholen.
JavaScript
import {
  Handelsregister,
  HandelsregisterError,
  InsufficientCreditsError,
  NotFoundError,
  RequestTimeoutError,
} from 'handelsregister';

const client = new Handelsregister({ timeout: 120000 });

try {
  const firma = await client.fetchOrganization({
    q: 'Hetzner Online GmbH',
    realtimeMode: true,
  });
} catch (error) {
  if (error instanceof NotFoundError) {
    console.log('Keine passende Firma gefunden');
  } else if (error instanceof InsufficientCreditsError) {
    console.log('Guthaben reicht nicht:', error.meta);
  } else if (error instanceof RequestTimeoutError) {
    console.log('Register antwortet gerade nicht, später erneut versuchen');
  } else if (error instanceof HandelsregisterError) {
    console.log('Fehler:', error.statusCode, error.message);
  } else {
    throw error;
  }
}

Kommandozeile

Terminal
# Firmenprofil ohne AI-Mode, nur mit Finanz-KPIs
npx handelsregister fetch "Hetzner Online GmbH" --no-ai-search --feature financial_kpi

# Gesellschafterliste als PDF speichern
npx handelsregister document "Hetzner Online GmbH" --type shareholders_list --output hetzner.pdf
handelsregister fetch schaltet ohne weitere Angabe den AI-Mode ein. Eine Anfrage kostet dann 25 Credits statt 5, auch ohne Features. Mit --no-ai-search fragst du ohne AI-Mode an.

Referenz