SIMAP-Schnittstelle: Ausschreibungen und Zuschläge abrufen

Auf simap.ch publizieren Bund, Kantone und Gemeinden ihre Ausschreibungen, Zuschläge, freihändigen Vergaben und Berichtigungen. Seit dem 1. Juli 2024 läuft die Plattform auf einer neuen Software mit einer REST-Schnittstelle, die JSON liefert. Die Endpunkte zum Suchen und Lesen von Publikationen antworten ohne Benutzerkonto. In der Woche vom 28. September bis 2. Oktober 2026 erhielten 570 Beschaffungsprojekte eine neue Publikation, darunter 306 Ausschreibungen, 184 Zuschläge und 48 freihändige Vergaben.

Dieser Leitfaden richtet sich an Entwicklerinnen und Entwickler, die diese Daten in ein eigenes System übernehmen wollen. Alle Abfragen unten haben wir am 3. Oktober 2026 ausgeführt; die Antworten sind gekürzte Auszüge dessen, was die API an diesem Tag lieferte. Der Abschnitt zu den Zuschlägen zeigt den Schritt, den die meisten Integrationen brauchen: vom Zuschlag zur UID des berücksichtigten Unternehmens und von dort zu seinem Handelsregistereintrag.

Was simap.ch publiziert

Ein Beschaffungsprojekt besteht aus einer Folge von Publikationen. Jede Publikation hat einen pubType. Die projectNumber bleibt über das ganze Projekt gleich, und die Meldungsnummer ergänzt sie um eine laufende Nummer: 28727-01 ist die Ausschreibung, 28727-02 der Zuschlag.

pubTypeBedeutung28.9.–2.10.2026
tenderAusschreibung im offenen, selektiven oder Einladungsverfahren306
awardZuschlag nach einer Ausschreibung: Anbieter, Preis, Anzahl Angebote184
direct_awardFreihändige Vergabe ohne Ausschreibung48
abandonment, revocationAbbruch des Verfahrens, Widerruf einer Publikation17, 0
advance_notice, request_for_informationVorankündigung, Marktabklärung (RFI)4, 6
competition, study_contract, participant_selectionWettbewerb, Studienauftrag, Präqualifikation im selektiven Verfahren1, 0, 4

Gezählt sind Projekte, deren neueste Publikation in diese Woche fiel; so zählt auch die Suche. Eine Berichtigung ist kein eigener Typ: Eine berichtigte Ausschreibung erscheint als neue tender-Publikation mit corrected: true. 38 der 570 Projekte waren Berichtigungen.

Zugang: wofür es ein Konto braucht

Die OpenAPI-Spezifikation liegt unter https://www.simap.ch/api/specifications/simap.yaml (am 3. Oktober 2026 in Version 1.5.1), die Swagger-Oberfläche unter https://www.simap.ch/api-doc/, daneben ein Changelog. Die Basis-URL ist https://www.simap.ch/api. Die Integrationsumgebung beantwortet dieselben Abfragen unter https://int.simap.ch/api.

Die Spezifikation deklariert für alle Endpunkte OpenID Connect. Zum Lesen braucht es trotzdem kein Token. Die AGB für die Nutzung der Schnittstelle halten in Ziffer 6 fest, dass der Zugriff auf Publikationen und die Suche ohne Authentifizierung möglich sind. Alle Abfragen in diesem Leitfaden liefen ohne Token und ohne Cookie.

AufgabeKonto nötig
Projekte suchen, Publikationen lesen, berücksichtigte Anbieter und CPV-Codes nachschlagenNein
Ausschreibungsunterlagen herunterladen, Fragen im Forum stellen, Interesse bekundenBenutzerkonto, das einem registrierten Anbieter zugeordnet ist
Ausschreibungen erfassen und publizierenBenutzerkonto einer Beschaffungsstelle
Maschinen-Client für die geschützten EndpunkteAntrag über das Formular «Antrag auf API Client für simap.ch (Produktiv- und Testumgebung)» in den FAQ von simap.ch

