The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Introduction to swelex

library(swelex)

Overview

swelex provides access to the Swedish Code of Statutes (Svensk författningssamling, SFS) via the Riksdag’s open data API. It returns the consolidated, up-to-date text of statutes — not the as-originally-enacted version — matching how Swedish legal practitioners actually use SFS references.

Fetching a statute

Every statute has an SFS number in the format "YYYY:NNN". Use swe_get_doc() to retrieve the full document:

rf <- swe_get_doc("1974:152")
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1974:152.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
rf
#> function (n, df1, df2, ncp) 
#> {
#>     if (missing(ncp)) 
#>         .Call(C_rf, n, df1, df2)
#>     else (rchisq(n, df1, ncp = ncp)/df1)/(rchisq(n, df2)/df2)
#> }
#> <bytecode: 0x5558670f0148>
#> <environment: namespace:stats>

The result includes both metadata and the consolidated text. Note andrad_tom, which shows the most recent amendment reflected in the text.

Searching for statutes

If you don’t already know the SFS number, swe_search() performs a relevance-ranked free-text search:

result <- swe_search(query = "körkort", max_results = 5)
#> Error in `perform_riksdagen_request()` at swelex/R/swe_search.R:46:5:
#> ! Could not reach Riksdagen's API for SFS search.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
result[, c("sfs_nr", "titel", "score")]
#> Error:
#> ! object 'result' not found

You can also filter by date range or issuing department:

recent <- swe_search(
  from_date = "2026-01-01",
  to_date   = "2026-01-31"
)
#> Error in `perform_riksdagen_request()` at swelex/R/swe_search.R:46:5:
#> ! Could not reach Riksdagen's API for SFS search.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
recent[, c("sfs_nr", "titel", "datum")]
#> Error:
#> ! object 'recent' not found
justice_dept <- swe_search(org = "Justitiedepartementet", max_results = 5)
#> Error in `perform_riksdagen_request()` at swelex/R/swe_search.R:46:5:
#> ! Could not reach Riksdagen's API for SFS search.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
justice_dept[, c("sfs_nr", "titel")]
#> Error:
#> ! object 'justice_dept' not found

A search with no matches returns a zero-row tibble rather than an error:

swe_search(query = "xyzzyplugh123nonexistent")
#> Error in `perform_riksdagen_request()` at swelex/R/swe_search.R:46:5:
#> ! Could not reach Riksdagen's API for SFS search.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden

Thin wrappers

If you only need the text or only the metadata, two convenience wrappers avoid handling the full tibble:

swe_get_text("1974:152") |> substr(1, 200)
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1974:152.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
swe_get_metadata("1974:152")
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1974:152.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden

Repealed statutes

Statutes that have been repealed are flagged, along with the repeal date and the repealing SFS number:

swe_get_doc("1975:1385")[, c("sfs_nr", "titel", "is_repealed", "upphavd", "upphavd_av")]
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1975:1385.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden

A convenience wrapper is also available:

swe_is_repealed("1975:1385")
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1975:1385.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden
swe_is_repealed("1974:152")
#> Error in `perform_riksdagen_request()` at swelex/R/swe_get_doc.R:18:3:
#> ! Could not reach Riksdagen's API for SFS 1974:152.
#> ℹ The service may be down. Check <https://storning.riksdagen.se/>.
#> Caused by error in `httr2::req_perform()`:
#> ! Failed to perform HTTP request.
#> Caused by error in `curl::curl_fetch_memory()`:
#> ! Failure when receiving data from the peer [data.riksdagen.se]:
#> Recv failure: Vastapää sulki yhteyden

Known limitations

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.