An R Client for Fantasy Football League APIs
Helps access various Fantasy Football APIs (currently MFL, Sleeper, Fleaflicker, and ESPN - eventually Yahoo, potentially others) by handling authentication/rate-limiting/caching, forming appropriate calls, and returning tidy dataframes which can be easily connected to other data sources.
Install the stable version of this package from CRAN:
install.packages("ffscrapr")
Install the development version from either r-universe or GitHub:
install.packages("ffscrapr", repos = "https://ffverse.r-universe.dev")
# pak is recommended, see https://github.com/r-lib/pak
pak::pak("ffverse/ffscrapr")
# can also use remotes
remotes::install_github("ffverse/ffscrapr")
The dev version has a separate documentation site here.
All ffscrapr
functions start with a connection object created by
ff_connect()
, which stores connection, authentication, and other
user-defined parameters. This object is used by all other functions to
help return the correct data.
library(ffscrapr)
ssb <- ff_connect(platform = "mfl", league_id = "54040", season = 2020)
# Get a summary of league settings
ff_league(ssb) %>% str()
#> tibble [1 x 17] (S3: tbl_df/tbl/data.frame)
#> $ league_id : chr "54040"
#> $ league_name : chr "The Super Smash Bros Dynasty League"
#> $ season : int 2020
#> $ league_type : chr NA
#> $ franchise_count : num 14
#> $ qb_type : chr "1QB"
#> $ idp : logi FALSE
#> $ scoring_flags : chr "0.5_ppr, TEPrem, PP1D"
#> $ best_ball : logi FALSE
#> $ salary_cap : logi FALSE
#> $ player_copies : num 1
#> $ years_active : chr "2018-2021"
#> $ qb_count : chr "1"
#> $ roster_size : num 33
#> $ league_depth : num 462
#> $ draft_type : chr "email draft"
#> $ draft_player_pool: chr "Both"
# Get rosters
ff_rosters(ssb)
#> # A tibble: 442 x 11
#> franchise_id franchise_name player_id player_name pos team age
#> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
#> 1 0001 Team Pikachu 13189 Engram, Evan TE NYG 27.7
#> 2 0001 Team Pikachu 11680 Landry, Jarvis WR CLE 29.5
#> 3 0001 Team Pikachu 13645 Smith, Tre'Quan WR NOS 26.3
#> 4 0001 Team Pikachu 12110 Brate, Cameron TE TBB 30.9
#> 5 0001 Team Pikachu 13168 Reynolds, Josh WR LAR 27.2
#> # ... with 437 more rows, and 4 more variables: roster_status <chr>,
#> # drafted <chr>, draft_year <chr>, draft_round <chr>
# Get transactions
ff_transactions(ssb)
#> # A tibble: 1,145 x 12
#> timestamp type type_desc franchise_id franchise_name
#> <dttm> <chr> <chr> <chr> <chr>
#> 1 2021-02-12 14:32:39 TRADE traded_away 0008 Team Bowser
#> 2 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser
#> 3 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser
#> 4 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser
#> 5 2021-02-12 14:32:39 TRADE traded_for 0008 Team Bowser
#> # ... with 1,140 more rows, and 7 more variables: player_id <chr>,
#> # player_name <chr>, pos <chr>, team <chr>, bbid_spent <dbl>,
#> # trade_partner <chr>, comments <chr>
Platform-specific guides on getting started with ffscrapr are here:
There are also some more advanced guides for custom API calls in the Articles section, as well as some guides on optimizing ffscrapr’s performance.
The best places to get help on this package are:
- the nflverse discord (for both this package as well as anything R/NFL related)
- opening an issue
Many hands make light work! Here are some ways you can contribute to this project:
-
You can open an issue if you’d like to request specific data or report a bug/error.
-
You can sponsor this project with donations!
-
If you’d like to contribute code, please check out the contribution guidelines.
The R code for this package is released as open source under the MIT license.
The APIs and data accessed by this package belong to their respective owners, and are governed by their terms of use.