Einen Client haben wir nicht beantragt; dieser Leitfaden beschränkt sich auf die öffentlichen Endpunkte. Die Nutzung ist heute kostenlos. Der Verein simap.ch behält sich vor, einzelne Komponenten mit einem Monat Vorlauf kostenpflichtig zu machen, und garantiert nicht, dass die Schnittstelle zwischen Versionen unverändert bleibt. Ein Rate-Limit ist nicht dokumentiert, und die Antworten enthalten keine entsprechenden Header. Unser eigener Import läuft mit rund drei Abfragen pro Sekunde ohne Fehler.

Ausschreibungen suchen

Jede Suche läuft über GET /publications/v2/project/project-search. Der Endpunkt verlangt mindestens einen Filter oder einen Suchbegriff; eine Abfrage ohne beides beantwortet er mit 400 und E0003. Ausschreibungen mit Leistungsort im Kanton Zürich, neueste Publikation zwischen dem 28. September und dem 2. Oktober:

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

Die Antwort, gekürzt auf das erste Projekt:

{
  "projects": [
    {
      "id": "e5a9b3cf-af07-41bd-a438-7d58cc96ec45",
      "title": { "de": "Notnahrung", "en": "Long-term emergency food", "fr": null, "it": null },
      "projectNumber": "42636",
      "projectType": "tender",
      "projectSubType": "supply",
      "processType": "open",
      "lotsType": "without",
      "publicationId": "e04d4759-0352-42a2-8e87-eb021c1a8b82",
      "publicationDate": "2026-10-02",
      "publicationNumber": "42636-02",
      "pubType": "tender",
      "corrected": true,
      "procOfficeName": { "de": "Kantonspolizei Zürich", "en": "Police Cantonal Zürich", ... },
      "orderAddress": { "countryId": "CH", "cantonId": "ZH", "postalCode": "8004", "city": { "de": "Zürich", ... } }
    },
    ...
  ],
  "pagination": { "lastItem": "20261002|45237", "itemsPerPage": 20 }
}

42636-02 mit corrected: true ist die Berichtigung einer früheren Ausschreibung desselben Projekts. Übersetzte Felder kommen immer als Objekt mit de, fr, it und en, meist nur in einer oder zwei Sprachen ausgefüllt. Nehmen Sie die Sprache der Leserin, wenn sie vorhanden ist, sonst den ersten Wert, der nicht null ist.

Parameter

ParameterWerteHinweis
search3 bis 1'000 ZeichenVolltext in Titel und Beschreibung. Zwei Zeichen ergeben 400 (E0025).
langde, fr, it, enSprachen, in denen der Suchbegriff gesucht wird. Ohne Angabe alle vier.
newestPubTypestender, award_tender, direct_award, advance_notice, …Typ der neuesten Publikation des Projekts. award_tender ist der Zuschlag einer Ausschreibung.
projectSubTypesconstruction, service, supply, Wettbewerbe, StudienaufträgeBauleistung, Dienstleistung, Lieferung.
processTypesopen, selective, invitation, direct, no_processVerfahrensart.
cpvCodes, bkpCodes, npkCodes, …CodesEin übergeordneter CPV-Code findet auch die untergeordneten.
orderAddressCantonsZH, BE, …Kanton des Leistungsorts, sofern die Beschaffungsstelle ihn strukturiert erfasst hat.
issuedByOrganizationsUUIDs von Stellen oder InstitutionenSchliesst untergeordnete Stellen ein.
newestPublicationFrom, newestPublicationUntilISO-DatumInklusive.
lastItemAus der vorherigen SeiteFortlaufende Paginierung, 20 Projekte pro Seite.

Mehrere Werte übergeben Sie, indem Sie den Parameter wiederholen: newestPubTypes=tender&newestPubTypes=award_tender. Die Seitengrösse ist fest auf 20 eingestellt, die Ergebnisse kommen neueste zuerst. Die nächste Seite holen Sie mit derselben Abfrage und dem lastItem aus pagination. Hat eine Seite weniger als 20 Projekte, ist die Liste zu Ende.

