Swiss Public Contracts
Menu

How it works

Where the data comes from, how we arrange it and what it does not show – plus the key terms, explained briefly.

What this register isKey termsSource and terms of useWhen we update the dataWhat is coveredHow we assign contracts to cantonsHow we match companies and public buyersAmounts, lots and totalsWhat is not includedSectors and categories (CPV)Downloads and subscriptionsContact and error reports

What this register is

Swiss Public Contracts collects the contracts awarded and the tenders that the Confederation, the cantons and the communes publish on simap.ch, and arranges them by company, public buyer, canton and sector. That way you can see who has won which public contracts – a question simap.ch itself does not answer.

The register is a private, independent project. It is not an official publication and has no connection to simap.ch or to any authority. Only the publications on simap.ch are authoritative; every contract and tender page links to the official publication.

Key terms

Source and terms of use

All data comes from the application programming interface (API) of simap.ch, the official platform for public procurement in Switzerland. Its terms of use allow the data to be reused, including commercially, provided it stays unchanged in content, is kept separate from our own analysis and carries the prescribed notice. That notice is in the footer of every page; our own analysis is marked as such.

Titles and descriptions appear as they were published, in the language of the publication. We neither translate nor reword them. Only some are available in English.

Licence: the register grants no licence of its own for the data; its reuse is governed by simap.ch’s terms of use (simap.ch/de/about/legal). The licence field in this page’s structured data (schema.org/Dataset) points to those terms.

Base map of the home page: swiss-maps © Interactive Things (BSD-3-Clause), data FSO/swisstopo.

When we update the data

simap.ch releases each day’s publications for redistribution from 8 am. We usually fetch them every day from Monday to Saturday after that, and the register is mostly up to date by late morning; on some days later, or the next day. Each run fetches the contracts awarded in the current and the previous month – where corrections also arrive – and the tenders of the last 75 days.

The date in the footer of every page (“Updated”) is the date of the newest publication in the register. Updated 31 Oct 2026: 18,933 contracts awarded and 1,404 open tenders.

What is covered

The archive begins in August 2024. From August 2024 to October 2024 only part of the contracts awarded were captured; these months are striped in the monthly charts. From November 2024 on, the register holds the contracts awarded that the simap.ch interface returned for each month when we fetched them. We don’t check them against official totals. 107 publications of contracts awarded from July 2026 came through the interface without a title or a winner; they are left out of every figure and list.

The register covers the contracts awarded and published on simap.ch after an open, a selective or an invitation procedure, and the tenders whose submission deadline is still open. Direct awards, which simap.ch also publishes in some cases, are not included. Contracts that are not published on simap.ch – small contracts that may be awarded directly, without a tender, for example – are missing here, just as they are on simap.ch.

How we assign contracts to cantons

What counts is the canton the publication gives as the place of performance (the contract’s address) – the same field simap.ch itself filters on. For a project divided into lots, each lot’s canton counts: a tender whose lots lie in several cantons is listed under each of them, marked “several cantons”. A contract awarded counts only in the canton of its lot, so that no total counts it twice.

Where the publication gives no place for the contract or its lots, we use the public buyer’s canton, marked “Location not given – canton of the public buyer”. Works on national roads in Thurgau or St. Gallen that FEDRO’s Winterthur branch puts out to tender without a place, for example, appear under Zurich. Other public buyers give their own address as the place of performance; their own canton is then shown even when the work takes place elsewhere – the data does not reveal it.

Two contracts name neither a place nor a public buyer with a canton; they count in no canton, and the canton overview lists them separately. All cantons together plus these contracts add up to the total on the home page. Tenders by email assigns them the same way: each of a tender’s cantons counts for your selection.

How we match companies and public buyers

A company is not always spelled the same way in the publications. Spellings that differ only in capitalisation, umlauts, accents or punctuation (“CSD INGENIEURE AG” and “CSD Ingenieure AG”, “Bolliger & Co. AG” and “Bolliger + Co. AG”) count as one company, shown under its most frequent spelling. Units with different names, such as branches, stay separate. We don’t match names against the commercial register.

A company gets its own page once it has two contracts, a public buyer once it has three, and a category (CPV code) once it has three. We match public buyers by name too, regardless of spaces, hyphens, quotation marks and brackets.

A contract awarded to several companies appears on the page of each of them.

Amounts, lots and totals

We show amounts as published. A contract’s page gives the exact amount; lists show a rounded figure, with the exact amount on hover and for screen readers.

Totals include only contracts in Swiss francs awarded to a single company. For a contract awarded to several companies the publication gives a price per company: we show these prices one by one, but never add them up or attribute them to an overall contract – in framework agreements the same ceiling often appears next to every company. Amounts in euros or other currencies are shown with their currency, never in a column of francs, and left out of every total.

An amount under CHF 1,000 is almost never the value of a contract but a unit rate (per hour, item or kilometre, for example). We mark it “probably a unit rate” and leave it out of every total and median. The same goes for an amount of up to CHF 5,000 when the publication speaks of staff leasing or a day or hourly rate (“LSE”, “Personalverleih”, “Tagessatz”, “tarif journalier” and the like).

For a project divided into lots, simap.ch publishes each lot separately. The project’s page lists every lot; where simap gives the same project price for several lots won by the same company, totals count it once.

What is not included

Sectors and categories (CPV)

The classification follows the CPV, the EU’s Common Procurement Vocabulary. A sector is the first two digits of the code (e.g. 45, construction work), a category the exact eight-digit code (e.g. 45233000). Category labels come from the official CPV in each language; the names of the 45 sectors are the register’s own short forms.

“Open tenders in related categories” on company pages and “Similar contracts awarded” on tender pages are based on the digits that CPV codes have in common: a general code such as 45000000 (construction work) is not enough on its own. For companies at least the first four significant digits must match. Similar contracts are in the same sector and the same canton, closest codes first.

Downloads and subscriptions

Subscribe free

Contact and error reports

Errors, questions and suggestions: write to abo@auftragsregister.ch. On every contract and tender page, “Report an error” opens an email with the publication number in the subject line. The register is run by a private individual in Switzerland; details of the operator are in the legal notice.

abo@auftragsregister.ch · Legal notice · Privacy