Libraries und SDKs
Für JavaScript und TypeScript gibt es einen offiziellen Client auf npm. Für alle anderen Sprachen ist die Firmenakte-API eine gewöhnliche REST-API mit dem Header x-api-key: Python und PHP sprechen sie direkt über ihre HTTP-Bibliothek an, und aus der OpenAPI-Spezifikation lässt sich ein typisierter Client für die meisten Sprachen generieren.
Was es je Sprache gibt
| Sprache | Stand | Womit gearbeitet wird |
|---|---|---|
| JavaScript / TypeScript | Offizielles Paket | @firmenakte/api-client auf npm – typisierte Methoden für jeden Endpoint, Key im Konstruktor. |
| Python | Kein Paket – direkt über HTTP | Es gibt kein Firmenakte-Paket auf PyPI. Ein Aufruf mit requests und dem Header x-api-key ist vier Zeilen lang. |
| PHP | Kein Paket – direkt über HTTP | Es gibt kein Firmenakte-Paket auf Packagist. cURL oder Guzzle mit dem Header x-api-key genügt. |
| Andere Sprachen | Client generieren | Die OpenAPI-Spezifikation beschreibt alle 36 Endpoints; ein Generator baut daraus einen Client für Java, Go, C#, Rust und weitere. |
TypeScript und JavaScript: @firmenakte/api-client
Der offizielle Client ist aus der OpenAPI-Spezifikation generiert und bildet jeden Endpoint als Methode ab – v1BusinessesDetail für ein Firmenprofil, v1BusinessesList für den Screener, dazu Personen, Gewerbe, Edikte, Dokumente und die Change-Feeds. Der API-Key geht in createApiClient({ apiKey }); den Header x-api-key setzt der Client selbst. Antworten sind typisiert, die Nutzdaten stehen unter .data.
npm install @firmenakte/api-client
# oder: pnpm add @firmenakte/api-client · bun add @firmenakte/api-clientimport { createApiClient } from "@firmenakte/api-client";
const client = createApiClient({ apiKey: process.env.FIRMENAKTE_KEY! });
// Vollständiges Firmenprofil zu einer Firmenbuchnummer
const porr = await client.v1BusinessesDetail("34853f");
console.log(porr.data.name, porr.data.isActive);
// Screener: aktive GmbHs (Code GES) in Wien nach Umsatz
const treffer = await client.v1BusinessesList({
city: ["Wien"],
legalFormCode: ["GES"],
active: true,
orderBy: "guv.Umsatzerloese",
orderByDescending: true,
pageSize: 50,
});
for (const b of treffer.data.data ?? []) console.log(b.name);Python: direkt über HTTP
Ein Firmenakte-Paket für Python gibt es heute nicht, und diese Seite sagt das, statt eines zu versprechen. Nötig ist es für den Anfang auch nicht: Die API ist eine gewöhnliche REST-API, der Key steht im Header x-api-key, und die Antwort ist JSON.
import os, requests
BASE = "https://api.firmenakte.at/api/v1"
headers = {"x-api-key": os.environ["FIRMENAKTE_KEY"]}
# Vollständiges Firmenprofil zu einer Firmenbuchnummer
profil = requests.get(f"{BASE}/businesses/34853f", headers=headers).json()
print(profil["name"], profil["isActive"])
# Screener: aktive GmbHs (Code GES) in Wien nach Umsatz
treffer = requests.get(
f"{BASE}/businesses",
headers=headers,
params={"city": "Wien", "legalFormCode": "GES", "active": True,
"orderBy": "guv.Umsatzerloese", "orderByDescending": True,
"pageSize": 50},
).json()PHP: direkt über HTTP
Für PHP gilt dasselbe: kein Paket auf Packagist, sondern ein Aufruf mit cURL oder Guzzle und demselben Header. Query-Parameter werden ganz normal an die URL gehängt; http_build_query kodiert sie richtig.
<?php
$base = "https://api.firmenakte.at/api/v1";
$headers = ["x-api-key: " . getenv("FIRMENAKTE_KEY"), "Accept: application/json"];
// Vollständiges Firmenprofil zu einer Firmenbuchnummer
$ch = curl_init("$base/businesses/34853f");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers]);
$profil = json_decode(curl_exec($ch), true);
curl_close($ch);
echo $profil["name"], " ", var_export($profil["isActive"], true), "\n";
// Screener: aktive GmbHs (Code GES) in Wien nach Umsatz
$query = http_build_query([
"city" => "Wien",
"legalFormCode" => "GES",
"active" => "true",
"orderBy" => "guv.Umsatzerloese",
"orderByDescending" => "true",
"pageSize" => 50,
]);
$ch = curl_init("$base/businesses?$query");
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => $headers]);
$treffer = json_decode(curl_exec($ch), true);
curl_close($ch);Eigenen Client generieren
Die OpenAPI-Spezifikation der Firmenakte-API beschreibt alle 36 Endpoints mit Parametern und Antwortfeldern. Daraus erzeugt ein Generator einen typisierten Client für die meisten Sprachen – der offizielle TypeScript-Client entsteht auf demselben Weg. Dieselbe Datei importieren auch Postman und Insomnia.
# Beispiel: Python-Client mit dem OpenAPI Generator
npx @openapitools/openapi-generator-cli generate \
-i https://docs.firmenakte.at/openapi.json \
-g python \
-o ./firmenakte-clientHäufige Fragen
Gibt es ein offizielles Python- oder PHP-SDK?
Nein. Der einzige offizielle Client ist das TypeScript/JavaScript-Paket @firmenakte/api-client auf npm. Für Python und PHP gibt es kein Firmenakte-Paket; beide Sprachen sprechen die REST-API direkt über ihre HTTP-Bibliothek an, mit dem API-Key im Header x-api-key. Ein typisierter Client lässt sich aus der OpenAPI-Spezifikation generieren.
Wie authentifiziert sich ein Client?
Über den Header x-api-key mit dem API-Key aus dem Dashboard. Es gibt kein OAuth und keinen Token-Tausch. Der TypeScript-Client nimmt den Key im Konstruktor entgegen und setzt den Header selbst.
Wofür ist die OpenAPI-Spezifikation gut?
Sie beschreibt alle 36 Endpoints der Firmenakte-API samt Parametern und Antwortfeldern maschinenlesbar. Generatoren wie der OpenAPI Generator bauen daraus einen Client für Java, Go, C#, Rust und weitere Sprachen; Werkzeuge wie Postman oder Insomnia importieren sie direkt.
Braucht ein KI-Agent auch einen Client?
Nein. Für KI-Agenten gibt es den MCP-Server der Firmenakte, der die API-Endpoints als Werkzeuge bereitstellt. Ein Agent in Claude Desktop, Cursor oder n8n verbindet sich damit, ohne dass eine Zeile Client-Code geschrieben wird.
Key erstellen und loslegen
Der Key aus dem Dashboard funktioniert in jeder Sprache gleich: als Header x-api-key. Für KI-Agenten gibt es statt eines Clients den MCP-Server.