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:

  1. My Team
    • Overview
    • Stats (TBD)
    • Schedule (TBD)
    • News
    • Projections (TBD)
    • Ranks (TBD)
  2. League
    • League Home
    • Settings
    • Members
    • Rosters
    • Schedule
    • Message Board
    • Transaction Counter
    • History
    • Draft Recap
    • Email League
    • Recent Activity
  3. Players
    • Add Players
    • Watch List
    • Scoring Leaders
    • Live Draft Trends
    • Points Against
    • Added / Dropped
    • Player News
    • Projections
    • Budget Summary
    • Offers Report
    • Stat Corrections
  4. FantasyCast
  5. Scoreboard
  6. Standings
  7. Opposing Teams
  8. LM Tools
    • League Membership Tools
    • Draft Tools
    • League and Scoring Settings Tools
    • Roster Tools
    • Schedule and Standings Tools
    • Miscellaneous Tools

My Team

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.

Overview

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>

News

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…

League

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 ""

Settings

Draft

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>

Rosters

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

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>

Transactions and Keepers

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

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>

Members

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

Rosters

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>

Schedule

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

Message Board

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

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

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

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>

Players

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>

Scoreboard

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.

Standings

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>