Learn R Programming

brickset: An R Package to Interface with the Brickset API for Getting Data About LEGO sets

Author: Jason Bryer, Ph.D. jason@bryer.org
Website: https://jbryer.github.io/brickset/

This package provides functions to access data about LEGO sets from the Brickset website. The package also contains a data.frame with all LEGO sets (n = 20,420) from 1970 through 2024. This data set was created using the getSets function and it is recommended that you use this data frame to reduce the number of API calls. See the build.R script for how the data frame was created. Information about the variables is included below.

Installation

You can download from CRAN using:

install.packages('brickset')

Or the latest development version using the remotes package:

remotes::install_github('jbryer/brickset')

Brickset API

To use the Brickset API, you must first create a Brickset account and request an API key. The full Brickset API documentation is available here: https://brickset.com/article/52664/api-version-3-documentation

Most of the functions require a Brickset username, password, and API key. You can pass these as parameters, or you can set these options:

options(brickset_key = 'YOUR_API_KEY',
        brickset_username = 'YOUR_USERNAME',
        brickset_password = 'YOUR_PASSWORD')

The checkKey function will verify that your API key is valid:

brickset::checkKey()
#> [1] TRUE

You can check your API usage with the getKeyUsageStats function.

brickset::getKeyUsageStats()
#>              dateStamp count
#> 1 2025-01-21T00:00:00Z    56

The getSets function returns all LEGO sets from the given year.

sets2021 <- brickset::getSets(2021)
head(sets2021, n = 3)
#>   setID number numberVariant                     name year theme   themeGroup
#> 1 31026  10278             1           Police Station 2021 Icons Model making
#> 2 31754  10279             1 Volkswagen T2 Camper Van 2021 Icons Model making
#> 3 31025  10280             1           Flower Bouquet 2021 Icons Model making
#>                       subtheme category released pieces minifigs
#> 1 Modular Buildings Collection   Normal     TRUE   2923        5
#> 2                     Vehicles   Normal     TRUE   2207       NA
#> 3         Botanical Collection   Normal     TRUE    756       NA
#>                         bricksetURL rating reviewCount packagingType
#> 1 https://brickset.com/sets/10278-1    4.3           4           Box
#> 2 https://brickset.com/sets/10279-1    4.0           0           Box
#> 3 https://brickset.com/sets/10280-1    4.1           3           Box
#>     availability agerange_min
#> 1 LEGO exclusive           18
#> 2 LEGO exclusive           18
#> 3         Retail           18
#>                                         thumbnailURL
#> 1 https://images.brickset.com/sets/small/10278-1.jpg
#> 2 https://images.brickset.com/sets/small/10279-1.jpg
#> 3 https://images.brickset.com/sets/small/10280-1.jpg
#>                                              imageURL US_retailPrice
#> 1 https://images.brickset.com/sets/images/10278-1.jpg         199.99
#> 2 https://images.brickset.com/sets/images/10279-1.jpg         179.99
#> 3 https://images.brickset.com/sets/images/10280-1.jpg          59.99
#>   US_dateFirstAvailable US_dateLastAvailable UK_retailPrice
#> 1  2021-01-02T00:00:00Z 2024-02-05T00:00:00Z         169.99
#> 2  2021-08-02T00:00:00Z 2022-11-12T00:00:00Z         139.99
#> 3  2021-01-02T00:00:00Z                 <NA>          54.99
#>   UK_dateFirstAvailable UK_dateLastAvailable CA_retailPrice
#> 1  2021-01-01T00:00:00Z 2024-01-12T00:00:00Z         269.99
#> 2  2021-08-01T00:00:00Z 2022-11-29T00:00:00Z         249.99
#> 3  2021-01-01T00:00:00Z                 <NA>          79.99
#>   CA_dateFirstAvailable CA_dateLastAvailable DE_retailPrice
#> 1  2021-01-02T00:00:00Z 2024-02-05T00:00:00Z         199.99
#> 2  2021-08-03T00:00:00Z 2022-11-12T00:00:00Z         159.99
#> 3  2021-01-02T00:00:00Z                 <NA>          59.99
#>   DE_dateFirstAvailable DE_dateLastAvailable height width depth weight
#> 1  2021-01-02T00:00:00Z 2024-02-19T00:00:00Z   47.6  57.7  11.8  4.012
#> 2  2021-08-02T00:00:00Z 2022-11-30T00:00:00Z   37.4  57.8  11.2  2.945
#> 3  2021-01-02T00:00:00Z                 <NA>   38.2  26.2   7.1  0.760

The getReviews function will return all reviews for a given set.

