prospex
Anmelden

SHAB-API: Publikationen ohne Login abrufen

6 Min. Lesezeit

Dieser Leitfaden richtet sich an Entwickler, die einen SHAB-Datenimport bauen. Wer eine Amtsblattmeldung für den Vertrieb interpretieren will, beginnt am besten mit dem Leitfaden Das SHAB lesen. Er erklärt, was jeder Eintragstyp kommerziell bedeutet.

Hier geht es um die Publikationsendpunkte und XML-Felder. Vier Eigenheiten der API können je einen Tag kosten, wenn sie erst in Produktion auffallen.

Die öffentliche API für den Maschinenzugang nutzen

Die robots.txt des SHAB betrifft das automatisierte Crawlen der Website. Für den Maschinenzugang stellt das Amtsblattportal eine öffentliche REST-API bereit, die für den produktiven Einsatz gedacht ist. Veröffentlichtes Material ist über die untenstehenden Endpunkte frei zugänglich.

UmgebungBasis-URL
Produktionhttps://amtsblattportal.ch/api/v1/
Integrationhttps://int.amtsblattportal.ch/api/v1/

Der Login-Endpunkt dient dem Einreichen von Publikationen. Veröffentlichte Meldungen sind über die oben genannten Endpunkte frei abrufbar.

Publikationen auflisten, dann jede Meldung holen

GET /api/v1/publications/xml liefert eine paginierte Liste mit Metadaten und Publikations-IDs. Den Inhalt einer Publikation holen Sie mit GET /api/v1/publications/{id}/xml.

Speichern Sie die ID als Publikationsschlüssel. Prüfen Sie sie vor dem Abruf des Detaildokuments, damit Wiederholungsläufe bereits vorhandene Inhalte überspringen.

Beide Endpunkte gibt es auch als /csv, /pdf und /docx.

Eine typische Listenabfrage für einen Tag HR-Publikationen:

GET https://amtsblattportal.ch/api/v1/publications/xml
    ?publicationStates=PUBLISHED
    &tenant=shab
    &rubrics=HR
    &publicationDate.start=2026-07-09
    &publicationDate.end=2026-07-09
    &pageRequest.page=0
    &pageRequest.size=2000

Parameter für eine HR-Publikationsliste

ParameterWertAnmerkung
publicationStatesPUBLISHEDPflicht für die Datenausgabe.
tenantshabDas eidgenössische Handelsamtsblatt. Kantonale Tenants existieren.
rubricsHRHandelsregister. Verwenden Sie HR. Die Dokumentation führte bei unserer letzten Prüfung BH.
subRubricsVon der produktiven API ignoriert. Siehe unten.
publicationDate.start / .endISO-DatumInklusive Datumsangaben, tagesgenau.
cantonsZH, GE, …Optional.
pageRequest.page / .size0-basiert / maximal 2000Die einzige dokumentierte harte Grenze.
pageRequest.sortOrderscolumn:PUBLICATION_DATE|direction:DESC

Die subRubrics-Falle. In unserem Produktionstest lieferte subRubrics=HR01 auch HR02- und HR03-Datensätze. Fragen Sie rubrics=HR an und klassifizieren Sie jede geholte Publikation über meta.subRubric. Sonst kann eine Tabelle «Neueintragungen» still und leise Mutationen und Löschungen enthalten.

Ordnen Sie jede HR-Publikation in eine dieser Unterrubriken ein:

  • HR01: Neueintragungen. Gründungen und Zweigniederlassungen.
  • HR02: Mutationen. Sitzverlegungen, Adressänderungen, Firmenänderungen, Kapitalerhöhungen, Fusionen.
  • HR03: Löschungen.

Zuerst die strukturierten Felder lesen

Ein HR-Detaildokument enthält strukturierte meta- und content-Blöcke. Nutzen Sie diese Felder, um Unternehmen zu identifizieren und gängige Änderungen auszuwerten. Behalten Sie publicationText für Akte, deren Angaben nur im Freitext stehen.

BedarfQuelleDetail
Identität und Deduplizierungmeta.idPublikations-UUID
Publikationstypmeta.rubric, meta.subRubricKlassifikation nach Abruf des Detaildokuments
Unternehmensidentitätcontent.companyName, Sitz, UID, Rechtsform, Adresse
Änderungstypcontent.transactionFlags für Sitz-, Adress-, Namens- und Kapitaländerungen
Tagebuch-ReferenzjournalDate, journalNumberTagebucheintrag und Wirksamkeitsdatum
Vorhergehende MeldunglastFosc*Verweis auf die abgelöste Publikation

HR02-Publikationen tragen Änderungs-Flags in transaction: seatChanged, addressChanged, nameChanged und capitalChanged. Namensänderungen enthalten alten und neuen Wert. Um eine Kapitalerhöhung zu erkennen, vergleichen Sie den alten und neuen Nominalwert, wenn capitalChanged gesetzt ist. Die Stichworterkennung im Publikationstext bleibt nützlich für Fusionen und Zweigniederlassungen, die kein eigenes strukturiertes Flag haben.

