SHAB-Publikationen ohne Login abrufen

Dieser Leitfaden richtet sich an Entwickler, die SHAB-Daten automatisiert importieren möchten. Wer SHAB-Meldungen für den Vertrieb auswerten möchte, beginnt am besten mit dem Leitfaden SHAB-Publikationen lesen. Er erklärt, welche Bedeutung die einzelnen Meldungsarten für den Vertrieb haben.

Für den Import müssen Sie vor allem die Endpunkte für Publikationen und die XML-Felder kennen. Einige Eigenheiten der API können viel Zeit kosten, wenn sie erst im laufenden Betrieb auffallen.

Die öffentliche API für den automatisierten Zugriff nutzen

Die robots.txt des SHAB betrifft das automatisierte Crawlen der Website. Für den automatisierten Zugriff stellt das Amtsblattportal eine öffentliche REST-API bereit, die für den produktiven Einsatz gedacht ist. Veröffentlichte Meldungen sind über die folgenden Endpunkte frei zugänglich.

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

Über den Login-Endpunkt melden sich Nutzer an, die Publikationen einreichen möchten. Veröffentlichte Meldungen sind über die oben genannten Endpunkte frei abrufbar.

Publikationen auflisten und einzeln abrufen

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

Speichern Sie die ID als Publikationsschlüssel. Prüfen Sie vor dem Abruf des Detaildokuments, ob die ID bereits gespeichert ist. So überspringen Sie bei erneuten Durchläufen bereits vorhandene Inhalte.

Beide Endpunkte sind auch in den Formaten /csv, /pdf und /docx verfügbar.

Eine typische Abfrage für die Handelsregisterpublikationen eines Tages:

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 zum Auflisten von Handelsregisterpublikationen

ParameterWertAnmerkung
publicationStatesPUBLISHEDErforderlich. Ohne diesen Parameter antwortet die API mit einer AccessDeniedException.
tenantshabDas Schweizerische Handelsamtsblatt. Für kantonale Amtsblätter gibt es eigene Tenants.
rubricsHRHandelsregister. Verwenden Sie HR. In der Dokumentation stand bei unserer letzten Prüfung BH.
subRubrics—Wird von der API in der Produktionsumgebung ignoriert. Siehe unten.
publicationDate.start / .endISO-DatumTagesgenauer Zeitraum einschliesslich Start- und Enddatum.
cantonsZH, GE, …Optional.
pageRequest.page / .size0-basiert / maximal 2000Die Seitengrösse ist die einzige dokumentierte feste Obergrenze.
pageRequest.sortOrderscolumn:PUBLICATION_DATE|direction:DESC

Vorsicht beim Filter subRubrics. Bei unserem Test in der Produktionsumgebung lieferte subRubrics=HR01 auch HR02- und HR03-Datensätze. Verwenden Sie rubrics=HR und ordnen Sie jede abgerufene Publikation anhand von meta.subRubric der passenden Unterrubrik zu. Sonst können in einer Tabelle für Neueintragungen unbemerkt auch Mutationen und Löschungen landen.

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. Werten Sie publicationText für Vorgänge aus, deren Angaben nur im Freitext stehen.

ZweckQuelleDetail
Publikationen identifizieren und Dubletten vermeidenmeta.idPublikations-UUID
Publikationstypmeta.rubric, meta.subRubricBereits in der Listenantwort enthalten
Unternehmen nach der Publikationcontent.commonsNewName, Sitz, UID, Rechtsform, Adresse, Kapital
Unternehmen vor der Publikationcontent.commonsActualDieselben Felder, in HR02- und HR03-Dokumenten
Änderungstypcontent.transactionregistration, update oder delete
Tagebuchreferenzcontent.journalDate, content.journalNumberTagebucheintrag und Wirksamkeitsdatum
Vorhergehende Meldungcontent.lastFoscDatum, Ausgabenummer und Sequenznummer der vorhergehenden SHAB-Meldung des Unternehmens

Bei HR02-Publikationen zeigen Flags unter transaction.update.changements die Art der Änderung an, darunter seatChanged, addressChanged, nameChanged, purposeChanged und capitalChanged mit den Unterfeldern nominal und paid. Liquidations- und Konkursschritte stehen in einem eigenen Block statusChanged. Für einen Namenswechsel vergleichen Sie den Namen in commonsActual mit dem in commonsNew. Um eine Kapitalerhöhung zu erkennen, vergleichen Sie commonsActual.capital.nominal mit commonsNew.capital.nominal, wenn capitalChanged.nominal auf true steht. Für Fusionen und Zweigniederlassungen gibt es kein eigenes strukturiertes Flag. Hier hilft weiterhin die Suche nach Stichwörtern im Publikationstext.

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.

Kapitalangaben auf Plausibilität prüfen

