Web Scraper for Sweden COVID19 data.

2019-nCov, sweden, coronavirus, covid-19, covid-data, covid19-data
pip install covid19sweden==0.2.2


Web Scraper of COVID-19 data for Sweden

Python package covid19sweden provides access to mortality and COVID-19 data of Sweden.

The data is scraped from:

Setup and usage

Install from pip with

pip install covid19sweden

Currently available functions are

  • deaths() fetching number of deaths
  • fohm.regions() and fohm.municipalities() fetching Covid-19 statistics in regions and municipalities.

Package is regularly updated. Update with

pip install --upgrade covid19sweden

Covid-19 Deaths

Fetch Covid-19 deaths by weeks using

import covid19sweden as SE

x = SE.covid_deaths(level = 1)

The data can be acquired split into regions or municipalities using granularity variable level

x_regions = SE.covid_deaths(level = 2)
x_municipalities = SE.covid_deaths(level = 3)


Overall deaths in Sweden can be fetched such as

import covid19sweden as SWE

data = SWE.deaths()

The function returns pandas dataframe with the columns being years and rows being deaths of each age and


Level is a setting for granularity of data

  1. Country level (default)
  2. State level
  3. Municipality level
import covid19sweden as SWE

# country level
x1a,x1b,x1u = SWE.deaths(level = 1)
# state level
x2a,x2b,x2u = SWE.deaths(level = 2)
# municipality level
x3a,x3b,x3u = SWE.deaths(level = 3)

By default the level is 1. Level settings can be implicitly changed in the function.


Weekly is a setting of time axis of the data.

  • True - data are by weeks
  • False - data are by days

Default is False, data by days.

import covid19sweden as SWE

# weekly
xa,xb,xu = SWE.deaths(weekly = True)

Given setting will implicitly change per_gender_age = True, even though default is False. This behavior is described at section Verbose and alt.

Setting of weekly can be also implicitly changed if no data is available for given settings.

Per gender or age

The settings per_gender_age is controlling the deaths to be splitted into groups by gender (M,F) and age groups (mostly 0-64,65-79,80-89,90+).

import covid19sweden as SWE

# weekly
xa,xb,xu = SWE.deaths(per_gender_age = True)

Setting of per_gender_age can be implicitly changed if no data is available for given settings.

Verbose and alt

Not for all the combinations of the parameters the data is available. E.g. for level = 3, only daily data without gender and age distinguishing is available. Hence to minimize error rate, implicit parameter changes are introduced.

If the data for given settings is not available, a set of rules is applied to reach data:

  • if data is available for not per_gender_age, use them
  • if data is available for not weekly, use them
  • if data is available for not per_gender_age, not_weekly, use them

Implicit parameter change is announced on stdout. It can be switched off by setting verbose = False.

Sometimes multiple datasets with slight difference (or two conversions) are available. This is announced on stdout. Choosing an alternative data is done with alt = True.

Covid-19 in regions and municipalities

To fetch data in regions and municipalities, type

import covid19sweden as SWE

regions = SWE.fohm.regions()
municipalities = SWE.fohm.municipalities()

Only parameter for both functions is optional filename, that saves the data to csv output file.

SWE.fohm.municipalities(filename = "output.csv")


With a single call all the data handlers are called and their outputs as well as common input (xlsx file) is stored. Commit is stored directory commit_YYMMDD (in cwd) unless explicitly specified.

import covid19sweden as SWE
SWE.commit() # store all files

Explicit specification of directory is done with


Function will try to create the folder. It fails on existing files of the same name. Overwriting must be enabled

SWE.commit("/var/latest_data", overwrite = True)


  • add fohm to commit


Developed by Martin Benes.

Join on GitHub.