prospex
Se connecter

L'API FOSC: lire la Feuille officielle par programme

7 min de lecture

Ce guide s'adresse aux développeurs qui construisent un import de données FOSC. Si vous cherchez à comprendre la portée commerciale d'une annonce, commencez par Lire la FOSC, qui explique ce que chaque type d'inscription signifie commercialement.

Nous couvrons ici les points d'accès de publication, les champs XML et quatre comportements de l'API qui peuvent coûter une journée chacun lorsqu'on les découvre en production.

Utiliser l'API publique de l'Amtsblattportal

Le robots.txt de la FOSC porte sur l'exploration automatisée du site web. Pour un accès automatisé, l'Amtsblattportal met à disposition une API REST publique conçue pour une utilisation en production. Utilisez les points d'accès ci-dessous pour récupérer les publications.

EnvironnementURL de base
Productionhttps://amtsblattportal.ch/api/v1/
Intégrationhttps://int.amtsblattportal.ch/api/v1/

Le point d'accès de connexion sert au dépôt de publications. Les publications sont accessibles en lecture sans authentification.

Lister les publications, puis récupérer chaque fiche

GET /api/v1/publications/xml retourne une liste paginée contenant uniquement les métadonnées et les identifiants des publications. Récupérez chaque corps avec GET /api/v1/publications/{id}/xml.

Conservez l'identifiant comme clé de publication. Vérifiez sa présence dans votre base avant de demander le document détaillé. Les reprises réutiliseront ainsi les corps déjà en votre possession.

Les deux points d'accès ont aussi des variantes /csv, /pdf et /docx.

Une requête de liste typique pour une journée de publications HR:

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

Paramètres pour une liste de publications HR

ParamètreValeurRemarque
publicationStatesPUBLISHEDObligatoire pour obtenir des enregistrements.
tenantshabLa Feuille fédérale du commerce. Des tenants cantonaux existent.
rubricsHRRegistre du commerce. Utilisez HR. La documentation indiquait BH à notre dernière vérification.
subRubricsIgnoré par l'API en production. Voir ci-dessous.
publicationDate.start / .endDate ISODates inclusives à granularité journalière.
cantonsZH, GE, …Facultatif.
pageRequest.page / .sizeBase 0 / 2000 au maximumLa seule limite dure documentée.
pageRequest.sortOrderscolumn:PUBLICATION_DATE|direction:DESC

Le piège des subRubrics. Dans notre test en production, subRubrics=HR01 a aussi retourné des enregistrements HR02 et HR03. Demandez rubrics=HR, puis classez chaque publication récupérée selon meta.subRubric. Cette classification empêche les mutations et les radiations de se glisser dans une table «nouvelles inscriptions».

Classez chaque publication HR dans l'une de ces sous-rubriques:

  • HR01: nouvelles inscriptions. Créations et ouvertures de succursales.
  • HR02: mutations. Transferts de siège, changements d'adresse, changements de raison sociale, augmentations de capital, fusions.
  • HR03: radiations.

Lire d'abord les champs structurés

Un document HR détaillé contient des blocs meta et content structurés. Utilisez ces champs pour l'identité, les attributs de l'entreprise et les types de changement courants. Réservez publicationText aux actes couverts uniquement par le texte libre.

BesoinSourceDétail
Identité et déduplicationmeta.idUUID de publication
Type de publicationmeta.rubric, meta.subRubricClassez après récupération du document détaillé
Identité de l'entreprisecontent.companyNom, siège, IDE, forme juridique, adresse
Type de changementcontent.transactionDrapeaux pour changements de siège, adresse, nom et capital
Référence au journaljournalDate, journalNumberInscription au journal et date d'effet
Avis précédentlastFosc*Référence à la publication remplacée

Les publications HR02 exposent des drapeaux de changement dans transaction: seatChanged, addressChanged, nameChanged et capitalChanged. Les changements de nom incluent ancien et nouveau. Pour identifier une augmentation de capital, comparez l'ancien et le nouveau nominal quand capitalChanged est actif. Pour les fusions et les créations de succursales, utilisez la détection par mots-clés dans le texte. Ces actes nécessitent ce complément au traitement structuré.

