Firmenindex Österreich — für Agenten
Maschineller Einstieg (progressive discovery): api?e=agent/v1/index — ein JSON-Index mit Bereichen, Beispielen und Version; Stufe 2 sind die Bereichs-Endpoints, Stufe 3 openapi.json. Jede beworbene Route ist per Test gegen die echte OpenAPI verdrahtet (keine toten Links).
Durchsuchbarer Index österreichischer Firmen: 300k+ Firmenbuch-Einträge (evi.gv.at + HVD) plus nicht-eingetragene Gewerbe (GISA/WKO), ÖNACE-klassifiziert. Alles auf dieser Seite ist maschinenlesbar — kein Login, keine Cookies, kein Browser nötig.
Diese Seite ist bewusst dünn: das eine Muster, die drei Kernflüsse, ein Wegweiser. Tieferes steht in den Fokus-Guides und in der aus dem Code generierten Referenz.
Das eine Muster
curl "https://skale.dev/firmenindex/api?e=<ENDPOINT>&<PARAMS>"e = URL-encodeter Endpoint-Pfad (search/rich → search%2Frich); Pfad-Parameter kommen direkt in e (auszug%2F475207i), Query-Parameter daneben (&fn=…).
Drei Kernflüsse
①Firmen & Personen finden
curl "https://skale.dev/firmenindex/api?e=search%2Frich&query=brantner"
curl "https://skale.dev/firmenindex/api?e=search%2Feu&query=friseur&ort=Neusiedl%20am%20See"Query-Sprache, Wildcards, Umlaut-Faltung, Branche/Ort-Chips, Personensuche: Suche-Guide →
②Firmenprofil ziehen (alles Aufbereitete)
curl "https://skale.dev/firmenindex/api?e=lookup%2Fmerged&fn=475207i"
curl "https://skale.dev/firmenindex/firma/brantner-oesterreich-gmbh-475207i.md" # token-arm als MarkdownEin Call → Stammdaten, Personen/Organe, Gesellschafter, Beteiligungen, letzte Vollzüge, Publikationen. Die .md-Fassung jeder Firma ist fürs Lesen optimiert (weniger Tokens, kein HTML-Parsing); ihre „Weiteres“-Sektion trägt die firma-spezifischen Calls gleich mit.
③Dokumente & Bilanzdaten (öffentliche Plattformen)
curl "https://skale.dev/firmenindex/api?e=hvd%2Fsuche-urkunde&fnr=475207i" # Liste: key · Art · Datum · PDF/XML
curl "https://skale.dev/firmenindex/api?e=hvd%2Furkunde-get&key=<KEY>" # rohes PDF — oder Bilanz-XML
curl "https://skale.dev/firmenindex/api?e=bilanz&fn=475207i" # Bilanz-Zahlen fertig ausgezählt
curl "https://skale.dev/firmenindex/api?e=bilanz%2Furkunde&key=<KEY>" # Beleg-Urkunde einer Kennzahl (lokaler Blob)
curl "https://skale.dev/firmenindex/api?e=auszug%2F475207i&fmt=md" # Firmenbuchauszug (fmt=pdf|md)XML-Semantik (FinanzOnline-Strukturdaten vs. eingebettete base64-PDFs), Stichtags-Auszug, Höflichkeit bei MB-großen Urkunden: Dokumente-Guide →
Abdeckung — Soll/Ist je Bestand
Live aus api?e=status (Feld abdeckung). Soll-Lücken sind ehrlich offen, nie geraten.
| Bestand | Ist | Soll | Quelle/Hinweis |
|---|---|---|---|
| Firmenbuch | 339 153 | 327 175 (103.7%) | Statistik Austria — Firmenbuchnummern-ÖNACE-Zuordnung (oenace-Tabelle) |
| e.U. via WKO (ohne FB) | 5 518 | — | WKO-Firmenliste liefert keine freie Gesamtzahl — Soll offen. |
| e.U. via GISA | 10 163 | — | GISA (gisa.gv.at) liefert keine freie Aggregat-Zahl; der Bestand wächst via Live-Suchen + Detail-Besuche. |
| BMF-Scheinunternehmen | 1 064 | BMF-Bescheide; FB-Anreicherung live | |
| Kontext: Gewerbeanmeldungen 2024 (Flow) | 97 926 | — | BMWET (bmwet.gv.at) — Allzeithoch 2024 |
| Stand: 2026-09-19 | |||
Weiter aufbereitet — je eine Zeile
- GISA-Gewerbe je Firma:
gisa/{fn}· Lizenz-Detail:gisa/detail/{gisazahl} - Insolvenzen/Edikte:
insolvenz/{fn} - Vollzugs-Historie (Zeitreise):
hvd/historie?fnr=…&von=…&bis=…· letzte Vollzüge stecken inlookup/merged - Konzern-/Eigentümer-Graph (GLEIF):
gleif/{fn} - Verflechtungs-Netzwerk (2 Ebenen, DB-first):
firmen/{fn}/netzwerk?max_items=12→{gesellschafter, beteiligungen}mitfn/person/role/since/statusje Knoten; Firmen-Kanten nur mit resolveexact, Personen ohne FN (person: true) nie verlinkt;n_weitere_*zählt hinter dem maxItems-Aufklapper;anteilist ehrlichnull(keine Quelle führt strukturierte Anteile) · nutzt die Baum-Sektion auf jeder Detailseite - Zeitmaschine (punkt-in-zeit):
firmen/{fn}/zustand?stichtag=YYYY-MM-DD→ Name + Organbesetzung an JEDEM Tag per Vollhistorie-replay aus dem Cache (kein Live-Call) · Eigentümer alsseit-Befund ·historie_quelle: historie_cache-replay | nicht_berechnet(dann pointer aufhvd/historie?at=) · Stichtag vor Gründung →existiert: false - UBO-Kontrolle:
firmen/{fn}/kontrolle?max_tiefe=6→ Aufwärts-Pfade „wer kontrolliert diese firma?“ je Kante mitquelle/since-beleg ·ende: person | firma_ohne_fn | zyklus | tiefe_erreicht | keine_kante_erfasstehrlich je Blatt ·anteilbleibt null (keine Stimmrechts-Aggregation) · DB-only - Öffentliche Vergaben (TED):
firmen/{fn}/vergaben→ EU-Vergabenotices, bei denen diese Firma als Gewinner steht (notice, lot, ort, datum) · fn nur aus belegtem winner-identifier — nie aus Namen geraten · DB-first austed_awards(write-through-backfill) - ÖNACE: Firmen je Branche
oenace/companies?code=5621(edv-Code, ohne Punkte) · Baumoenace/tree - Personen:
person/search?q=…· Werdegangperson/karriere?q=…&fn=… - Standorte:
standorte?fn=…· UID-Check (VIES):uid-check?uid=… - Quellen-Status:
status
Exakte Parameter immer aus der Referenz, nie von Hand kopieren: api?e=openapi.json (OpenAPI 3, aus dem laufenden Code generiert — kann nicht veralten) · API-Referenz (gerendert).
Die Seite bedienen — URLs
| URL | Ziel |
|---|---|
/suche?q=<query> | Suche ausführen (Ergebnisseite) |
/firma/<FN> | Firmen-Detail (z. B. /firma/475207i) — je Firma als .md: firma/<slug>-<fn>.md |
Höflichkeit & Fehler
- Upstream-Rate-Limit ~30 req/min — gecachte Firmen (
lookup/merged, Cache-first) belasten es nicht. Cache zuerst, höflich batchen. - Fehler sind JSON:
{"detail":{"error":{type,message}}}mit passendem HTTP-Status. - Ausfälle sind ehrlich: fällt eine Live-Quelle aus, trägt der Payload
"degradiert": true— es werden nie gefälschte Daten geliefert.
Progressive Affordances
- Daten-Sektionen im Firmen-Detail tragen ihren exakten API-Call am Entstehungsort (aufklappbar „Für Agenten“, z. B. der GLEIF-Konzerngraph).
- Karten tragen
data-lei/data-name/data-status/… — direktes DOM-Parsing ohne API-Call. - Der Hub + die zwei Guides sind server-gerendert — ohne JS lesbar (die Abdeckungstabelle inklusive, seit dem Port in die Next-App).
Ergebnisse teilen — throway (HTML oder MD)
- Recherche-Ergebnisse als .md oder .html speichern und per throway teilen: Upload, Antwort ist die Kurz-URL. Alles läuft nach 4 Stunden automatisch ab — kein Account, kein Tracking.
# report.md teilen → Kurz-URL kommt zurück
curl -sT report.md "https://skale.dev/throway/?name=report.md"
# HTML-report genauso
curl -sT report.html "https://skale.dev/throway/?name=report.html"- Frag vorher: Erzeuge den Share-Link nur mit Einverständnis deines Nutzers („darf ich das teilen?“) — die URL ist 4 h lang für JEDEN abrufbar.
- Passt gut zusammen mit dem visualize-Skill (skale.dev/skills): HTML-Report bauen → über throway teilen.
Quellen & Lizenz
evi.gv.at + HVD Firmenbuch (Republik Österreich / BMJ, CC BY 4.0), GISA, WKO, ÖNACE (Statistik Austria). Details und Aktualität: Info & Datenquellen.