Drei Filtereigenschaften, die Ihre Zahlen verändern

Die Filter prüfen die neueste Publikation eines Projekts. newestPubTypes und die beiden Datumsparameter sehen nur die jüngste Publikation, nichts davor. Eine im Juni eröffnete und am 2. Oktober berichtigte Ausschreibung erscheint unter dem 2. Oktober. Eine Ausschreibung, die inzwischen zugeschlagen wurde, fällt aus einer Suche mit newestPubTypes=tender heraus. Und eine Suche nach award_tender kann einen Abbruch liefern: Bei einem Projekt mit Losen, von denen eines vergeben und ein anderes abgebrochen war, passte das Projekt, während die Zeile selbst pubType: "abandonment" trug. Prüfen Sie pubType jeder Zeile, bevor Sie sie als Zuschlag lesen. Für einen vollständigen Datenbestand fragen Sie nach Datumsfenster ohne Typfilter ab und sortieren selbst.

CPV-Codes schliessen untergeordnete Codes ein. Im September 2026 lieferte cpvCodes=72000000 (IT-Dienste) 144 Projekte, cpvCodes=72200000 (Softwareprogrammierung und -beratung) 44, alle davon unter den 144. Übergeben Sie den breitesten Code, den Sie brauchen. GET /codes/v1/cpv?parentCode=72000000 listet die Untercodes mit Bezeichnungen in vier Sprachen, ebenfalls ohne Login.

Der Kantonsfilter übergeht Projekte ohne strukturierten Leistungsort. 206 der 570 Projekte jener Woche hatten keine orderAddress.cantonId, weil die Beschaffungsstelle den Ort nur als Freitext oder gar nicht angegeben hatte. orderAddressCantons lässt diese weg. Wenn Sie nach Auftraggeber filtern wollen, nehmen Sie issuedByOrganizations oder lesen procOfficeAddress.cantonId aus der Detailansicht.

Eine Ausschreibung lesen

Die Suchzeile liefert id (das Projekt) und publicationId. Die vollständige Publikation steht unter GET /publications/v1/project/{projectId}/publication-details/{publicationId}. Ihr Aufbau hängt von type ab: Ausschreibungen enthalten dates, terms und criteria, Zuschläge enthalten decision. Die Felder, die die meisten Integrationen lesen:

AngabeFeldpfadBeispiel (Ausschreibung 37714-04)
Meldungsnummer und Datumbase.publicationNumber, base.publicationDate37714-04, 2026-10-02
Titelbase.title.{de,fr,it,en}Kantonales Personenregister für GERES-Community
Haupt-CPV-Codeprocurement.cpvCode.code72200000
Weitere Codesprocurement.additionalCpvCodes[], procurement.bkpCodes[]
Beschreibungprocurement.orderDescription.{lang}HTML
Eingabefristdates.offerDeadline2026-11-13T12:00:00+01:00
Fragerundendates.qnas[].date31.7., 14.8., 16.10.2026
Erstpublikationdates.initialPublicationDate2026-06-29
Beschaffungsstelleproject-info.procOfficeAddressName, Kanton, E-Mail, Telefon
Was eine Berichtigung ändertcorrection.correctionDiffKeys[], correction.remarksdates.qnas, project-info.documentsSourceUrl, …
Loselots[]Leer, wenn lotsType den Wert without hat

offerDeadline enthält die Zeitzonenverschiebung; speichern Sie die Frist als Zeitstempel mit Zeitzone. Die Ausschreibungsunterlagen liegen hinter einem Anbieter-Login. Die Publikation sagt, wo sie zu beziehen sind (project-info.documentsSourceType, documentsSourceUrl) und in welchen Sprachen.

Einen Zuschlag lesen und die UID des Anbieters finden

Ein Zuschlag nennt die berücksichtigten Anbieter unter decision.vendors. Hier der Zuschlag im Projekt 28727, publiziert am 3. Oktober 2026 vom Hochbauamt des Kantons St.Gallen, gekürzt:

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": { "de": "Bauleistungen im Hochbau", ... } },
    "bkpCodes": [ { "code": "275", "label": { "de": "Schliessanlagen", ... } } ]
  },
  "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" }
}

