API simap.ch: lire les appels d'offres et les adjudications

simap.ch est la plateforme des marchés publics commune à la Confédération, aux cantons et aux communes. Les appels d'offres, les adjudications, les adjudications de gré à gré et leurs rectifications y sont publiés. Depuis le 1er juillet 2024, simap.ch tourne sur un nouveau logiciel doté d'une API REST en JSON, et les points d'accès qui cherchent et lisent les publications répondent sans compte. Pendant la semaine du 28 septembre au 2 octobre 2026, 570 projets de marché y ont reçu une nouvelle publication, dont 306 appels d'offres, 184 adjudications et 48 adjudications de gré à gré.

Ce guide s'adresse aux développeurs qui veulent intégrer ces appels d'offres et ces adjudications dans leur propre système. Toutes les requêtes ci-dessous ont été exécutées le 3 octobre 2026, et les réponses sont des extraits de ce que l'API a renvoyé ce jour-là. La partie consacrée aux adjudications décrit l'étape dont la plupart des intégrations ont besoin: passer de l'adjudication au numéro IDE de l'entreprise retenue, puis de l'IDE à son inscription au registre du commerce.

Ce que publie simap.ch

Un projet de marché se compose d'une suite de publications. Chacune porte un pubType; le projectNumber reste le même tout au long du projet, et le numéro de publication y ajoute un suffixe: 28727-01 est l'appel d'offres, 28727-02 l'adjudication.

pubTypeContenu28.9–2.10.2026
tenderAppel d'offres en procédure ouverte, sélective ou sur invitation306
awardAdjudication après appel d'offres: soumissionnaire retenu, prix, nombre d'offres184
direct_awardAdjudication de gré à gré, sans appel d'offres48
abandonment, revocationInterruption de la procédure, révocation d'une publication17, 0
advance_notice, request_for_informationPréavis, demande d'informations (RFI)4, 6
competition, study_contract, participant_selectionConcours, mandat d'étude parallèle, préqualification en procédure sélective1, 0, 4

Les chiffres comptent les projets dont la publication la plus récente tombe dans la semaine, comme le fait la recherche. Une rectification n'a pas de type propre: un appel d'offres rectifié est une nouvelle publication tender avec corrected: true. 38 des 570 projets étaient des rectifications.

Accès: ce qui demande un compte

La spécification OpenAPI se trouve à https://www.simap.ch/api/specifications/simap.yaml (version 1.5.1 le 3 octobre 2026), l'interface Swagger à https://www.simap.ch/api-doc/, avec un journal des modifications à côté. L'URL de base est https://www.simap.ch/api. L'environnement d'intégration répond aux mêmes requêtes à https://int.simap.ch/api.

La spécification déclare OpenID Connect pour tous les points d'accès. Pour la lecture, aucun jeton n'est pourtant demandé: les conditions d'utilisation de l'API précisent au chiffre 6 que l'accès aux publications et la recherche se font sans authentification. Toutes les requêtes de ce guide ont été envoyées sans jeton ni cookie.

TâcheCompte nécessaire
Chercher des projets, lire les publications, consulter les soumissionnaires retenus et les codes CPVNon
Télécharger les documents d'appel d'offres, poser des questions sur le forum, manifester son intérêtCompte utilisateur rattaché à un soumissionnaire enregistré
Saisir et publier des appels d'offresCompte utilisateur d'un service d'achat
Client machine pour les points d'accès protégésDemande par le formulaire «Demande de client API pour simap.ch (environnement de production et de test)» de la FAQ de simap.ch

Nous n'avons pas demandé de client; ce guide se limite donc aux points d'accès publics. L'utilisation est gratuite aujourd'hui. L'association simap.ch se réserve le droit de facturer certains composants avec un mois de préavis, et ne garantit pas que l'interface reste identique d'une version à l'autre. Aucune limite de débit n'est documentée et les réponses ne portent pas d'en-tête de ce type. Notre propre import tourne à environ trois requêtes par seconde sans erreur.

Chercher des appels d'offres

Toutes les recherches passent par GET /publications/v2/project/project-search. Ce point d'accès exige au moins un filtre ou un terme de recherche; une requête sans aucun des deux reçoit une erreur 400 avec le code E0003. Appels d'offres dont le lieu d'exécution est dans le canton de Vaud, publication la plus récente entre le 28 septembre et le 2 octobre:

