library(fflr)
packageVersion("fflr")
#> [1] '2025.0.1'
ffl_id(leagueId = "42654852")
#> Temporarily set `fflr.leagueId` option to 42654852
#> [1] "42654852"
This vignette will demonstrate the fflr functions used to reach equivalency with the ESPN fantasy football website. The website has eight section headers with various subsections:
The My Team page presents an overview of, well, your fantasy team. From this page, a team manager can set their lineup and see statistics and news on the players on their roster.
There are six subsections on the My Team page.
The team_roster()
function returns all rosters
in a league. The output of this function is organized to replicate the
layout of the table found on the website. Players are listed in order of
their “slot” with name and team information followed by projected and
actual scores and ownership statistics.
my_team <- team_roster(scoringPeriodId = 1)[[1]] # select first roster
my_team[, -(1:3)]
#> # A tibble: 16 × 13
#> abbrev lineupSlot playerId firstName lastName proTeam position injuryStatus
#> <fct> <fct> <int> <chr> <chr> <fct> <fct> <chr>
#> 1 AUS QB 3918298 Josh Allen Buf QB A
#> 2 AUS RB 4430807 Bijan Robinson Atl RB A
#> 3 AUS RB 4047365 Josh Jacobs GB RB A
#> 4 AUS WR 4241389 CeeDee Lamb Dal WR A
#> 5 AUS WR 4374302 Amon-Ra St. Brown Det WR A
#> 6 AUS TE 4430027 Sam LaPorta Det TE A
#> 7 AUS FLEX 4047646 A.J. Brown Phi WR Q
#> 8 AUS D/ST -16023 Steelers D/ST Pit D/ST A
#> 9 AUS K 4362081 Cameron Dicker LAC K A
#> 10 AUS BE 4239993 Tee Higgins Cin WR A
#> 11 AUS BE 16800 Davante Adams LAR WR A
#> 12 AUS BE 4430878 Jaxon Smith-Njigba Sea WR A
#> 13 AUS BE 4685382 Omarion Hampton LAC RB A
#> 14 AUS BE 4241416 Chuba Hubbard Car RB A
#> 15 AUS BE 4047650 DK Metcalf Pit WR A
#> 16 AUS BE 4683062 Xavier Worthy KC WR A
#> # ℹ 5 more variables: projectedScore <dbl>, actualScore <dbl>, percentStarted <dbl>,
#> # percentOwned <dbl>, percentChange <dbl>
The player_outlook()
and player_news()
functions return news on your roster. The first returns all
outlooks by player and week and cannot be refined beyond setting a
limit
of players to return (in order of rank).
player_outlook(limit = 1)
#> # A tibble: 1 × 5
#> seasonId id firstName lastName outlook
#> <int> <int> <chr> <chr> <chr>
#> 1 2025 4362628 Ja'Marr Chase NA
The second fiction takes a single playerId
value and
returns all the recent news on that player, including premium stories in
HTML format.
player_news(playerId = "3139477", parseHTML = FALSE)
#> # A tibble: 3 × 6
#> id published type premium headline body
#> <int> <dttm> <chr> <lgl> <chr> <chr>
#> 1 3139477 2025-08-10 03:47:54 Rotowire FALSE Mahomes completed his only pass atte… The …
#> 2 3139477 2025-08-07 17:19:30 Rotowire FALSE Coach Andy Reid revealed Thursday th… Per …
#> 3 3139477 2025-07-31 15:48:42 Media FALSE Why Patrick Mahomes remains a solid … Fiel…
ESPN fantasy leagues have their own unique settings and structure. This package has been tested for a very narrow subset of those possible settings.
league_info(leagueId = "42654852")
#> # A tibble: 1 × 6
#> id seasonId name isPublic size finalScoringPeriod
#> <int> <int> <chr> <lgl> <int> <int>
#> 1 42654852 2025 FFLR Test League TRUE 4 17
league_name()
#> [1] "FFLR Test League"
league_size()
#> # A tibble: 1 × 2
#> seasonId size
#> <int> <int>
#> 1 2025 4
str(league_status())
#> tibble [1 × 12] (S3: tbl_df/tbl/data.frame)
#> $ year : int 2025
#> $ isActive : logi TRUE
#> $ activatedDate : POSIXct[1:1], format: "2025-08-08 20:26:54"
#> $ scoringPeriodId : int 1
#> $ firstScoringPeriod : int 1
#> $ finalScoringPeriod : int 17
#> $ previousSeasons :List of 1
#> ..$ : int [1:4] 2021 2022 2023 2024
#> $ standingsUpdateDate : POSIXct[1:1], format: "2025-08-08 20:47:32"
#> $ teamsJoined : int 4
#> $ waiverLastExecutionDate: POSIXct[1:1], format: "2025-08-10 07:04:23"
#> $ waiverNextExecutionDate: POSIXct[1:1], format: NA
#> $ waiverProcessStatus :List of 1
#> ..$ :'data.frame': 0 obs. of 1 variable:
#> .. ..$ date: 'POSIXct' num(0)
#> - attr(*, "tzone")= chr ""
draft_settings()
#> # A tibble: 1 × 13
#> seasonId auctionBudget availableDate date isTradingEnabled
#> <int> <chr> <dttm> <dttm> <lgl>
#> 1 2025 NA 2025-08-08 19:45:00 2025-08-08 20:45:00 FALSE
#> # ℹ 8 more variables: keeperCount <int>, keeperCountFuture <int>, keeperOrderType <chr>,
#> # leagueSubType <chr>, orderType <chr>, pickOrder <list>, timePerSelection <int>,
#> # type <chr>
roster_settings()
#> # A tibble: 1 × 8
#> seasonId isBenchUnlimited isUsingUndroppableList lineupLocktimeType lineupSlotCounts
#> <int> <lgl> <lgl> <chr> <list>
#> 1 2025 TRUE TRUE INDIVIDUAL_GAME <df [25 × 2]>
#> # ℹ 3 more variables: moveLimit <int>, positionLimits <list>, rosterLocktimeType <chr>
scoring_settings()
#> # A tibble: 1 × 7
#> seasonId scoringType playerRankType homeTeamBonus playoffHomeTeamBonus
#> <int> <chr> <chr> <int> <int>
#> 1 2025 H2H_POINTS PPR 1 0
#> # ℹ 2 more variables: playoffMatchupTieRule <chr>, scoringItems <list>
acquisition_settings()
#> # A tibble: 1 × 12
#> year acquisitionBudget acquisitionLimit acquisitionType finalPlaceTransactionElig…¹
#> <int> <int> <int> <chr> <int>
#> 1 2025 100 -1 WAIVERS_TRADITIONAL 0
#> # ℹ abbreviated name: ¹finalPlaceTransactionEligible
#> # ℹ 7 more variables: matchupLimitPerScoringPeriod <lgl>, minimumBid <int>,
#> # transactionLockingEnabled <lgl>, waiverHours <int>, waiverOrderReset <lgl>,
#> # waiverProcessDays <list>, waiverProcessHour <int>
schedule_settings()
#> # A tibble: 0 × 13
#> # ℹ 13 variables: seasonId <int>, divisions <list>, matchupPeriodCount <int>,
#> # matchupPeriodLength <int>, matchupPeriods <list>, periodTypeId <int>,
#> # playoffMatchupPeriodLength <int>, playoffMatchupPeriodLengthByRound <named list>,
#> # playoffReseed <lgl>, playoffSeedingRule <chr>, playoffSeedingRuleBy <int>,
#> # playoffTeamCount <int>, variablePlayoffMatchupPeriodLength <lgl>
league_members()
#> # A tibble: 1 × 6
#> memberId displayName firstName lastName isLeagueCreator isLeagueManager
#> <chr> <chr> <chr> <chr> <lgl> <lgl>
#> 1 {22DFE7FF-9DF2-4F3B-9FE7… K5cents Kiernan Nicholls TRUE FALSE
team_roster(scoringPeriodId = 1)
#> $AUS
#> # A tibble: 16 × 16
#> seasonId scoringPeriodId teamId abbrev lineupSlot playerId firstName lastName proTeam
#> <int> <int> <int> <fct> <fct> <int> <chr> <chr> <fct>
#> 1 2025 1 1 AUS QB 3918298 Josh Allen Buf
#> 2 2025 1 1 AUS RB 4430807 Bijan Robinson Atl
#> 3 2025 1 1 AUS RB 4047365 Josh Jacobs GB
#> 4 2025 1 1 AUS WR 4241389 CeeDee Lamb Dal
#> 5 2025 1 1 AUS WR 4374302 Amon-Ra St. Brown Det
#> 6 2025 1 1 AUS TE 4430027 Sam LaPorta Det
#> 7 2025 1 1 AUS FLEX 4047646 A.J. Brown Phi
#> 8 2025 1 1 AUS D/ST -16023 Steelers D/ST Pit
#> 9 2025 1 1 AUS K 4362081 Cameron Dicker LAC
#> 10 2025 1 1 AUS BE 4239993 Tee Higgins Cin
#> 11 2025 1 1 AUS BE 16800 Davante Adams LAR
#> 12 2025 1 1 AUS BE 4430878 Jaxon Smith-Nji… Sea
#> 13 2025 1 1 AUS BE 4685382 Omarion Hampton LAC
#> 14 2025 1 1 AUS BE 4241416 Chuba Hubbard Car
#> 15 2025 1 1 AUS BE 4047650 DK Metcalf Pit
#> 16 2025 1 1 AUS BE 4683062 Xavier Worthy KC
#> # ℹ 7 more variables: position <fct>, injuryStatus <chr>, projectedScore <dbl>,
#> # actualScore <dbl>, percentStarted <dbl>, percentOwned <dbl>, percentChange <dbl>
#>
#> $BOS
#> # A tibble: 16 × 16
#> seasonId scoringPeriodId teamId abbrev lineupSlot playerId firstName lastName proTeam
#> <int> <int> <int> <fct> <fct> <int> <chr> <chr> <fct>
#> 1 2025 1 2 BOS QB 3916387 Lamar Jackson Bal
#> 2 2025 1 2 BOS RB 4429795 Jahmyr Gibbs Det
#> 3 2025 1 2 BOS RB 4242335 Jonathan Taylor Ind
#> 4 2025 1 2 BOS WR 4362628 Ja'Marr Chase Cin
#> 5 2025 1 2 BOS WR 4595348 Malik Nabers NYG
#> 6 2025 1 2 BOS TE 4036133 T.J. Hockenson Min
#> 7 2025 1 2 BOS FLEX 4426502 Drake London Atl
#> 8 2025 1 2 BOS D/ST -16034 Texans D/ST Hou
#> 9 2025 1 2 BOS K 3953687 Brandon Aubrey Dal
#> 10 2025 1 2 BOS BE 4430737 Kyren Williams LAR
#> 11 2025 1 2 BOS BE 4362238 Chase Brown Cin
#> 12 2025 1 2 BOS BE 4379399 James Cook Buf
#> 13 2025 1 2 BOS BE 3915511 Joe Burrow Cin
#> 14 2025 1 2 BOS BE 3054850 Alvin Kamara NO
#> 15 2025 1 2 BOS BE 3915416 DJ Moore Chi
#> 16 2025 1 2 BOS BE 4428331 Rashee Rice KC
#> # ℹ 7 more variables: position <fct>, injuryStatus <chr>, projectedScore <dbl>,
#> # actualScore <dbl>, percentStarted <dbl>, percentOwned <dbl>, percentChange <dbl>
#>
#> $CHI
#> # A tibble: 16 × 16
#> seasonId scoringPeriodId teamId abbrev lineupSlot playerId firstName lastName proTeam
#> <int> <int> <int> <fct> <fct> <int> <chr> <chr> <fct>
#> 1 2025 1 3 CHI QB 4040715 Jalen Hurts Phi
#> 2 2025 1 3 CHI RB 3929630 Saquon Barkley Phi
#> 3 2025 1 3 CHI RB 4429160 De'Von Achane Mia
#> 4 2025 1 3 CHI WR 4426515 Puka Nacua LAR
#> 5 2025 1 3 CHI WR 4258173 Nico Collins Hou
#> 6 2025 1 3 CHI TE 4432665 Brock Bowers LV
#> 7 2025 1 3 CHI FLEX 4361307 Trey McBride Ari
#> 8 2025 1 3 CHI D/ST -16016 Vikings D/ST Min
#> 9 2025 1 3 CHI K 4689936 Jake Bates Det
#> 10 2025 1 3 CHI BE 3116406 Tyreek Hill Mia
#> 11 2025 1 3 CHI BE 3121422 Terry McLaurin Wsh
#> 12 2025 1 3 CHI BE 4569618 Garrett Wilson NYJ
#> 13 2025 1 3 CHI BE 4427366 Breece Hall NYJ
#> 14 2025 1 3 CHI BE 16737 Mike Evans TB
#> 15 2025 1 3 CHI BE 4259545 D'Andre Swift Chi
#> 16 2025 1 3 CHI BE 4429615 Zay Flowers Bal
#> # ℹ 7 more variables: position <fct>, injuryStatus <chr>, projectedScore <dbl>,
#> # actualScore <dbl>, percentStarted <dbl>, percentOwned <dbl>, percentChange <dbl>
#>
#> $DEN
#> # A tibble: 16 × 16
#> seasonId scoringPeriodId teamId abbrev lineupSlot playerId firstName lastName proTeam
#> <int> <int> <int> <fct> <fct> <int> <chr> <chr> <fct>
#> 1 2025 1 4 DEN QB 4426348 Jayden Daniels Wsh
#> 2 2025 1 4 DEN RB 3117251 Christian McCaffrey SF
#> 3 2025 1 4 DEN RB 4890973 Ashton Jeanty LV
#> 4 2025 1 4 DEN WR 4262921 Justin Jefferson Min
#> 5 2025 1 4 DEN WR 4432773 Brian Thomas Jr. Jax
#> 6 2025 1 4 DEN TE 3040151 George Kittle SF
#> 7 2025 1 4 DEN FLEX 3043078 Derrick Henry Bal
#> 8 2025 1 4 DEN D/ST -16007 Broncos D/ST Den
#> 9 2025 1 4 DEN K 3150744 Chase McLaughlin TB
#> 10 2025 1 4 DEN BE 4596448 Bucky Irving TB
#> 11 2025 1 4 DEN BE 4612826 Ladd McConkey LAC
#> 12 2025 1 4 DEN BE 4567048 Kenneth Walker III Sea
#> 13 2025 1 4 DEN BE 3045147 James Conner Ari
#> 14 2025 1 4 DEN BE 4432708 Marvin Harrison … Ari
#> 15 2025 1 4 DEN BE 3116385 Joe Mixon Hou
#> 16 2025 1 4 DEN BE 3128429 Courtland Sutton Den
#> # ℹ 7 more variables: position <fct>, injuryStatus <chr>, projectedScore <dbl>,
#> # actualScore <dbl>, percentStarted <dbl>, percentOwned <dbl>, percentChange <dbl>
tidy_schedule(scoringPeriodId = 1)
#> # A tibble: 68 × 7
#> seasonId matchupPeriodId matchupId teamId abbrev opponent isHome
#> <int> <int> <int> <int> <fct> <fct> <lgl>
#> 1 2025 1 1 1 AUS CHI TRUE
#> 2 2025 1 1 3 CHI AUS FALSE
#> 3 2025 1 2 2 BOS DEN TRUE
#> 4 2025 1 2 4 DEN BOS FALSE
#> 5 2025 2 3 3 CHI DEN TRUE
#> 6 2025 2 3 4 DEN CHI FALSE
#> 7 2025 2 4 1 AUS BOS TRUE
#> 8 2025 2 4 2 BOS AUS FALSE
#> 9 2025 3 5 4 DEN AUS TRUE
#> 10 2025 3 5 1 AUS DEN FALSE
#> # ℹ 58 more rows
league_messages(scoringPeriodId = 1)
#> # A tibble: 3 × 7
#> id type author date content messages viewableBy
#> <chr> <chr> <chr> <dttm> <chr> <list> <list>
#> 1 da32bc8c CHAT_ALL_MEMBERS LM 2025-08-08 20:29:47 NA <NULL> <NULL>
#> 2 47a940be CHAT_ALL_MEMBERS {22DFE7FF-9DF… 2024-08-26 01:04:14 Ready … <NULL> <NULL>
#> 3 5af42ec9 NOTE {22DFE7FF-9DF… 2021-09-13 23:46:07 This [… <NULL> <NULL>
transaction_counter()
#> # A tibble: 4 × 14
#> seasonId scoringPeriodId teamId abbrev waiverRank acquisitionBudgetSpent acquisitions
#> <int> <int> <int> <fct> <int> <int> <int>
#> 1 2025 1 1 AUS 3 0 0
#> 2 2025 1 2 BOS 4 0 0
#> 3 2025 1 3 CHI 1 0 0
#> 4 2025 1 4 DEN 2 0 0
#> # ℹ 7 more variables: drops <int>, misc <int>, moveToActive <int>, moveToIR <int>,
#> # paid <dbl>, teamCharges <dbl>, trades <int>
draft_recap()
#> # A tibble: 64 × 15
#> seasonId autoDraftTypeId bidAmount pickId keeper lineupSlot nominatingTeamId
#> <int> <int> <int> <int> <lgl> <fct> <fct>
#> 1 2025 3 NA 1 FALSE WR NA
#> 2 2025 3 NA 2 FALSE RB NA
#> 3 2025 3 NA 3 FALSE WR NA
#> 4 2025 3 NA 4 FALSE RB NA
#> 5 2025 3 NA 5 FALSE RB NA
#> 6 2025 3 NA 6 FALSE WR NA
#> 7 2025 3 NA 7 FALSE RB NA
#> 8 2025 3 NA 8 FALSE WR NA
#> 9 2025 3 NA 9 FALSE WR NA
#> 10 2025 3 NA 10 FALSE WR NA
#> # ℹ 54 more rows
#> # ℹ 8 more variables: overallPickNumber <int>, playerId <int>, reservedForKeeper <lgl>,
#> # roundId <int>, roundPickNumber <int>, teamId <int>, abbrev <fct>, tradeLocked <lgl>
recent_activity(scoringPeriodId = 1)
#> # A tibble: 64 × 14
#> bidAmount executionType id isActingAsTeamOwner isLeagueManager isPending items
#> <int> <chr> <chr> <lgl> <lgl> <lgl> <lis>
#> 1 0 EXECUTE 8aa81321-d… FALSE FALSE FALSE <df>
#> 2 0 EXECUTE f7729a90-a… FALSE FALSE FALSE <df>
#> 3 0 EXECUTE 24d2d69e-b… FALSE FALSE FALSE <df>
#> 4 0 EXECUTE 5a48f8cb-9… FALSE FALSE FALSE <df>
#> 5 0 EXECUTE b3dfa3b7-2… FALSE FALSE FALSE <df>
#> 6 0 EXECUTE 447bdc2f-2… FALSE FALSE FALSE <df>
#> 7 0 EXECUTE a1f61f34-b… FALSE FALSE FALSE <df>
#> 8 0 EXECUTE a2639fb8-1… FALSE FALSE FALSE <df>
#> 9 0 EXECUTE ecc865c6-8… FALSE FALSE FALSE <df>
#> 10 0 EXECUTE 9f55cb5c-a… FALSE FALSE FALSE <df>
#> # ℹ 54 more rows
#> # ℹ 7 more variables: proposedDate <dttm>, scoringPeriodId <int>,
#> # skipTransactionCounters <lgl>, status <chr>, teamId <int>, type <chr>,
#> # processDate <dttm>
list_players(limit = 10, proTeam = "Mia", status = "ALL")
#> # A tibble: 10 × 17
#> seasonId scoringPeriodId id firstName lastName proTeam defaultPosition
#> <int> <dbl> <int> <chr> <chr> <fct> <fct>
#> 1 2025 1 4429160 De'Von Achane Mia RB
#> 2 2025 1 3116406 Tyreek Hill Mia WR
#> 3 2025 1 4372016 Jaylen Waddle Mia WR
#> 4 2025 1 3124679 Jason Sanders Mia K
#> 5 2025 1 4241479 Tua Tagovailoa Mia QB
#> 6 2025 1 2576925 Darren Waller Mia TE
#> 7 2025 1 -16015 Dolphins D/ST Mia D/ST
#> 8 2025 1 4682745 Jaylen Wright Mia RB
#> 9 2025 1 3929785 Nick Westbrook-Ikhine Mia WR
#> 10 2025 1 4711533 Ollie Gordon II Mia RB
#> # ℹ 10 more variables: injuryStatus <chr>, percentStarted <dbl>, percentOwned <dbl>,
#> # percentChange <dbl>, auctionValueAverage <dbl>, averageDraftPosition <dbl>,
#> # projectedScore <dbl>, lastScore <dbl>, lastSeason <dbl>, currentSeason <dbl>
live_scoring()
#> # A tibble: 4 × 6
#> currentMatchupPeriod matchupId teamId abbrev totalPointsLive totalProjectedPointsLive
#> <int> <int> <int> <fct> <dbl> <dbl>
#> 1 1 1 1 AUS 1 138.
#> 2 1 1 3 CHI 0 139.
#> 3 1 2 2 BOS 1 140.
#> 4 1 2 4 DEN 0 137.
league_standings()
#> # A tibble: 4 × 17
#> seasonId scoringPeriodId teamId abbrev draftDayProjectedRank currentProjectedRank
#> <int> <int> <int> <fct> <int> <int>
#> 1 2025 1 1 AUS 4 4
#> 2 2025 1 2 BOS 2 2
#> 3 2025 1 3 CHI 1 1
#> 4 2025 1 4 DEN 3 3
#> # ℹ 11 more variables: playoffSeed <int>, rankCalculatedFinal <int>, gamesBack <dbl>,
#> # losses <int>, percentage <dbl>, pointsAgainst <dbl>, pointsFor <dbl>,
#> # streakLength <int>, streakType <chr>, ties <int>, wins <int>