Get the sportsbook betting lines (spread, over/under, moneyline) for a single college football game – one row per provider.
Arguments
- game_id
(Integer required): ESPN game identifier.
- line_history
(Logical): controls the output shape. One of:
FALSE(default) – the summary output, one row per odds provider, with the columns shown in the Value table below.TRUE– a long frame capturing theopen/close/currentline snapshots, one row per (provider x snapshot x market) (see Details).
Value
A data frame with one row per odds provider (when
line_history = FALSE):
| col_name | types | description |
| game_id | character | ESPN game identifier. |
| provider_id | character | ESPN odds-provider (sportsbook) id. |
| provider_name | character | Odds-provider name (e.g. ESPN BET). |
| provider_priority | integer | ESPN display priority of the odds provider. |
| details | character | ESPN's headline line string (e.g. UGA -54.5). |
| over_under | numeric | Game total (over/under) points line. |
| spread | numeric | Point spread (negative favors the home team). |
| over_odds | numeric | American odds price on the over. |
| under_odds | numeric | American odds price on the under. |
| home_favorite | logical | TRUE if the home team is the favorite. |
| home_underdog | logical | TRUE if the home team is the underdog. |
| away_favorite | logical | TRUE if the away team is the favorite. |
| away_underdog | logical | TRUE if the away team is the underdog. |
| home_spread_odds | numeric | American odds price on the home-team spread. |
| away_spread_odds | numeric | American odds price on the away-team spread. |
| home_money_line | character | Home-team moneyline (American odds). |
| away_money_line | character | Away-team moneyline (American odds). |
| moneyline_winner | logical | TRUE if the moneyline favorite won. |
| spread_winner | logical | TRUE if the spread favorite covered. |
Details
Wraps the ESPN core-v2 endpoint
events/{game_id}/competitions/{game_id}/odds. Returns one row per
odds provider (sportsbook). details is ESPN's headline line string
(e.g. "UGA -54.5"); spread and over_under are the numeric spread
and total. Home/away spread odds and moneylines are pulled from the
nested homeTeamOdds / awayTeamOdds blocks. The over_odds and
under_odds are the American-odds prices on the game total. With
line_history = TRUE the per-provider open / close / current
line snapshots are expanded instead (see Details).
When line_history = TRUE the returned frame is in long format, one row
per (provider x snapshot x market), with columns: game_id,
provider_id, provider_name, snapshot (one of open, close,
current), market (e.g. over, under, total, pointSpread,
spread, moneyLine), side (game, home, or away), american
(the American-odds string), value (the numeric/decimal value), and
display_value.
See also
Other ESPN CFB Functions:
espn_cfb_award(),
espn_cfb_awards(),
espn_cfb_clear_cache(),
espn_cfb_coach(),
espn_cfb_coach_record(),
espn_cfb_coaches(),
espn_cfb_franchise(),
espn_cfb_franchises(),
espn_cfb_futures(),
espn_cfb_game_broadcasts(),
espn_cfb_game_drive_plays(),
espn_cfb_game_drives(),
espn_cfb_game_leaders(),
espn_cfb_game_pbp(),
espn_cfb_game_play(),
espn_cfb_game_player_box(),
espn_cfb_game_player_statistics(),
espn_cfb_game_powerindex(),
espn_cfb_game_predictor(),
espn_cfb_game_probabilities(),
espn_cfb_game_situation(),
espn_cfb_game_status(),
espn_cfb_game_team_leaders(),
espn_cfb_game_team_linescores(),
espn_cfb_game_team_records(),
espn_cfb_game_team_roster(),
espn_cfb_game_team_statistics(),
espn_cfb_game_teams(),
espn_cfb_groups(),
espn_cfb_pbp_v2(),
espn_cfb_player(),
espn_cfb_player_career_stats(),
espn_cfb_player_eventlog(),
espn_cfb_player_gamelog(),
espn_cfb_player_overview(),
espn_cfb_player_seasons(),
espn_cfb_player_splits(),
espn_cfb_player_stats_v3(),
espn_cfb_players(),
espn_cfb_position(),
espn_cfb_positions(),
espn_cfb_powerindex(),
espn_cfb_qbr(),
espn_cfb_rankings(),
espn_cfb_recruits(),
espn_cfb_season_info(),
espn_cfb_season_types(),
espn_cfb_season_weeks(),
espn_cfb_seasons(),
espn_cfb_standings(),
espn_cfb_team(),
espn_cfb_team_ats(),
espn_cfb_team_awards(),
espn_cfb_team_coaches(),
espn_cfb_team_events(),
espn_cfb_team_leaders(),
espn_cfb_team_powerindex(),
espn_cfb_team_ranks(),
espn_cfb_team_record(),
espn_cfb_team_roster(),
espn_cfb_team_schedule(),
espn_cfb_teams(),
espn_cfb_unnest_plays(),
espn_cfb_venue(),
espn_cfb_venues(),
espn_cfb_week_rankings()
Examples
# \donttest{
try(espn_cfb_game_odds(game_id = 401628339))
#> ── Game odds data from ESPN ────────────────────────────────── cfbfastR 2.3.0 ──
#> ℹ Data updated: 2026-06-09 07:55:58 UTC
#> # A tibble: 2 × 19
#> game_id provider_id provider_name provider_priority details over_under spread
#> <chr> <chr> <chr> <int> <chr> <dbl> <dbl>
#> 1 4016283… 58 ESPN BET 0 UGA -5… 68.5 -54.5
#> 2 4016283… 59 ESPN Bet - L… 0 UGA -5… 51.5 -54.5
#> # ℹ 12 more variables: over_odds <dbl>, under_odds <dbl>, home_favorite <lgl>,
#> # home_underdog <lgl>, away_favorite <lgl>, away_underdog <lgl>,
#> # home_spread_odds <dbl>, away_spread_odds <dbl>, home_money_line <chr>,
#> # away_money_line <chr>, moneyline_winner <lgl>, spread_winner <lgl>
try(espn_cfb_game_odds(game_id = 401628339, line_history = TRUE))
#> ── Game odds line history data from ESPN ───────────────────── cfbfastR 2.3.0 ──
#> ℹ Data updated: 2026-06-09 07:55:58 UTC
#> # A tibble: 37 × 9
#> game_id provider_id provider_name snapshot market side american value
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
#> 1 401628339 58 ESPN BET open over game -110 1.91
#> 2 401628339 58 ESPN BET open under game -110 1.91
#> 3 401628339 58 ESPN BET open total game 62.5 1.91
#> 4 401628339 58 ESPN BET open pointSpread home -54.5 1.95
#> 5 401628339 58 ESPN BET open spread home -105 1.95
#> 6 401628339 58 ESPN BET open pointSpread away +54.5 NA
#> 7 401628339 58 ESPN BET open spread away -115 1.87
#> 8 401628339 58 ESPN BET close over game +105 2.05
#> 9 401628339 58 ESPN BET close under game -125 1.8
#> 10 401628339 58 ESPN BET close total game 68.5 NA
#> # ℹ 27 more rows
#> # ℹ 1 more variable: display_value <chr>
# }