curl -s 'https://www.simap.ch/api/publications/v2/project/project-search?newestPubTypes=tender&orderAddressCantons=VD&newestPublicationFrom=2026-09-28&newestPublicationUntil=2026-10-02'

La réponse, réduite à son premier projet:

{
  "projects": [
    {
      "id": "f92055f2-a17b-48bc-8336-39ea3a966f70",
      "title": { "de": null, "en": null, "fr": "Revitalisation du Ruisseau de Champmartin", "it": null },
      "projectNumber": "38252",
      "projectType": "tender",
      "projectSubType": "construction",
      "processType": "open",
      "lotsType": "without",
      "publicationId": "ab57fd7f-82f0-4c58-a5a2-788801d3ee8b",
      "publicationDate": "2026-10-02",
      "publicationNumber": "38252-01",
      "pubType": "tender",
      "corrected": false,
      "procOfficeName": { "fr": "Commune de Vully-les-Lacs (Küng et associés SA)", ... },
      "orderAddress": { "countryId": "CH", "cantonId": "VD", "postalCode": "1589 ", "city": { "fr": "Vully", ... } }
    },
    ...
  ],
  "pagination": { "lastItem": "20260930|45019", "itemsPerPage": 20 }
}

Chaque champ traduit est un objet avec de, fr, it et en, le plus souvent rempli dans une ou deux langues seulement. Prenez la langue du lecteur quand elle existe, sinon la première valeur non nulle. L'espace final de "1589 " vient de la source: nettoyez les NPA avant de les comparer.

Paramètres

ParamètreValeursRemarque
search3 à 1'000 caractèresTexte intégral du titre et de la description. Deux caractères renvoient 400 (E0025).
langde, fr, it, enLangues dans lesquelles le terme est cherché. Toutes les quatre par défaut.
newestPubTypestender, award_tender, direct_award, advance_notice…Type de la publication la plus récente du projet. award_tender est l'adjudication d'un appel d'offres.
projectSubTypesconstruction, service, supply, concours, mandats d'étudeTravaux, services, fournitures.
processTypesopen, selective, invitation, direct, no_processProcédure.
cpvCodes, bkpCodes (CFC), npkCodes (CAN)…CodesUn code CPV parent trouve aussi ses enfants.
orderAddressCantonsVD, GE…Canton du lieu d'exécution, quand le service d'achat l'a saisi de façon structurée.
issuedByOrganizationsUUID de services ou d'institutionsInclut les services rattachés.
newestPublicationFrom, newestPublicationUntilDate ISOBornes incluses.
lastItemTiré de la page précédentePagination continue, 20 projets par page.

Pour passer plusieurs valeurs, répétez le paramètre: newestPubTypes=tender&newestPubTypes=award_tender. La taille de page est fixée à 20 et les résultats arrivent du plus récent au plus ancien. La page suivante s'obtient avec la même requête et le lastItem de pagination. Une page de moins de 20 projets est la dernière.

Trois comportements des filtres qui changent vos chiffres

Les filtres lisent la publication la plus récente du projet. newestPubTypes et les deux paramètres de date ne voient que la dernière publication, rien avant. Un appel d'offres ouvert en juin et rectifié le 2 octobre apparaît au 2 octobre. Un appel d'offres adjugé depuis sort d'une recherche newestPubTypes=tender. Une recherche award_tender peut même renvoyer une interruption: sur un projet à lots dont un lot avait été adjugé et un autre interrompu, le projet correspondait au filtre alors que la ligne elle-même portait pubType: "abandonment". Vérifiez le pubType de chaque ligne avant de la lire comme une adjudication. Pour une base complète, interrogez par fenêtre de dates sans filtre de type et triez vous-même.

Les codes CPV englobent leurs sous-codes. En septembre 2026, cpvCodes=72000000 (services informatiques) a renvoyé 144 projets et cpvCodes=72200000 (programmation de logiciels et services de conseil) 44, tous compris dans les 144. Passez le code le plus large dont vous avez besoin. GET /codes/v1/cpv?parentCode=72000000 liste les sous-codes avec leurs libellés en quatre langues, lui aussi sans compte.

Le filtre cantonal ignore les projets sans adresse structurée. 206 des 570 projets de la semaine n'avaient pas de orderAddress.cantonId, parce que le service d'achat avait décrit le lieu en texte libre, ou pas du tout. orderAddressCantons les écarte. Pour filtrer par adjudicateur, utilisez issuedByOrganizations ou lisez procOfficeAddress.cantonId dans le détail.

