Get started

BFS gives you the open data of the Swiss Federal Statistical Office (BFS, Bundesamt für Statistik) in R. You get tidy data frames, in German, French, Italian or English.

On this page, you learn:

  • which API to use for which data,
  • why the BFS is moving its data to a new platform,
  • how to make a first download.

Which API for which data

The BFS publishes its data with four APIs. The package has functions for each of them:

You want Use API
Statistics of the Swiss Stats Explorer bfs_sse_datasets(), bfs_sse_dimensions(), bfs_sse_data() Swiss Stats Explorer (SDMX)
Datasets of the BFS data catalog bfs_get_catalog_data(), bfs_get_metadata(), bfs_get_data() STAT-TAB (PXWeb)
Tables and files (Excel, CSV, PX, …) bfs_get_catalog_tables(), bfs_download_asset() DAM
Maps and geodata bfs_get_base_maps(), bfs_get_catalog_geodata(), bfs_download_geodata() ThemaKart, STAC
  • The Swiss Stats Explorer (SSE) is the new data platform of the BFS. Each dataset has an id, for example DF_LWZ_1.
  • STAT-TAB is the old platform. Each dataset (data cube) has a BFS number, for example px-x-1502040100_131.
  • The DAM API gives you all the files of the BFS, for example the Excel tables of the website.
  • The geodata come from the Swiss geo-portal and from the base maps of the BFS.

From STAT-TAB to the Swiss Stats Explorer

The BFS is replacing STAT-TAB with the Swiss Stats Explorer. It moves its data cubes to the new platform, one statistic at a time. Then it will switch off STAT-TAB. The BFS announcement gives the dates.

What this means for your code:

  • bfs_get_data(), bfs_get_metadata() and bfs_get_data_comments() use STAT-TAB. They will stop working when STAT-TAB is switched off.
  • During the move, a statistic can be on STAT-TAB only, on both platforms, or on the Swiss Stats Explorer only.
  • If a BFS number does not work anymore, search the statistic by its name on stats.swiss.
  • The functions for tables, files and geodata do not change.

For new code, use the Swiss Stats Explorer if the statistic is there. Use STAT-TAB only for the data that is not there yet.

A first download

library(BFS)

Swiss Stats Explorer

Let’s get the vacancy rate (the share of empty homes, in %) of the cantons of Geneva, Zurich and Bern. The dataset is DF_LWZ_1, the vacant dwellings. You find this id with bfs_sse_datasets(), or in the URL of the dataset on stats.swiss.

First, see the dimensions of the dataset and the codes of their values:

dimensions <- bfs_sse_dimensions("DF_LWZ_1", language = "en")
dimensions

Then download the data. In filters, give the codes you want for each dimension:

bfs_sse_data(
  "DF_LWZ_1",
  filters = list(
    GR_KT_GDE = c("GE", "ZH", "BE"), # the cantons of Geneva, Zurich and Bern
    WOHN_ANZAHL = "_T",              # all numbers of rooms
    LEERWOHN_TYP = "_T",             # all types of vacant dwellings
    MEASURE_DIMENSION = "RATE"       # the vacancy rate, in %
  ),
  start_period = "2020",
  language = "en"
)

The article Swiss Stats Explorer explains each step of this example.

STAT-TAB

Search the BFS data catalog. Then download a dataset with its BFS number:

bfs_get_catalog_data(language = "en", extended_search = "university students")

bfs_get_data(number_bfs = "px-x-1502040100_131", language = "en")

The article Data catalog and PXWeb datasets shows how to search the catalog and download only a part of a dataset.

Next steps