In der Schweizer Zahlenschreibweise trennt der Apostroph die Tausenderstellen. Im Amtsblatt steht er gelegentlich auch dort, wo ein Dezimalpunkt hingehört. Bei unserem Import führte das einmal zu einer hundertfach überhöhten Kapitalangabe. Der Datensatz führte die Rangliste der grössten Kapitalerhöhungen des Monats an, bis der Fehler 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 Mutationen, bei denen sich das nominelle Kapital um den Faktor 100 oder mehr verändert. So erkennen Sie Datensätze, bei denen vermutlich ein Fehler beim Parsen oder in den Quelldaten vorliegt. Der gespeicherte Wert bleibt dabei unverändert.

Annullierungen bei jedem Tageslauf abgleichen

Eine Publikation kann PUBLISHED oder CANCELLED sein. Gleichen Sie beide Statuswerte bei jedem Lauf ab, da auch bereits gespeicherte oder verarbeitete Publikationen annulliert werden können.

Rufen Sie Publikationen mit diesen beiden Statuswerten getrennt ab. Wenn eine ID in beiden Ergebnissen vorkommt, hat CANCELLED Vorrang. Gleichen Sie den Status im Detaildokument mit dem Status der Abfrage ab, da das entsprechende Feld in manchen Detaildokumenten fehlt.

So läuft der tägliche Abgleich ab:

  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 Status jeder aufgelisteten ID aktualisieren, auch bei bereits gespeicherten IDs. So wird eine frühere Publikation in Ihrer Datenbank als annulliert erfasst.
  3. Detaildokumente abrufen, wenn sie fehlen oder sich der Status geändert hat und deshalb eine neue Kopie nötig ist. Die Zahl paralleler Anfragen begrenzen und fehlgeschlagene Anfragen bei vorübergehenden Fehlern mit exponentiellem Backoff wiederholen.
  4. Zuerst die strukturierten Felder parsen. publicationText für die übrigen Vorgänge auswerten.

Bei den 305'902 untersuchten Publikationen der letzten zwölf Monate beträgt der Abstand zwischen dem Wirksamwerden einer Änderung und ihrer Veröffentlichung im Median 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 zu erfassen.

Zur Grössenordnung: Von den etwa 1'813 SHAB-Publikationen am 9. Juli 2026 entfielen rund 1'310 auf das Handelsregister.

Ein Open-Source-Parser für diese Publikationen

Den Parser, den wir für unseren eigenen Import verwenden, veröffentlichen wir unter der MIT-Lizenz als python-shab-parser. Er überführt ein XML-Dokument des Amtsblattportals in typisierte Dataclasses und ordnet jede Publikation Ereignissen zu: Neueintragung, Sitzverlegung, Kapitalerhöhung, Löschung. Unterschiede bei den Namespaces der Unterrubriken berücksichtigt er automatisch. HR01-, HR02- und HR03-Dokumente lassen sich so einheitlich parsen.

Der optionale HTTP-Client übernimmt das Auflisten der Publikationen und den anschliessenden Abruf der Detaildokumente. Er sendet höchstens eine Anfrage pro Sekunde und wiederholt Anfragen bei vorübergehenden Fehlern mit exponentiellem Backoff. Die Dokumentation erläutert die Ereignistypen und enthält die vollständige API-Referenz.

Nutzungsbedingungen und Rechtsverbindlichkeit

Der Betreiber übernimmt gemäss seinen Nutzungsbedingungen keine Gewähr für die Vollständigkeit und Richtigkeit. 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 sich eine Kontaktaufnahme lohnt, lässt sich meist erst mit weiteren Informationen beurteilen, etwa von der Firmenwebsite und aus aktuellen Stellenausschreibungen.

Schweizer Unternehmensdaten: Quellen und ihre Grenzen stellt diese Quellen vor. Der Leitfaden Zefix, Moneyhouse oder SHAB: welche Quelle wofür vergleicht sie anhand der Fragen, die sich bei einem täglichen Import stellen. Öffentliche Ausschreibungen und Zuschläge publiziert simap.ch; das Anbieterprofil hinter einem Zuschlag enthält meist die UID des Unternehmens. Mehr dazu im Leitfaden zur SIMAP-Schnittstelle.

Geschrieben von

Semion Sidorenko

Semion Sidorenko ist Gründer und CEO von Prospex. Von Data Engineering bis zur Machine-Learning-Forschung hat er fünfzehn Jahre damit verbracht, Unternehmen beim Ausbau ihrer Datenplattformen zu helfen. Vor der Gründung von Prospex arbeitete er als Machine-Learning-Ingenieur an der EPFL und als unabhängiger Data Engineering Consultant für Schweizer Unternehmen.

LinkedInGitHubsemion.sidorenko.ch