Der Zuschlag selbst enthält keine UID, aber eine vendorId. Das ist der Schlüssel des Anbieterprofils auf simap.ch, und dieses Profil ist öffentlich:

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 ist die UID in der amtlichen Schreibweise mit Punkten. Im Handelsregister heisst CHE-100.766.120 «Hasler + Co AG, Zutrittslösungen». Der Name auf simap.ch ist die Selbstangabe im Anbieterprofil und weicht hier nach dem Komma vom eingetragenen Namen ab; ein Abgleich über den Namen hätte das Unternehmen verfehlt. Verknüpfen Sie über die UID.

Die Abdeckung ist hoch. In den ersten 80 Zuschlägen und freihändigen Vergaben jener Woche hatten alle 93 berücksichtigten Anbieter eine vendorId mit abrufbarem Profil, 85 davon eine UID: 85 der 86 mit Schweizer Adresse. Über alle Zuschläge der neuen Plattform von Juli 2024 bis 2. Oktober 2026, wie Prospex sie importiert hat, haben 95% der in Zuschlägen nach Ausschreibung genannten Anbieter eine UID, bei den freihändigen Vergaben 89%. Der Rest sind vor allem ausländische Unternehmen (mit DUNS-Nummer oder ohne Kennung) und Bietergemeinschaften (isBiddingConsortium: true), deren Profil die Gemeinschaft beschreibt und nicht ihre Mitglieder.

Drei weitere Punkte bei Zuschlägen:

  • Lose werden einzeln zugeschlagen. Bei einem Projekt mit Losen ist der Zuschlag jedes Loses eine eigene Publikation mit einem lot-Objekt (lotNumber, title) und eigenen decision.vendors. Im Projekt 35277, einem Mandat für die Immobilienbewirtschaftung in den Kantonen Freiburg und Waadt, ging Los 1 am 2. Oktober mit der Publikation 35277-02 an Basler & Hofmann SA.
  • Der Preis kann fehlen. price ist optional, manche Zuschläge publizieren stattdessen eine Spanne in totalPriceRange. vatType nennt die Mehrwertsteuerbehandlung (full, reduced, no_vat, …).
  • Die Ausschreibung ist rückwärts verknüpft. referencingPub verweist auf die Ausschreibung. GET /publications/v1/publication/{publicationId}/past-publications liefert die ganze Kette, bei Projekten mit Losen aber nur mit ?lotId=; ohne antwortet der Endpunkt mit 400.

Das Anbieterverzeichnis lässt sich auch direkt durchsuchen: GET /vendors/v1?search=… findet Name, UID oder DUNS-Nummer und liefert uidNo in jeder Zeile. Es enthält alle auf simap.ch registrierten Anbieter, auch solche, die nie einen Zuschlag erhalten haben.

Von der UID zum Handelsregister

Mit der UID lesen Sie den Rest des Unternehmens im Register nach. Die Zefix-REST-API liefert zu einer UID Firmenname, Rechtsform, Sitz, Status und Zweck, sobald Sie Zugangsdaten beim Bundesamt für Justiz beantragt haben. Der Webservice des UID-Registers antwortet ohne Registrierung mit bis zu 20 Abfragen pro Minute. Über die SHAB-API erhalten Sie die Publikationen hinter jeder Registeränderung: Kapitalerhöhung, neues Verwaltungsratsmitglied, Sitzverlegung, Liquidation.

Der Weg vom Zuschlag zur UID in Python. Das Skript blättert durch die Suchergebnisse, überspringt Zeilen, die keine Zuschläge sind, und liest die UID jedes berücksichtigten Anbieters:

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])

Die Ausgabe am 3. Oktober 2026, Zuschläge für IT-Dienste der Vorwoche:

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»

Im Betrieb lohnt es sich, Anbieterprofile pro vendorId zwischenzuspeichern: Viele Anbieter erhalten Woche für Woche Zuschläge.

Neue Ausschreibungen regelmässig abrufen

