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.

statswalesr is an R package for accessing data from the StatsWales public API v2.
install.packages("statswalesr")library(statswalesr)
# List all published datasets (the full catalogue is fetched automatically)
datasets <- statswales_list_datasets()
# Full-text search
results <- statswales_search("hospital")
results_fuzzy <- statswales_search("transprt", mode = "fuzzy")
# Browse by topic
topics <- statswales_list_topics()
topic_content <- statswales_get_topic(topics$id[1])Dataset IDs are UUIDs returned by
statswales_list_datasets() or
statswales_search().
id <- datasets$id[1]
# Entire dataset, human-readable column names and values (default)
df <- statswales_get_dataset(id)
# A single page of rows, if you don't want everything
df_page <- statswales_get_dataset(id, all_pages = FALSE, page_size = 100)
# Welsh language
df_cy <- statswales_get_dataset(id, lang = "cy-gb")Results are tidied for analysis by default: the API’s internal
*_sort columns are dropped, whitespace padding is stripped,
and numeric columns (including the data values) are converted to
numbers. Pass tidy = FALSE to get the API response
as-is.
The filter argument is a list of named lists. Multiple
list elements use AND logic; multiple values within one
element use OR logic.
# See what dimensions can be filtered
filters <- statswales_get_filters(id)
filters[[1]]$columnName # dimension name (use as the key)
filters[[1]]$values # data frame of reference codes and labels
# Filter to specific values
df_filtered <- statswales_get_dataset(
id,
filter = list(
list(Year = c("2022", "2023")), # AND
list(Area = c("W92000004")) # AND
)
)By default the package returns human-readable column names and
values. Override with the options argument:
df_raw <- statswales_get_dataset(
id,
options = list(
use_raw_column_names = TRUE, # internal fact-table column names
use_reference_values = TRUE, # reference codes instead of labels
data_value_type = "raw" # raw data values
)
)Note: as of July 2026 the StatsWales API ignores
use_raw_column_namesanduse_reference_values— output always uses human-readable column names and values. Onlydata_value_typecurrently changes the output.
filters <- statswales_get_filters(id)
pivot <- statswales_get_pivot(
id,
x = filters[[1]]$columnName,
y = filters[[2]]$columnName
)meta <- statswales_get_metadata(id)
meta$published_revision$metadata # titles and summaries (both languages)
meta$published_revision$designation # "official", "accredited", etc.The API stores query configurations with a deterministic 12-character ID. The same filter inputs always produce the same ID, making results shareable and reproducible.
# Create a stored query and inspect it
fid <- statswales_create_query(id, filter = list(list(Year = c("2023"))))
query_info <- statswales_get_query(id, fid)
query_info$totalLines # total rows matching the query# Download as CSV
path <- statswales_download_dataset(id, format = "csv")
df <- read.csv(path)
# Download filtered data as Excel
statswales_download_dataset(
id,
format = "xlsx",
filter = list(list(Year = c("2022", "2023"))),
path = "my_data.xlsx"
)| Function | Description |
|---|---|
statswales_list_datasets() |
List all published datasets |
statswales_search() |
Full-text search across dataset titles and summaries |
statswales_list_topics() |
List top-level topic categories |
statswales_get_topic() |
Get sub-topics or datasets within a topic |
statswales_get_metadata() |
Full metadata for a dataset |
statswales_get_filters() |
Available filter dimensions and values |
statswales_get_dataset() |
Dataset data as a data frame |
statswales_download_dataset() |
Download dataset as CSV or Excel |
statswales_get_pivot() |
Cross-tabulated pivot view |
statswales_create_query() |
Create a reusable stored query, return filter ID |
statswales_get_query() |
Inspect a stored query configuration |
All functions accept a lang parameter:
"en-gb" (default), "en", "cy-gb",
or "cy".
Hex sticker by Lew Furber.
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.