Die Schemata sind veröffentlicht: https://amtsblattportal.ch/api/v1/schemas/bulk-export.xsd und je Unterrubrik https://amtsblattportal.ch/api/v1/schemas/shab/1.26/HR0x-export.xsd.

Kapitalzahlen validieren

Die Schweizer Schreibweise nutzt den Apostroph als Tausendertrennzeichen, und das Amtsblatt setzt ihn gelegentlich dort, wo ein Dezimalpunkt hingehört. Wir haben so eine um den Faktor hundert überhöhte Kapitalzahl gesehen. Der Datensatz stand an der Spitze einer Rangliste der grössten Erhöhungen des Monats, bevor die Anomalie auffiel.

Markieren Sie jede AG mit einem nominellen Kapital unter CHF 100'000 und jede GmbH unter CHF 20'000 zur Überprüfung. Markieren Sie auch jede einzelne Mutation, die das nominelle Kapital um den Faktor 100 oder mehr ändert. Diese Prüfungen erkennen wahrscheinliche Parse- oder Quelldatenfehler und leiten den Datensatz in die Überprüfung. Der gespeicherte Wert bleibt dabei unverändert.

Annullierungen bei jedem Tageslauf abgleichen

Eine Publikation kann PUBLISHED oder CANCELLED sein. Gleichen Sie beide Zustände bei jedem Lauf ab, weil eine Annullierung eine bereits gespeicherte oder bereits verarbeitete Publikation betreffen kann.

Fahren Sie die beiden Zustände als getrennte Durchläufe und deduplizieren Sie überlappende IDs so, dass CANCELLED gewinnt. Gleichen Sie den Body mit dem Zustand ab, unter dem Sie ihn gefunden haben. Manche Bodies lassen das Feld weg.

Der tägliche Abgleich-Algorithmus:

  1. PUBLISHED- und CANCELLED-Datensätze der letzten sieben Kalendertage bis heute auflisten. Pro ID eine Zeile führen, wobei CANCELLED Vorrang hat, wenn die ID in beiden Listen vorkommt.
  2. Den Zustand jeder aufgelisteten ID aktualisieren, auch für bereits gespeicherte IDs. So wird eine frühere Publikation in Ihrer Datenbank als annulliert erfasst.
  3. Detaildokumente für IDs abrufen, deren Body fehlt oder deren Zustandswechsel eine neue Kopie erfordert. Parallelität begrenzen und bei vorübergehenden Fehlern mit exponentiellem Backoff wiederholen.
  4. Zuerst die strukturierten Felder parsen. publicationText für die verbleibenden Akte verwenden.

Über 305'902 Publikationen der letzten zwölf Monate beträgt der Medianabstand zwischen dem Wirksamwerden einer Änderung und ihrer Veröffentlichung fünf Tage. 38% der Publikationen erscheinen innert drei Tagen. Wir listen bei jedem Tageslauf die letzten sieben Kalendertage erneut auf, um verspätete und korrigierte Datensätze aufzufangen.

Zur Grössenordnung: am 9. Juli 2026 waren es rund 1'310 HR-Publikationen von etwa 1'813 SHAB-Publikationen dieses Tages.

Ein Open-Source-Parser für diese Publikationen

Den Parser hinter unserem eigenen Import veröffentlichen wir unter der MIT-Lizenz als python-shab-parser. Er liest ein XML-Dokument des Amtsblattportals in typisierte Dataclasses und ordnet jede Publikation Ereignissen zu: Neueintragung, Sitzverlegung, Kapitalerhöhung, Löschung. Die Namespace-Unterschiede zwischen den Unterrubriken fängt er ab, sodass HR01-, HR02- und HR03-Dokumente gleich geparst werden.

Sein optionaler HTTP-Client deckt die oben beschriebene Schleife aus Discovery und Abruf ab, begrenzt auf eine Anfrage pro Sekunde und mit exponentiellem Backoff bei transienten Fehlern. Die Dokumentation beschreibt die Ereignistypen und die vollständige API-Referenz.

Nutzungsbedingungen und Rechtsstellung

Die Bedingungen des Betreibers schliessen Gewähr für Vollständigkeit und Richtigkeit aus. Das signierte PDF ist die rechtsverbindliche Fassung jeder Publikation. Prüfen Sie die aktuellen API-Bedingungen vor einer kommerziellen Weiterverwendung. Dieser Leitfaden beschreibt unsere technische Implementierung und stellt keine Rechtsberatung dar.

Eine Amtsblattmeldung sagt Ihnen, welche rechtliche Änderung veröffentlicht wurde. Ob die Firma eine Kontaktaufnahme wert ist, erfordert meist Kontext von ihrer Website und ihren laufenden Stellenausschreibungen.

Wo Schweizer Unternehmensdaten tatsächlich liegen erklärt diese Quellen, und wofür jede davon taugt vergleicht sie an den Fragen, die ein täglicher Import beantworten muss.

Cookie-Einstellungen

Notwendige Cookies sind immer aktiv. Die anderen beiden sind eingeschaltet, sofern Sie sie nicht deaktivieren.