Publikationen mit dem heutigen Datum sind kurz nach Mitternacht abrufbar: Am Samstag, 3. Oktober 2026, um 01.12 Uhr lieferte eine Suche mit newestPublicationFrom=2026-10-03 bereits 20 Projekte. Ein täglicher Abruf, der nichts verpasst:

  1. Nach Datumsfenster suchen, vom letzten Abruf minus einige Tage bis heute, ohne Typfilter. Das Wiederholen der letzten Tage erfasst Berichtigungen, die ein Projekt auf ein neues Datum verschieben.
  2. Jede Zeile über publicationId speichern. Eine neue publicationId zu einer bekannten projectNumber ist eine Berichtigung, ein Zuschlag oder ein Widerruf; pubType und corrected sagen welches.
  3. Details nur für Publikationen abrufen, die Sie noch nicht haben. Bewahren Sie das rohe JSON auf; spätere API-Versionen können Felder ergänzen.
  4. Bei Zuschlägen jede vendorId einmal abrufen und das Profil zwischenspeichern.

Für einen Ausschreibungsalarm filtern Sie die gespeicherten Zeilen nach pubType == "tender" und Ihren CPV-Codes und vergleichen dates.offerDeadline mit dem heutigen Datum, damit abgelaufene Ausschreibungen wegfallen. Wer nur ein paar CPV-Codes verfolgt, kommt auch ohne Code aus: simap.ch verschickt E-Mail-Abos für bis zu zehn gespeicherte Suchen pro Benutzerkonto. Die AGB für diese Abos erlauben nur die persönliche oder betriebsinterne Nutzung.

Nutzungsbedingungen

Die AGB für die Nutzung der API von simap.ch (für die neue Plattform am 13. November 2023 angepasst) erlauben die kommerzielle Nutzung und die Weitergabe an Dritte, unter Bedingungen:

  • Der Inhalt darf nicht verändert werden und muss sich optisch klar von eigenen Kommentaren abheben.
  • Er ist mit dem Hinweis zu versehen: «Dies ist keine amtliche Veröffentlichung. Massgebend sind die auf der Plattform www.simap.ch veröffentlichten Daten.»
  • Angaben des Vereins zur Datenqualität und Berichtigungen sind ebenfalls zu publizieren.
  • Die Daten dürfen Dritten ab 8.00 Uhr des Erscheinungstages bekannt gegeben werden. Ihr Abruf darf früher laufen; Benachrichtigungen an Kunden gehen frühestens um 8.00 Uhr hinaus.

Das ist eine Zusammenfassung dessen, was wir gelesen haben, keine Rechtsberatung.

Publikationen vor Juli 2024