reviews29830 <- brickset::getReviews(29830)
names(reviews29830)
#>  [1] "author"             "datePosted"         "title"             
#>  [4] "review"             "HTML"               "overall"           
#>  [7] "parts"              "buildingExperience" "playability"       
#> [10] "valueForMoney"

The getThemes and getSubthemes returns information about LEGO themes.

getThemes() |> head(n = 3)
#>             theme setCount subthemeCount yearFrom yearTo
#> 1       4 Juniors       24             5     2003   2004
#> 2 Action Wheelers        9             0     2000   2001
#> 3 Advanced models       35            12     2000   2012
getSubthemes('Toy Story')
#>       theme          subtheme setCount yearFrom yearTo
#> 1 Toy Story Buildable Figures        2     2010   2010
#> 2 Toy Story     Original Film        2     2010   2010
#> 3 Toy Story       Toy Story 2        3     2010   2010
#> 4 Toy Story       Toy Story 3        8     2010   2010
getYears('Toy Story')
#>       theme year setCount
#> 1 Toy Story 2010       15

The getInstructions will return a table with the URLs to the building instructions.

instructions <- getInstructions(setID = 29830)
instructions
#>                                                                       URL
#> 1 https://www.lego.com/cdn/product-assets/product.bi.core.pdf/6313846.pdf
#> 2 https://www.lego.com/cdn/product-assets/product.bi.core.pdf/6313848.pdf
#> 3 https://www.lego.com/cdn/product-assets/product.bi.core.pdf/6313849.pdf
#> 4 https://www.lego.com/cdn/product-assets/product.bi.core.pdf/6313850.pdf
#>                             description
#> 1 BI 3103, 112+4/65+200G, 10270 V29 1/2
#> 2   BI 3103, 96+4/65+200G,10270 V29 2/2
#> 3   BI 3103, 112+4/65+200G, V39/142 1/2
#> 4    BI 3103, 96+4/65+200G, V39/142 2/2

legosets Dataset

The legosets data frame contains all LEGO sets (n = 20,420) from 1970 through 2024.

data("legosets", package = "brickset")
ggplot(legosets, aes(x = year)) + geom_bar() +
    ggtitle('Number of LEGO sets by year') +
    xlab('Year') + ylab('Number of LEGO Sets')
ggplot(legosets, aes(x = pieces, y = US_retailPrice)) + 
    geom_point() +
    ggtitle('Cost of LEGO sets by number of pieces') +
    xlab('Number of LEGO pieces') + ylab('US Retail Price (dollars)')

The variables in the legosets data frame are:

TypeUnique_Values
setIDinteger20420
numbercharacter18958
numberVariantinteger25
namecharacter17057
yearinteger55
themecharacter163
themeGroupcharacter17
subthemecharacter1000
categorycharacter7
releasedlogical2
piecesinteger1543
minifigsinteger34
bricksetURLcharacter20420
ratingnumeric29
reviewCountinteger64
packagingTypecharacter19
availabilitycharacter11
agerange_mininteger18
thumbnailURLcharacter19365
imageURLcharacter19365
US_retailPricenumeric173
US_dateFirstAvailableDate1090
US_dateLastAvailableDate2324
UK_retailPricenumeric224
UK_dateFirstAvailableDate1019
UK_dateLastAvailableDate2224
CA_retailPricenumeric188
CA_dateFirstAvailableDate851
CA_dateLastAvailableDate2005
DE_retailPricenumeric179
DE_dateFirstAvailableDate607
DE_dateLastAvailableDate1402
heightnumeric264
widthnumeric317
depthnumeric307
weightnumeric1192

Code of Conduct

Please note that the brickset project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Copy Link

Version

Install

install.packages('brickset')

Monthly Downloads

286

Version

2025.0.0

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Jason Bryer

Last Published

February 25th, 2025

Functions in brickset (2025.0.0)

getYears

Get a list of years for a given theme, with the total number of sets in each.
login

Login to the Brickset API.
legosets

Lego sets from 1970 through 2024.
brickset

R package to interface with the Brickset API for getting data about LEGO.
download_reviews

Downloads a pre-built reviews data frame.
checkKey

Check the Brickset API key.
checkUserHash

Check the Brickset API key.
getSets

Downloads LEGO data from Brickset.
getInstructions

Download list of instructions for given set.
getSubthemes

Returns a table of sub-themes for a given theme with number of sets and years active.
getThemes

Returns a table of themes with number of sets and years active.
getReviews

Downloads reviews for a LEGO set.
getKeyUsageStats

Get information about frequency of API usage for the given API key.
getUserHash

Returns the user hash from Brickset.