Les schémas sont publiés: https://amtsblattportal.ch/api/v1/schemas/bulk-export.xsd et, par sous-rubrique, https://amtsblattportal.ch/api/v1/schemas/shab/1.26/HR0x-export.xsd.

Valider les montants de capital

Le format suisse utilise l'apostrophe comme séparateur de milliers. La Feuille en publie parfois une là où une virgule décimale devrait figurer. Nous avons vu un capital surestimé d'un facteur cent par ce biais. L'enregistrement est arrivé en tête d'un classement des plus grosses augmentations du mois avant que l'anomalie ne soit repérée.

Marquez pour vérification toute SA dont le capital nominal est inférieur à CHF 100'000 et toute Sàrl sous CHF 20'000. Marquez aussi toute mutation unique qui change le capital nominal d'un facteur 100 ou plus. Ces contrôles identifient des erreurs probables d'analyse ou de données source et envoient l'enregistrement vers une vérification. La valeur source reste inchangée pendant ce contrôle.

Réconcilier les annulations à chaque exécution quotidienne

Une publication peut être PUBLISHED ou CANCELLED. Réconciliez les deux états à chaque exécution, car une annulation peut concerner une publication déjà enregistrée ou déjà traitée.

Faites deux passes séparées, une par état, et dédupliquez les identifiants communs en donnant la priorité à CANCELLED. Réconciliez le corps selon l'état sous lequel vous l'avez découvert. Certains corps omettent le champ d'état.

L'algorithme de réconciliation quotidien:

  1. Lister les enregistrements PUBLISHED et CANCELLED des sept derniers jours calendaires jusqu'à aujourd'hui. Garder une ligne par identifiant, CANCELLED prévalant si l'identifiant apparaît dans les deux listes.
  2. Mettre à jour l'état de chaque identifiant listé, y compris ceux déjà enregistrés. C'est ainsi qu'une publication antérieure devient annulée dans votre base.
  3. Récupérer le document détaillé des identifiants dont le corps manque ou dont le changement d'état exige une nouvelle copie. Plafonner la concurrence et réessayer les échecs transitoires selon une temporisation exponentielle.
  4. Analyser d'abord les champs structurés. Utiliser publicationText pour les actes couverts uniquement par le texte libre.

Sur 305'902 publications mesurées sur les douze derniers mois, l'intervalle médian entre la prise d'effet d'un changement et sa publication était de cinq jours. 38% des publications sont parues en trois jours. Nous listons de nouveau les sept derniers jours calendaires à chaque exécution quotidienne pour absorber les enregistrements tardifs et corrigés.

Pour l'ordre de grandeur: le 9 juillet 2026, environ 1'310 publications HR sur près de 1'813 publications FOSC ce jour-là.

Un parseur open source pour ces publications

Le parseur qui alimente notre propre import est publié sous licence MIT: python-shab-parser. Il lit un document XML de l'Amtsblattportal dans des dataclasses typées, puis classe chaque publication en événements: création, transfert de siège, augmentation de capital, radiation. Les différences de namespace entre sous-rubriques sont absorbées, si bien qu'un document HR01, HR02 ou HR03 s'analyse de la même manière.

Son client HTTP optionnel couvre la boucle de découverte et de récupération décrite plus haut, limitée à une requête par seconde, avec un backoff exponentiel sur les échecs transitoires. La documentation détaille les types d'événements et la référence complète de l'API.

Conditions d'utilisation et portée juridique

Les conditions de l'exploitant déclinent toute garantie d'exhaustivité et d'exactitude. Le PDF signé est la version juridiquement contraignante de chaque publication. Consultez les conditions actuelles de l'API avant toute réutilisation commerciale. Ce guide décrit notre implémentation technique et ne constitue pas un avis juridique.

Une annonce de la Feuille vous dit quel changement juridique a été publié. Décider si l'entreprise mérite un contact demande le plus souvent du contexte sur son site web et ses recrutements en cours.

Où trouver les données d'entreprises suisses explique ces sources, et à quoi sert chacune les compare sur les questions auxquelles un import quotidien doit répondre.

Préférences de cookies

Les cookies nécessaires fonctionnent toujours. Les deux autres sont actifs sauf si vous les désactivez.