MFL: Get Endpoint

  collapse = TRUE,
  comment = "#>"

options(dplyr.summarise.inform = FALSE,
        rmarkdown.html_vignette.check_title = FALSE)

eval <- TRUE

tryCatch(expr = {

  unzip('', exdir = ".")

  httptest::.mockPaths(new = "ffscrapr-tests-1.4.7")},
  warning = function(e) eval <<- FALSE,
  error = function(e) eval <<- FALSE)


Creating custom MFL API calls


The MFL API is extensive. If there is something you'd like to access beyond the current scope of ffscrapr, you can use the lower-level "mfl_getendpoint" function to create a GET request and access the data, while still using the authentication and rate-limiting features I've already created.

Here is an example of how you can call one of the endpoints - in this case, let's try searching for SFBX leagues through the leagueSearch endpoint.

We'll start by opening up this page,, which is the "test" page for this particular endpoint. From here, we can see that the only parameter required is "SEARCH".

We need a connection object to pass into the mfl_getendpoint function, although in this example we don't need to give it much since the endpoint doesn't need a leagueID or username/password or APIKEY.

conn <- mfl_connect(season = 2020)


The parameters of the mfl_getendpoint function are conn, endpoint, and any other optional parameters required by the API.

The function will automatically insert the league_id, API key, and/or authentication cookies from the connection object, and will request JSON for you - so you do not need to add any of these parameters.

It is safest to assume that everything is case-sensitive: the endpoint must match the case displayed by MFL ("leagueSearch") and the SEARCH argument name must be provided in upper-case.

sfb_search <- mfl_getendpoint(conn,endpoint = "leagueSearch", SEARCH = "sfbx conference")

str(sfb_search, max.level = 1)

The function returns a list with the query that was sent, the response that was received, and the content that was parsed - this helps you debug the result of the function later, by inspecting the query that was sent and the response that was received.

I like to extract the content with purrr::pluck and then convert it into a tibble and unnest the content from there, but you can use base R subsetting or magrittr::extract2 for the same purpose.

search_results <- sfb_search %>% 
  purrr::pluck("content","leagues","league") %>% 
  tibble::tibble() %>% 


Another Example: Trade Bait

Here's another example, this time with the trade bait endpoint:

fog <- mfl_connect(season = 2019, league_id = 12608)

fog_tradebait <- mfl_getendpoint(fog, "tradeBait", INCLUDE_DRAFT_PICKS = 1) %>% 
  purrr::pluck("content","tradeBaits","tradeBait") %>% 
  tibble::tibble() %>% 
  tidyr::unnest_wider(1) %>% 
  tidyr::separate_rows("willGiveUp",sep = ",") %>% 
    ff_franchises(fog) %>% dplyr::select("franchise_id","franchise_name"),
    by = c("franchise_id")
  ) %>% 
    mfl_players(fog) %>% dplyr::select("player_id","player_name","pos","age","team"),
    by = c("willGiveUp" = "player_id")


unlink(c("ffscrapr-tests-1.4.7",""), recursive = TRUE, force = TRUE)

Try the ffscrapr package in your browser

Any scripts or data that you put into this service are public.

ffscrapr documentation built on Feb. 16, 2023, 10:55 p.m.