Lire un appel d'offres

La ligne de recherche donne id (le projet) et publicationId. La publication complète se trouve à GET /publications/v1/project/{projectId}/publication-details/{publicationId}. Sa structure dépend de type: un appel d'offres contient dates, terms et criteria, une adjudication contient decision. Les champs que lisent la plupart des intégrations:

InformationChemin du champExemple (appel d'offres 37714-04)
Numéro et date de publicationbase.publicationNumber, base.publicationDate37714-04, 2026-10-02
Titrebase.title.{de,fr,it,en}Registre cantonal des personnes pour la communauté GERES
Code CPV principalprocurement.cpvCode.code72200000
Autres codesprocurement.additionalCpvCodes[], procurement.bkpCodes[]
Descriptionprocurement.orderDescription.{lang}HTML
Délai de dépôt des offresdates.offerDeadline2026-11-13T12:00:00+01:00
Tours de questionsdates.qnas[].date31.7, 14.8 et 16.10.2026
Première publicationdates.initialPublicationDate2026-06-29
Service d'achatproject-info.procOfficeAddressNom, canton, e-mail, téléphone
Ce que change une rectificationcorrection.correctionDiffKeys[], correction.remarksdates.qnas, project-info.documentsSourceUrl…
Lotslots[]Vide quand lotsType vaut without

offerDeadline porte son décalage horaire: stockez le délai comme horodatage avec fuseau. Les documents d'appel d'offres sont réservés aux soumissionnaires connectés; la publication indique où les obtenir (project-info.documentsSourceType, documentsSourceUrl) et dans quelles langues.

Lire une adjudication et trouver l'IDE de l'adjudicataire

Une adjudication nomme les soumissionnaires retenus sous decision.vendors. Voici celle du projet 28727, publiée le 3 octobre 2026 par l'office des constructions du canton de Saint-Gall, abrégée:

curl -s 'https://www.simap.ch/api/publications/v1/project/941d4cae-f281-4546-a117-ac4fcde6bcb1/publication-details/9ce8c388-5fee-4877-85d5-4110a74599c7'

{
  "type": "award",
  "base": {
    "publicationNumber": "28727-02",
    "publicationDate": "2026-10-03",
    "title": { "de": "Verwaltungsgebäude des Kantons St.Gallen Modernisierung Schliessanlagen - BKP 275", ... },
    "processType": "open",
    "lotsType": "without"
  },
  "procurement": {
    "cpvCode": { "code": "45210000", "label": { "fr": "Travaux de construction de bâtiments", ... } },
    "bkpCodes": [ { "code": "275", "label": { "fr": "Systèmes de verrouillage", ... } } ]
  },
  "decision": {
    "vendors": [
      {
        "vendorId": "3e4fae92-e85b-4f6a-b58f-b41af6794540",
        "vendorName": "Hasler + Co AG, die Zutrittsexperten",
        "vendorAddress": { "countryId": "CH", "street": "Rudolf Diesel-Strasse 12", "city": "Winterthur", "postalCode": "8404", "cantonId": "ZH" },
        "price": { "currency": "chf", "price": 1968451.1, "vatType": "full" },
        "rank": null
      }
    ],
    "numberOfSubmissions": 6,
    "awardDecisionDate": "2026-09-23"
  },
  "referencingPub": { "publicationNumber": "28727-01", "pubType": "tender", "publicationDate": "2025-12-15" }
}

L'adjudication ne contient pas d'IDE, mais un vendorId: la clé du profil du soumissionnaire sur simap.ch. Ce profil est public:

curl -s 'https://www.simap.ch/api/vendors/v1/vendor/3e4fae92-e85b-4f6a-b58f-b41af6794540/public'

{
  "id": "3e4fae92-e85b-4f6a-b58f-b41af6794540",
  "name": "Hasler + Co AG, die Zutrittsexperten",
  "uidNo": "CHE-100.766.120",
  "dunsNo": null,
  "url": "https://www.hasler.ch/?srv=sortiment&cmsrub=548",
  "address": { "countryId": "CH", "city": "Winterthur", "postalCode": "8404", "cantonId": "ZH", ... },
  "companySize": "large",
  "isBiddingConsortium": false,
  ...
}

uidNo est l'IDE de l'entreprise dans sa forme officielle à points. Au registre du commerce, CHE-100.766.120 s'appelle «Hasler + Co AG, Zutrittslösungen». Le nom affiché sur simap.ch est celui que le soumissionnaire a saisi dans son profil; il diffère ici de la raison sociale après la virgule, et un rapprochement par le nom aurait manqué l'entreprise. Faites la jointure sur l'IDE.

La couverture est élevée. Dans les 80 premières adjudications et adjudications de gré à gré de la semaine, les 93 soumissionnaires retenus avaient tous un vendorId dont le profil répondait, et 85 avaient un IDE: 85 des 86 dotés d'une adresse en Suisse. Sur l'ensemble des adjudications publiées sur la nouvelle plateforme de juillet 2024 au 2 octobre 2026, telles que Prospex les a importées, 95% des soumissionnaires nommés dans les adjudications après appel d'offres ont un IDE, et 89% de ceux des adjudications de gré à gré. Le reste, ce sont surtout des entreprises étrangères (un numéro DUNS ou rien) et des consortiums (isBiddingConsortium: true), dont le profil décrit le consortium et non ses membres.

Trois autres points sur les adjudications:

  • Les lots sont adjugés séparément. Dans un projet à lots, l'adjudication de chaque lot est une publication distincte, avec un objet lot (lotNumber, title) et ses propres decision.vendors. Dans le projet 35277, un mandat de gestion immobilière pour les cantons de Fribourg et de Vaud, le lot 1 «MaIMB bâtiment» a été adjugé le 2 octobre à Basler & Hofmann SA par la publication 35277-02.
  • Le prix peut manquer. price est facultatif, et certaines adjudications publient une fourchette dans totalPriceRange. vatType indique le traitement de la TVA (full, reduced, no_vat…).
  • L'appel d'offres est lié en amont. referencingPub pointe vers l'appel d'offres. GET /publications/v1/publication/{publicationId}/past-publications renvoie toute la chaîne, mais sur un projet à lots seulement avec ?lotId=; sans lui, la réponse est 400.

L'annuaire des soumissionnaires se consulte aussi directement: GET /vendors/v1?search=… cherche par nom, IDE ou numéro DUNS et renvoie uidNo sur chaque ligne. Il contient toutes les entreprises inscrites sur simap.ch, y compris celles qui n'ont jamais rien remporté.

De l'IDE au registre du commerce

Avec l'IDE, la suite se lit au registre du commerce. L'API REST de Zefix renvoie pour un IDE la raison sociale, la forme juridique, le siège, le statut et le but, une fois les identifiants demandés à l'Office fédéral de la justice. Le service web du registre IDE répond sans inscription, jusqu'à 20 requêtes par minute. L'API de la FOSC donne les publications qui accompagnent chaque modification inscrite: augmentation de capital, nouvel administrateur, transfert de siège, liquidation.

Le chemin de l'adjudication à l'IDE en Python. Le script parcourt les pages d'une recherche, saute les lignes qui ne sont pas des adjudications et lit l'IDE de chaque adjudicataire:

import time
import requests

API = "https://www.simap.ch/api"
session = requests.Session()
session.headers["User-Agent"] = "my-tender-monitor/1.0 (ops@example.ch)"


def search(**params):
    """Yield every project the search returns, page by page."""
    while True:
        page = session.get(f"{API}/publications/v2/project/project-search",
                           params=params, timeout=30).json()
        yield from page["projects"]
        if len(page["projects"]) < page["pagination"]["itemsPerPage"]:
            return
        params["lastItem"] = page["pagination"]["lastItem"]
        time.sleep(0.5)


def award_winners(project):
    """The awarded vendors of one award publication, with their UID."""
    detail = session.get(
        f"{API}/publications/v1/project/{project['id']}"
        f"/publication-details/{project['publicationId']}", timeout=30).json()
    for vendor in detail["decision"]["vendors"]:
        profile = session.get(
            f"{API}/vendors/v1/vendor/{vendor['vendorId']}/public", timeout=30).json()
        yield vendor["vendorName"], profile.get("uidNo"), (vendor.get("price") or {}).get("price")


for project in search(newestPubTypes=["award_tender"], cpvCodes=["72000000"],
                      newestPublicationFrom="2026-09-28",
                      newestPublicationUntil="2026-10-02"):
    if project["pubType"] not in ("award", "direct_award"):
        continue  # the filter reads the project, so an abandoned lot can come back
    title = next(t for t in project["title"].values() if t)
    for name, uid, price in award_winners(project):
        print(project["publicationNumber"], uid, name, price, title[:40])

Sa sortie le 3 octobre 2026, adjudications de services informatiques de la semaine précédente:

22123-02 CHE-228.107.522 swisscharge.ch AG 6922324.0 E-Mobilität Backend-Anbieter und Abrechn
41852-02 CHE-110.136.653 Itesys AG 532000.0 AS_2026_062 Betrieb von MS-SQL-Servern a
21790-03 CHE-105.944.452 ELCA Informatique SA 320000.0 Projet informatique de gestion des ident
39517-02 CHE-101.654.423 Swisscom (Schweiz) AG 981305.0 Unified Communication and Collaboration
42894-02 CHE-105.952.747 BDO AG (Zürich) 257278.0 BYOD & Client Management
34583-02 CHE-105.318.036 Eraneos Switzerland AG 1229637.5 IT-Architekt für das Amt für Informatik
38723-02 CHE-107.410.894 Axpo Systems AG 325324.78 Ausschreibung «xWDM Multiplexer»

En production, gardez les profils en cache par vendorId: ce sont souvent les mêmes entreprises qui remportent les marchés semaine après semaine.

Suivre les nouveaux appels d'offres

Une publication datée du jour se lit peu après minuit: le samedi 3 octobre 2026 à 1 h 12, une recherche newestPublicationFrom=2026-10-03 renvoyait déjà 20 projets. Un traitement quotidien qui ne rate rien:

  1. Chercher par fenêtre de dates, du dernier passage moins quelques jours jusqu'à aujourd'hui, sans filtre de type. Relire les derniers jours rattrape les rectifications, qui déplacent un projet à une nouvelle date.
  2. Enregistrer chaque ligne sous son publicationId. Un nouveau publicationId sur un projectNumber connu est une rectification, une adjudication ou une révocation; pubType et corrected disent laquelle.
  3. Ne lire le détail que des publications que vous n'avez pas encore. Conservez le JSON brut: une version ultérieure de l'API peut ajouter des champs.
  4. Pour les adjudications, lire chaque vendorId une seule fois et garder le profil en cache.

Pour une alerte, filtrez les lignes stockées sur pubType == "tender" et vos codes CPV, et comparez dates.offerDeadline à la date du jour pour écarter les appels d'offres échus. Pour suivre quelques codes CPV sans écrire de code, simap.ch envoie des alertes par e-mail pour dix recherches enregistrées au plus par compte; leurs conditions les réservent à un usage personnel ou interne à l'entreprise.

Conditions d'utilisation

Les CG d'utilisation de l'API de simap.ch (adaptées le 13 novembre 2023 à la nouvelle plateforme) autorisent l'usage commercial et la transmission à des tiers, à certaines conditions:

  • Le contenu ne doit pas être modifié et doit se distinguer visuellement de vos propres commentaires.
  • Il doit porter la mention: «Ceci n'est pas une publication officielle. Les données publiées sur la plateforme www.simap.ch font foi.»
  • Les indications de l'association sur la qualité des données, ainsi que les éventuelles rectifications de données simap.ch, doivent aussi être publiées.
  • Les données peuvent être communiquées à des tiers dès 8 h le jour de leur publication. Votre traitement peut lire les données plus tôt, mais les alertes à vos clients partent au plus tôt à 8 h.

En cas de divergence, la version allemande des conditions fait foi. Ce résumé reflète notre lecture et ne constitue pas un avis juridique.

Publications antérieures à juillet 2024

La nouvelle plateforme a démarré vide le 1er juillet 2024: rien n'a été migré depuis l'ancien simap. Les anciennes publications se trouvent sur archiv.simap.ch, qui a sa propre petite API (OpenAPI à https://archiv.simap.ch/api/v3/api-docs): POST /api/search avec les filtres dans un corps JSON, et GET /api/detail?meldungsnummer=… pour une publication, également sans compte. Une recherche des adjudications ("type_cd_ob": "OB02,OB08") publiées en juin 2024 a renvoyé 1'272 publications. L'archive garde le format de l'ancienne plateforme: les types sont des codes comme OB01 pour un appel d'offres et OB02 pour une adjudication, et l'adjudicataire y figure avec son nom et son adresse, sans IDE.

Pour les marchés fédéraux, une seconde source existe. La Conférence des achats de la Confédération (CA) publie chaque année sur opendata.swiss la liste des contrats de CHF 50'000 et plus conclus par l'administration fédérale centrale («Marchés de l'administration fédérale centrale d'une valeur minimale de 50 000 francs»), y compris ceux qui n'ont pas paru sur simap.ch: fournisseur, NPA, objet, procédure, durée et montant du contrat. La liste ne donne pas d'IDE non plus, et le jeu de données intitulé 2024 contient les contrats de 2023.

Limites et pièges

  • Il n'existe pas de liste de tous les projets: toute recherche demande un terme ou un filtre. Une fenêtre de dates suffit.
  • 20 lignes par page, sans paramètre de taille. Une semaine chargée représente une trentaine de pages.
  • Les filtres de type et de date ne testent que la publication la plus récente, comme décrit plus haut.
  • Une rectification est une nouvelle ligne. Dédoublonnez sur publicationId et regroupez sur projectNumber.
  • Les champs traduits sont souvent incomplets; prévoyez un repli sur les autres langues.
  • Les descriptions sont en HTML, avec des &nbsp; et des paragraphes vides.
  • past-publications exige un lotId sur un projet à lots.
  • Le nom du soumissionnaire est déclaratif; l'IDE est la clé fiable. Les soumissionnaires étrangers et les consortiums n'ont en général pas d'IDE.
  • Les pages de l'interface web sous /fr/project-detail et chemins semblables sont exclues par le robots.txt. Les chemins /api ne le sont pas.

Pour éviter d'écrire le client, l'outil open source swissco s'appuie sur les mêmes points d'accès publics: swissco tenders liste les projets par canton, date et type de publication, et swissco vendor cherche une entreprise dans l'annuaire des soumissionnaires par nom ou par IDE. Où trouver les données d'entreprises suisses présente le registre, la FOSC et les autres sources publiques auxquelles rattacher une adjudication. Et pour voir ce que l'État achète vraiment, voici les appels d'offres les plus insolites de Suisse que nous y avons trouvés.

Questions fréquentes

Faut-il un compte ou une clé pour utiliser l'API simap.ch?
La lecture de l'API simap.ch ne demande ni compte ni clé: chercher des projets, lire les appels d'offres et les adjudications et consulter les soumissionnaires retenus se font sans compte sur www.simap.ch/api. Télécharger les documents d'appel d'offres ou publier demande un compte simap.ch.
Où trouver la documentation de l'API simap.ch?
L'interface Swagger est à www.simap.ch/api-doc et le fichier OpenAPI à www.simap.ch/api/specifications/simap.yaml, avec un journal des modifications. La version 1.5.1 était en ligne le 3 octobre 2026.
Comment trouver l'IDE de l'entreprise qui a remporté un marché public?
Lisez l'adjudication, prenez le vendorId de chaque adjudicataire et interrogez /vendors/v1/vendor/{vendorId}/public: le champ uidNo contient l'IDE. Dans l'import de Prospex depuis juillet 2024, 95% des soumissionnaires nommés dans les adjudications après appel d'offres ont un IDE. Pour cet IDE, l'API Prospex renvoie l'entreprise inscrite, avec son canton, son secteur et sa taille, et ses événements, comme les augmentations de capital et les changements de direction.
Peut-on réutiliser les données de simap.ch à des fins commerciales?
Oui. Les CG de l'API simap.ch autorisent l'usage commercial et la transmission à des tiers dès 8 h le jour de la publication, sans modification et avec la mention qu'il ne s'agit pas d'une publication officielle.
Où trouver les appels d'offres simap.ch antérieurs à juillet 2024?
Sur archiv.simap.ch. La nouvelle plateforme a démarré le 1er juillet 2024 sans reprendre les anciennes publications, et l'archive a sa propre API de recherche à archiv.simap.ch/api, elle aussi sans compte.

Écrit par

Semion Sidorenko

Semion Sidorenko est le fondateur et CEO de Prospex. De l'ingénierie des données à la recherche en apprentissage automatique, il a passé quinze ans à aider des entreprises à faire grandir leurs plateformes de données. Avant de fonder Prospex, il a été ingénieur en apprentissage automatique à l'EPFL et consultant indépendant en ingénierie des données pour des entreprises suisses.

LinkedInGitHubsemion.sidorenko.ch