Die neue Plattform ist am 1. Juli 2024 leer gestartet; vom alten simap wurde nichts migriert. Die alten Meldungen liegen auf archiv.simap.ch, das eine eigene kleine API hat (OpenAPI unter https://archiv.simap.ch/api/v3/api-docs): POST /api/search mit Filtern im JSON-Body und GET /api/detail?meldungsnummer=… für eine einzelne Meldung, ebenfalls ohne Login. Eine Suche nach Zuschlägen ("type_cd_ob": "OB02,OB08") vom Juni 2024 ergab 1'272 Meldungen. Das Archiv verwendet das Format der alten Plattform: Meldungstypen sind Codes wie OB01 für eine Ausschreibung und OB02 für einen Zuschlag, und der berücksichtigte Anbieter steht mit Name und Adresse da, ohne UID.

Für Bundesaufträge gibt es eine zweite Quelle. Die Beschaffungskonferenz des Bundes (BKB) veröffentlicht jährlich alle Verträge der zentralen Bundesverwaltung ab CHF 50'000 auf opendata.swiss («Beschaffungen ab 50 000 Franken der zentralen Bundesverwaltung»), auch solche ohne Publikation auf simap.ch: Lieferant, PLZ, Gegenstand, Verfahren, Vertragsdauer und Volumen. Eine UID fehlt auch dort, und der Datensatz mit der Jahreszahl 2024 enthält die Verträge von 2023.

Grenzen und Stolpersteine

  • Eine Liste aller Projekte gibt es nicht; jede Suche braucht einen Begriff oder Filter. Ein Datumsfenster genügt.
  • 20 Zeilen pro Seite, ohne Parameter für die Seitengrösse. Eine volle Woche ergibt rund 30 Seiten.
  • Typ- und Datumsfilter prüfen nur die neueste Publikation, wie oben beschrieben.
  • Eine Berichtigung ist eine neue Zeile. Deduplizieren Sie über publicationId und gruppieren Sie über projectNumber.
  • Übersetzte Felder sind teilweise leer; greifen Sie auf andere Sprachen zurück.
  • Beschreibungen sind HTML mit &nbsp; und leeren Absätzen. Postleitzahlen können ein Leerzeichen am Ende haben.
  • past-publications verlangt bei Projekten mit Losen eine lotId.
  • Der Anbietername ist eine Selbstangabe, die UID der verlässliche Schlüssel. Ausländische Anbieter und Bietergemeinschaften haben meist keine UID.
  • Die Seiten der Weboberfläche unter /de/project-detail und ähnlichen Pfaden sind in der robots.txt gesperrt, die /api-Pfade nicht.

Wer den Client nicht selbst schreiben will: Das Open-Source-Werkzeug swissco nutzt dieselben öffentlichen Endpunkte. swissco tenders listet Projekte nach Kanton, Datum und Publikationstyp, swissco vendor sucht ein Unternehmen im Anbieterverzeichnis nach Name oder UID. Der Leitfaden zu Schweizer Unternehmensdaten und ihren Quellen zeigt das Register, das SHAB und die weiteren öffentlichen Quellen, mit denen sich ein Zuschlag verknüpfen lässt. Und was über simap.ch alles beschafft wird, zeigen die kuriosesten Schweizer Beschaffungen, die wir darin gefunden haben.

Häufige Fragen

Braucht man für die SIMAP-Schnittstelle ein Konto oder einen API-Schlüssel?
Zum Lesen braucht die SIMAP-Schnittstelle weder Konto noch API-Schlüssel: Projekte suchen, Ausschreibungen und Zuschläge lesen und berücksichtigte Anbieter nachschlagen geht ohne Login über www.simap.ch/api. Für Ausschreibungsunterlagen und zum Publizieren braucht es ein Benutzerkonto auf simap.ch.
Wo ist die Dokumentation der SIMAP-API?
Die Swagger-Oberfläche liegt unter www.simap.ch/api-doc, die OpenAPI-Datei unter www.simap.ch/api/specifications/simap.yaml, dazu ein Changelog. Am 3. Oktober 2026 war Version 1.5.1 aktiv.
Wie finde ich die UID des Unternehmens, das einen Zuschlag erhalten hat?
Lesen Sie den Zuschlag, nehmen Sie die vendorId jedes berücksichtigten Anbieters und fragen Sie /vendors/v1/vendor/{vendorId}/public ab: Das Feld uidNo enthält die UID. Im Prospex-Import seit Juli 2024 haben 95% der in Zuschlägen nach Ausschreibung genannten Anbieter eine UID. Zu dieser UID liefert die Prospex-API das eingetragene Unternehmen mit Kanton, Branche und Grösse sowie seine Ereignisse, etwa Kapitalerhöhungen und Wechsel in der Leitung.
Darf ich SIMAP-Daten kommerziell weiterverwenden?
Ja. Die AGB für die API von simap.ch erlauben die kommerzielle Nutzung und die Weitergabe an Dritte ab 8.00 Uhr des Erscheinungstages, unverändert und mit dem Hinweis, dass es sich um keine amtliche Veröffentlichung handelt.
Wo finde ich SIMAP-Ausschreibungen vor Juli 2024?
Auf archiv.simap.ch. Die neue Plattform startete am 1. Juli 2024 ohne Datenmigration, und das Archiv hat eine eigene Such-API unter archiv.simap.ch/api, ebenfalls ohne Login.

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