Skip to main content
Version: 0.1.5

MBB — KenPom (kenpom.com, subscription)

sportsdataverse.mbb — 30 endpoints.

kenpom_ratings​

GET /index.php - Pomeroy season ratings (AdjEM/AdjO/AdjD/AdjT plus SOS, one row per team). Port of hoopR kp_pomeroy_ratings().

Endpoint URL: GET https://kenpom.com/index.php

Valid URL: https://kenpom.com/index.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year (2025 = the 2024-25 season). Data begins at 2002.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
rkcharacterRk.
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
w_lcharacterW l.
net_rtgcharacter
o_rtgcharacterO rtg.
o_rtg_rkcharacterO rtg rk.
d_rtgcharacter
d_rtg_rkcharacter
adj_tcharacterAdj t.
adj_t_rkcharacterAdj t rk.
luckcharacterLuck.
luck_rkcharacterLuck rk.
strength_of_schedule_net_rtgcharacter
strength_of_schedule_net_rtg_rkcharacter
strength_of_schedule_o_rtgcharacter
strength_of_schedule_o_rtg_rkcharacter
strength_of_schedule_d_rtgcharacter
strength_of_schedule_d_rtg_rkcharacter
ncsos_net_rtgcharacter
ncsos_net_rtg_rkcharacter
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_ratings(year=2025)

Last validated n/a.

kenpom_efficiency​

GET /summary.php - efficiency and tempo summary (adjusted and raw O/D/T, average possession length). Port of hoopR kp_efficiency().

Endpoint URL: GET https://kenpom.com/summary.php

Valid URL: https://kenpom.com/summary.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year. Columns are narrower before 2010.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
off_rating_adjusteddouble
off_rating_adjusted_rkdouble
off_rating_adjusted_rk_rkinteger
off_rating_rawdouble
off_rating_raw_rkinteger
def_rating_adjusteddouble
def_rating_adjusted_rkdouble
def_rating_adjusted_rk_rkinteger
def_rating_rawdouble
def_rating_raw_rkinteger
tempo_adjusteddouble
tempo_adjusted_rkdouble
tempo_rawinteger
tempo_raw_rkdouble
tempo_offinteger
avg_poss_length_offdoubleAvg poss length off.
avg_poss_length_defintegerAvg poss length def.
avg_poss_length_def_rkdoubleAvg poss length def rk.
avg_poss_length_def_rk_rkinteger
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_efficiency(year=2025)

Last validated n/a.

kenpom_four_factors​

GET /stats.php - four-factors rankings (eFG%, TO%, OR%, FTRate on offense and defense). Port of hoopR kp_fourfactors().

Endpoint URL: GET https://kenpom.com/stats.php

Valid URL: https://kenpom.com/stats.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
adj_tempodouble
adj_tempo_rkinteger
offense_adj_oedouble
offense_adj_oe_rkinteger
offense_e_fg_pctdouble
offense_e_fg_pct_rkinteger
offense_to_pctdouble
offense_to_pct_rkinteger
offense_or_pctdouble
offense_or_pct_rkinteger
offense_ft_ratedouble
offense_ft_rate_rkinteger
defense_adj_dedouble
defense_adj_de_rkinteger
defense_e_fg_pctdouble
defense_e_fg_pct_rkinteger
defense_to_pctdouble
defense_to_pct_rkinteger
defense_or_pctdouble
defense_or_pct_rkinteger
defense_ft_ratedouble
defense_ft_rate_rkinteger
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_four_factors(year=2025)

Last validated n/a.

kenpom_point_distribution​

GET /pointdist.php - share of points scored from 2s, 3s and free throws, offense and defense. Port of hoopR kp_pointdist().

Endpoint URL: GET https://kenpom.com/pointdist.php

Valid URL: https://kenpom.com/pointdist.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
offense_ftdouble
offense_ft_rkinteger
offense_2_pt_fgdouble
offense_2_pt_fg_rkinteger
offense_3_pt_fgdouble
offense_3_pt_fg_rkinteger
defense_ftdouble
defense_ft_rkinteger
defense_2_pt_fgdouble
defense_2_pt_fg_rkinteger
defense_3_pt_fgdouble
defense_3_pt_fg_rkinteger
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_point_distribution(year=2025)

Last validated n/a.

kenpom_height​

GET /height.php - team height, effective height, experience, bench minutes and continuity. Port of hoopR kp_height().

Endpoint URL: GET https://kenpom.com/height.php

Valid URL: https://kenpom.com/height.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year. Columns are narrower before 2008.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
avg_hgtcharacterAvg hgt.
avg_hgt_rkcharacterAvg hgt rk.
eff_hgtcharacterEff hgt.
eff_hgt_rkcharacterEff hgt rk.
c_hgtcharacterC hgt.
c_hgt_rkcharacterC hgt rk.
pf_hgtcharacterPf hgt.
pf_hgt_rkcharacterPf hgt rk.
sf_hgtcharacterSf hgt.
sf_hgt_rkcharacterSf hgt rk.
sg_hgtcharacterSg hgt.
sg_hgt_rkcharacterSg hgt rk.
pg_hgtcharacterPg hgt.
pg_hgt_rkcharacterPg hgt rk.
experiencecharacterYears of professional experience.
experience_rkcharacterExperience rk.
benchcharacterBench.
bench_rkcharacterBench rk.
continuitycharacterContinuity.
continuity_rkcharacterContinuity rk.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_height(year=2025)

Last validated n/a.

kenpom_foul_trouble​

GET /foul_trouble.php - team foul-trouble splits (minutes and efficiency with starters in foul trouble). Port of hoopR kp_foul_trouble().

Endpoint URL: GET https://kenpom.com/foul_trouble.php

Valid URL: https://kenpom.com/foul_trouble.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
2_fp_pctdouble
2_fp_pct_rkinteger
adj2_fpdouble
adj2_fp_rkinteger
2_foul_total_timecharacter
2_foul_total_time_rkinteger
2_foul_time_oncharacter
2_foul_time_on_rkinteger
bench_pctdoubleBench percentage (0-1 decimal).
bench_pct_rkintegerBench pct rk.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_foul_trouble(year=2025)

Last validated n/a.

kenpom_team_stats​

GET /teamstats.php - team shooting and style splits; side='o' for offense, 'd' for defense. Port of hoopR kp_teamstats().

Endpoint URL: GET https://kenpom.com/teamstats.php

Valid URL: https://kenpom.com/teamstats.php?y=2025&od=o

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.
odsideYSide of the ball: 'o' (offense, hoopR's default) or 'd' (defense).

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
3_p_pctcharacter
3_p_pct_rkcharacter
2_p_pctcharacter
2_p_pct_rkcharacter
ft_pctcharacterFree throw percentage (0-1).
ft_pct_rkcharacterFt pct rk.
blk_pctcharacterBlocks percentage (0-1 decimal).
blk_pct_rkcharacterBlk pct rk.
stl_pctcharacterSteals percentage (0-1 decimal).
stl_pct_rkcharacterStl pct rk.
nst_pctcharacter
nst_pct_rkcharacter
2_p_distcharacter
2_p_dist_rkcharacter
a_pctcharacterA percentage (0-1 decimal).
a_pct_rkcharacterA pct rk.
3_pa_pctcharacter
3_pa_pct_rkcharacter
adj_oecharacterAdjusted offensive efficiency.
adj_oe_rkcharacterAdj oe rk.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_team_stats(year=2025, side='o')

Last validated n/a.

kenpom_player_stats​

GET /playerstats.php - national player leaderboard for one metric. Port of hoopR kp_playerstats().

Endpoint URL: GET https://kenpom.com/playerstats.php

Valid URL: https://kenpom.com/playerstats.php?y=2025&s=eFG

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year. Data begins at 2004.
smetricYMetric slug as KenPom spells it on the wire - one of ORtg, PctMin, eFG, PctPoss, PctShots, ORPct, DRPct, TORate, ARate, PctBlocks, FTRate, PctStls, TS, FCper40, FDper40, FG2Pct, FG3Pct, FTPct. (hoopR's kp_playerstats() takes the display labels - ORtg, Min, eFG, Poss, Shots, OR, DR, TO, ARate, Blk, FTRate, Stl, TS, FC40, FD40, 2P, 3P, FT - and maps them to these.)
fconfYConference filter (KenPom abbreviation, e.g. 'ACC', 'B10'); omit for all of Division I.
cconf_onlyYConference-games-only toggle: 'c' restricts the leaderboard to conference play.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
rkintegerRk.
playercharacterPlayer name.
teamcharacterTeam-side label or team identifier.
e_fg_pctdoubleE field goals percentage (0-1 decimal).
htcharacterListed height.
wtintegerListed weight (lbs).
yrcharacterYr.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_player_stats(year=2025, metric='eFG')

Last validated n/a.

kenpom_kpoy​

GET /kpoy.php - KenPom Player of the Year standings and the game-MVP table. Port of hoopR kp_kpoy().

Endpoint URL: GET https://kenpom.com/kpoy.php

Valid URL: https://kenpom.com/kpoy.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

kpoy_table

col_nametypedescription
column_0integer
playercharacterPlayer name.
k_poy_ratingdouble

kpoy_table_2

col_nametypedescription
column_0double
playercharacterPlayer name.
game_mvp_sinteger

return_parsed=False — the raw page HTML (str).

Example​

kenpom_kpoy(year=2025)

Last validated n/a.

kenpom_team​

GET /team.php - a team's full season page. Returns EVERY table on it, so one call covers hoopR's kp_team_schedule(), kp_team_players() and kp_team_lineups(), which each fetch this same page separately -- plus kp_team_depth_chart(), recovered under a "depth_chart" key from an embedded script tag rather than a table (KenPom dropped the static depth-chart table; see kp_team_depth_chart()'s R source).

Endpoint URL: GET https://kenpom.com/team.php

Valid URL: https://kenpom.com/team.php?team=Duke&y=2025

API ParameterPythonPatternRequiredNullableDescription
teamteamYKenPom team name, spelled as the site does (e.g. 'Duke', 'Michigan St.').
yyearYSeason as a 4-digit ENDING year. Lineup tables begin at 2011.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

report_table

col_nametypedescription
categorycharacterCategory label.
offensecharacter
defensecharacter
d_i_avgdouble

schedule_table

col_nametypedescription
0character
1integer
2integer
3character
4character
5integer
6character
7character
8character
9character
10character

player_table

col_nametypedescription
column_0double
column_0_rkcharacter
htcharacterListed height.
wtdoubleListed weight (lbs).
yrcharacterYr.
gdoubleGames played.
sdoubleS.
pct_mindouble
o_rtgdoubleO rtg.
pct_possdouble
pct_shotsdouble
e_fg_pctdoubleE field goals percentage (0-1 decimal).
ts_pctdoubleTrue shooting percentage (0-1).
or_pctdoubleOr percentage (0-1 decimal).
dr_pctdoubleDr percentage (0-1 decimal).
a_ratedoubleA rate.
to_ratedoubleTo rate.
blk_pctdoubleBlocks percentage (0-1 decimal).
stl_pctdoubleSteals percentage (0-1 decimal).
fc_40double
fd_40double
ft_ratedoubleFt rate.
ftm_acharacter
pctdoubleWin percentage.
2_pm_acharacter
pct_1double
3_pm_acharacter
pct_2double

depth_chart

col_nametypedescription
player_idintegerUnique player identifier.
pct_pgdouble
pct_sgdouble
pct_sfdouble
pct_pfdouble
pct_cdouble
namecharacterDisplay name.
pct_possdouble
ftaintegerFree throw attempts.
fg2_ainteger
fg3_aintegerThree-point field goal attempts.
heightcharacterPlayer height (string e.g. '6-2' or inches).
weightintegerPlayer weight in pounds.
yearcharacter4-digit year.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_team(team='Duke', year=2025)

Last validated n/a.

kenpom_team_players_expanded​

GET /player-expanded.php - a team's expanded per-player table plus the minutes matrix. Covers hoopR's kp_team_player_stats() and kp_minutes_matrix() in one fetch.

Endpoint URL: GET https://kenpom.com/player-expanded.php

Valid URL: https://kenpom.com/player-expanded.php?team=Duke&y=2025

API ParameterPythonPatternRequiredNullableDescription
teamteamYKenPom team name, spelled as the site does.
yyearYSeason as a 4-digit ENDING year. Starts ('S') are available from 2014.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

player_table

col_nametypedescription
column_0double
column_0_rkcharacter
htcharacterListed height.
wtdoubleListed weight (lbs).
yrcharacterYr.
gdoubleGames played.
pct_mindouble
o_rtgcharacterO rtg.
pct_posscharacter
pct_shotscharacter
e_fg_pctcharacterE field goals percentage (0-1 decimal).
ts_pctcharacterTrue shooting percentage (0-1).
or_pctdoubleOr percentage (0-1 decimal).
dr_pctcharacterDr percentage (0-1 decimal).
a_ratecharacterA rate.
to_ratedoubleTo rate.
blk_pctcharacterBlocks percentage (0-1 decimal).
stl_pctcharacterSteals percentage (0-1 decimal).
fc_40double
fd_40character
ft_ratecharacterFt rate.
ftm_acharacter
pctcharacterWin percentage.
2_pm_acharacter
pct_1double
3_pm_acharacter
pct_2character

player_table_2

col_nametypedescription
column_0double
column_0_rkcharacter
htcharacterListed height.
wtdoubleListed weight (lbs).
yrcharacterYr.
gdoubleGames played.
pct_mincharacter
o_rtgcharacterO rtg.
pct_posscharacter
pct_shotscharacter
e_fg_pctcharacterE field goals percentage (0-1 decimal).
ts_pctcharacterTrue shooting percentage (0-1).
or_pctdoubleOr percentage (0-1 decimal).
dr_pctcharacterDr percentage (0-1 decimal).
a_ratecharacterA rate.
to_ratedoubleTo rate.
blk_pctcharacterBlocks percentage (0-1 decimal).
stl_pctcharacterSteals percentage (0-1 decimal).
fc_40double
fd_40character
ft_ratecharacterFt rate.
ftm_acharacter
pctcharacterWin percentage.
2_pm_acharacter
pct_1character
3_pm_acharacter
pct_2character

minutes_table

col_nametypedescription
column_0character
column_0_rkinteger
column_0_rk_rkcharacter
column_0_rk_rk_rkcharacter
caleb_fosterinteger
darren_harrisdouble
isaiah_evansdouble
mason_gillisinteger
sion_jamesinteger
tyrese_proctorinteger
kon_knueppelinteger
cooper_flagginteger
maliq_browninteger
patrick_ngongbadouble
khaman_maluachinteger
starting_lineup_numberinteger

return_parsed=False — the raw page HTML (str).

Example​

kenpom_team_players_expanded(team='Duke', year=2025)

Last validated n/a.

kenpom_game_plan​

GET /gameplan.php - a team's game-plan page (per-game four factors and personnel splits). Port of hoopR kp_gameplan().

Endpoint URL: GET https://kenpom.com/gameplan.php

Valid URL: https://kenpom.com/gameplan.php?team=Duke&y=2025

API ParameterPythonPatternRequiredNullableDescription
teamteamYKenPom team name, spelled as the site does.
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

schedule_table

col_nametypedescription
datecharacterDate in YYYY-MM-DD format.
opponentintegerOpponent.
opponent_rkcharacterOpponent rk.
resultcharacterResult.
result_rkcharacter
paceintegerPossessions per 48 minutes.
offense_effdouble
offense_eff_1integer
offense_e_fg_pctdouble
offense_to_pctdouble
offense_or_pctdouble
offense_ftrdouble
offense_2_p_pctcharacter
offense_2_p_pct_1double
offense_3_p_pctcharacter
offense_3_p_pct_1double
offense_3_pa_pctdouble
defense_effdouble
defense_eff_1integer
defense_e_fg_pctdouble
defense_to_pctdouble
defense_or_pctdouble
defense_ftrdouble
defense_2_p_pctcharacter
defense_2_p_pct_1double
defense_3_p_pctcharacter
defense_3_p_pct_1double
defense_3_pa_pctdouble

table_1

col_nametypedescription
column_0character
pct_points_cdouble
pct_points_pfdouble
pct_points_sfdouble
pct_points_sgdouble
pct_points_pgdouble

table_2

col_nametypedescription
column_0character
pct_off_rebs_cdouble
pct_off_rebs_pfdouble
pct_off_rebs_sfdouble
pct_off_rebs_sgdouble
pct_off_rebs_pgdouble

table_3

col_nametypedescription
column_0character
pct_def_rebs_cdouble
pct_def_rebs_pfdouble
pct_def_rebs_sfdouble
pct_def_rebs_sgdouble
pct_def_rebs_pgdouble

return_parsed=False — the raw page HTML (str).

Example​

kenpom_game_plan(team='Duke', year=2025)

Last validated n/a.

kenpom_opponent_tracker​

GET /opptracker.php - opponent tracker; side='o' for offense, 'd' for defense. Port of hoopR kp_opptracker().

Endpoint URL: GET https://kenpom.com/opptracker.php

Valid URL: https://kenpom.com/opptracker.php?team=Duke&y=2025&t=o

API ParameterPythonPatternRequiredNullableDescription
teamteamYKenPom team name, spelled as the site does.
yyearYSeason as a 4-digit ENDING year. Columns are narrower before 2010.
tsideYSide of the ball: 'o' (offense) or 'd' (defense).

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

conf_table

col_nametypedescription
datecharacterDate in YYYY-MM-DD format.
teamcharacterTeam-side label or team identifier.
resultcharacterResult.
adj_oedoubleAdjusted offensive efficiency.
adj_oe_1integer
e_fg_pctdoubleE field goals percentage (0-1 decimal).
e_fg_pct_1integer
to_pctdoubleTo percentage (0-1 decimal).
to_pct_1integer
or_pctdoubleOr percentage (0-1 decimal).
or_pct_1integer
ftrdoubleFree-throw rate (offense).
ftr_1integer
2_p_pctdouble
2_p_pct_1integer
3_p_pctdouble
3_p_pct_1integer
ft_pctdoubleFree throw percentage (0-1).
ft_pct_1integer
3_pa_pctdouble
3_pa_pct_1integer
apldouble
apl_1integer
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_opponent_tracker(team='Duke', year=2025, side='o')

Last validated n/a.

kenpom_player_career​

GET /player.php - one player's career page (season-by-season stats and game log). Port of hoopR kp_player_career().

Endpoint URL: GET https://kenpom.com/player.php

Valid URL: https://kenpom.com/player.php?p=51234

API ParameterPythonPatternRequiredNullableDescription
pplayer_idYKenPom player id - the p= value on a player-page URL.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

player_table

col_nametypedescription
column_0character
column_0_rkcharacter
htcharacterListed height.
wtdoubleListed weight (lbs).
yrcharacterYr.
gintegerGames played.
pct_mindouble
o_rtgdoubleO rtg.
pct_possdouble
pct_shotsdouble
e_fg_pctdoubleE field goals percentage (0-1 decimal).
ts_pctdoubleTrue shooting percentage (0-1).
or_pctdoubleOr percentage (0-1 decimal).
dr_pctdoubleDr percentage (0-1 decimal).
a_ratedoubleA rate.
to_ratedoubleTo rate.
blk_pctdoubleBlocks percentage (0-1 decimal).
stl_pctdoubleSteals percentage (0-1 decimal).
fc_40double
fd_40double
ft_ratedoubleFt rate.
ftm_acharacter
pctdoubleWin percentage.
2_pm_acharacter
pct_1double
3_pm_acharacter
pct_2double

schedule_table

col_nametypedescription
column_0double
column_0_rkcharacter
column_0_rk_rkinteger
opponentcharacterOpponent.
resultcharacterResult.
result_rkdouble
sitecharacter
site_rkcharacter
site_rk_rkdouble
stdouble
mpintegerMinutes played.
o_rtgcharacterO rtg.
pct_pscharacter
ptsintegerPoints scored.
2_ptcharacter
3_ptcharacter
ftcharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.
pf_rkdoublePf rk.

schedule_table_3

col_nametypedescription
column_0double
column_0_rkcharacter
column_0_rk_rkinteger
opponentcharacterOpponent.
resultcharacterResult.
result_rkdouble
sitecharacter
site_rkcharacter
site_rk_rkdouble
stcharacter
mpintegerMinutes played.
o_rtgintegerO rtg.
pct_psinteger
ptsintegerPoints scored.
2_ptcharacter
3_ptcharacter
ftcharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.
pf_rkdoublePf rk.

schedule_table_4

col_nametypedescription
column_0double
column_0_rkcharacter
column_0_rk_rkinteger
opponentcharacterOpponent.
resultcharacterResult.
result_rkdouble
sitecharacter
site_rkcharacter
site_rk_rkcharacter
stcharacter
mpintegerMinutes played.
o_rtgintegerO rtg.
pct_psinteger
ptsintegerPoints scored.
2_ptcharacter
3_ptcharacter
ftcharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.
pf_rkdoublePf rk.

schedule_table_5

col_nametypedescription
column_0double
column_0_rkcharacter
column_0_rk_rkinteger
opponentcharacterOpponent.
resultcharacterResult.
result_rkdouble
sitecharacter
site_rkcharacter
site_rk_rkdouble
stcharacter
mpintegerMinutes played.
o_rtgintegerO rtg.
pct_psinteger
ptsintegerPoints scored.
2_ptcharacter
3_ptcharacter
ftcharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.
pf_rkdoublePf rk.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_player_career(player_id=51234)

Last validated n/a.

kenpom_box​

GET /box.php - box-score detail for one game (per-team four factors, player lines, scoring runs). Port of hoopR kp_box().

Endpoint URL: GET https://kenpom.com/box.php

Valid URL: https://kenpom.com/box.php?g=1097&y=2025

API ParameterPythonPatternRequiredNullableDescription
ggame_idYKenPom game id - the g= value on a FanMatch game link.
yyearYSeason (4-digit ENDING year) the game belongs to.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

linescore_table2

col_nametypedescription
column_0character
q1integerQ1.
q2integerQ2.
q3integerQ3.
q4integerQ4.
tintegerT.

table_1

col_nametypedescription
column_0character
column_0_rkinteger
namecharacterDisplay name.
minintegerMinutes played.
o_rtgintegerO rtg.
pct_psinteger
ptsintegerPoints scored.
2_pm_acharacter
3_pm_acharacter
ftm_acharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.

table_2

col_nametypedescription
column_0character
column_0_rkinteger
namecharacterDisplay name.
minintegerMinutes played.
o_rtgintegerO rtg.
pct_psinteger
ptsintegerPoints scored.
2_pm_acharacter
3_pm_acharacter
ftm_acharacter
orintegerOr.
drintegerDr.
aintegerA.
tointegerTo.
blkintegerBlocks.
stlintegerSteals.
pfintegerPersonal fouls.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_box(game_id=1097, year=2025)

Last validated n/a.

kenpom_win_probability​

GET /winprob.php - in-game win-probability table for one game. Port of hoopR kp_winprob().

Endpoint URL: GET https://kenpom.com/winprob.php

Valid URL: https://kenpom.com/winprob.php?g=3577&y=2025

API ParameterPythonPatternRequiredNullableDescription
ggame_idYKenPom game id.
yyearYSeason (4-digit ENDING year) the game belongs to.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

No returns table is published for this endpoint: parser: KenPom draws this page from an embedded script, and parse_kenpom_page reads HTML tables only, so the captured page parses to no frames.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_win_probability(game_id=3577, year=2025)

Last validated n/a.

kenpom_fan_match​

GET /fanmatch.php - the FanMatch slate for one date (predictions, thrill score, results). Port of hoopR kp_fanmatch().

Endpoint URL: GET https://kenpom.com/fanmatch.php

Valid URL: https://kenpom.com/fanmatch.php?d=2025-02-01

API ParameterPythonPatternRequiredNullableDescription
ddateYSlate date as YYYY-MM-DD.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

fanmatch_table

col_nametypedescription
gamecharacterGame.
predictioncharacterPre-game prediction (favorite, score, win %).
timecharacterTime / clock value.
locationcharacterLocation.
thrill_scoredoubleThrill score.
come_backinteger
excite_mentdouble

return_parsed=False — the raw page HTML (str).

Example​

kenpom_fan_match(date='2025-02-01')

Last validated n/a.

kenpom_team_history​

GET /history.php?t= - a program's season-by-season history. Port of hoopR kp_team_history().

Endpoint URL: GET https://kenpom.com/history.php

Valid URL: https://kenpom.com/history.php?t=Duke

API ParameterPythonPatternRequiredNullableDescription
tteamYKenPom team name, spelled as the site does.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

player_table

col_nametypedescription
column_0integer
pre_rkcharacter
coachcharacterCoach.
confcharactercharacter.
w_lcharacterW l.
adj_tdoubleAdj t.
adj_odoubleAdj o.
adj_ddoubleAdj d.
offense_e_fg_pctdouble
offense_to_pctdouble
offense_or_pctdouble
offense_ftrdouble
offense_2_p_pctdouble
offense_3_p_pctdouble
offense_ft_pctdouble
offense_3_pa_pctdouble
offense_a_pctdouble
offense_apldouble
defense_e_fg_pctdouble
defense_to_pctdouble
defense_or_pctdouble
defense_ftrdouble
defense_2_p_pctdouble
defense_3_p_pctdouble
defense_blk_pctdouble
defense_3_pa_pctdouble
defense_a_pctdouble
defense_apldouble
2_fp_pctdouble

return_parsed=False — the raw page HTML (str).

Example​

kenpom_team_history(team='Duke')

Last validated n/a.

kenpom_coach_history​

GET /history.php?c= - a coach's season-by-season history. Port of hoopR kp_coach_history().

Endpoint URL: GET https://kenpom.com/history.php

Valid URL: https://kenpom.com/history.php?c=Jon+Scheyer

API ParameterPythonPatternRequiredNullableDescription
ccoachYCoach name as KenPom spells it (e.g. 'Jon Scheyer').

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

player_table

col_nametypedescription
column_0integer
pre_rkcharacter
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
w_lcharacterW l.
adj_tdoubleAdj t.
adj_odoubleAdj o.
adj_ddoubleAdj d.
offense_e_fg_pctdouble
offense_to_pctdouble
offense_or_pctdouble
offense_ftrdouble
offense_2_p_pctdouble
offense_3_p_pctdouble
offense_ft_pctdouble
offense_3_pa_pctdouble
offense_a_pctdouble
offense_apldouble
defense_e_fg_pctdouble
defense_to_pctdouble
defense_or_pctdouble
defense_ftrdouble
defense_2_p_pctdouble
defense_3_p_pctdouble
defense_blk_pctdouble
defense_3_pa_pctdouble
defense_a_pctdouble
defense_apldouble
2_fp_pctdouble
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_coach_history(coach='Jon Scheyer')

Last validated n/a.

kenpom_program_ratings​

GET /programs.php - program-level ratings across the full KenPom era. Port of hoopR kp_program_ratings().

Endpoint URL: GET https://kenpom.com/programs.php

Valid URL: https://kenpom.com/programs.php

API ParameterPythonPatternRequiredNullableDescription

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
column_0integer
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
rtgdoubleRtg.
kenpom_bestinteger
kenpom_best_1integer
kenpom_worstinteger
kenpom_worst_1integer
kenpom_medianinteger
kenpom_top_10integer
kenpom_top_25integer
kenpom_top_50integer
ncaa_tourney_chinteger
ncaa_tourney_f4integer
ncaa_tourney_s16integer
ncaa_tourney_r1integer
chgintegerChg.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_program_ratings()

Last validated n/a.

kenpom_archive_ratings​

GET /archive.php - the Pomeroy ratings as they stood on a past date. Port of hoopR kp_pomeroy_archive_ratings().

Endpoint URL: GET https://kenpom.com/archive.php

Valid URL: https://kenpom.com/archive.php?d=2025-02-01

API ParameterPythonPatternRequiredNullableDescription
ddateYSnapshot date as YYYY-MM-DD.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
rkcharacterRk.
teamcharacterTeam-side label or team identifier.
ratings_on_2025_02_01_confcharacter
ratings_on_2025_02_01_net_rtgcharacter
ratings_on_2025_02_01_o_rtgcharacter
ratings_on_2025_02_01_o_rtg_rkcharacter
ratings_on_2025_02_01_d_rtgcharacter
ratings_on_2025_02_01_d_rtg_rkcharacter
ratings_on_2025_02_01_adj_tcharacter
ratings_on_2025_02_01_adj_t_rkcharacter
final_2025_ratings_rkcharacter
final_2025_ratings_net_rtgcharacter
final_2025_ratings_o_rtgcharacter
final_2025_ratings_o_rtg_rkcharacter
final_2025_ratings_d_rtgcharacter
final_2025_ratings_d_rtg_rkcharacter
final_2025_ratings_adj_tcharacter
final_2025_ratings_adj_t_rkcharacter
rk_chgcharacterRk chg.
em_chgcharacterEm chg.
adj_t_chgcharacterAdj t chg.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_archive_ratings(date='2025-02-01')

Last validated n/a.

kenpom_conference​

GET /conf.php - one conference's season page (standings, efficiency, per-team splits). Port of hoopR kp_conf().

Endpoint URL: GET https://kenpom.com/conf.php

Valid URL: https://kenpom.com/conf.php?c=ACC&y=2025

API ParameterPythonPatternRequiredNullableDescription
cconfYKenPom conference abbreviation (e.g. 'ACC', 'B10', 'SEC').
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

conf_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
overallcharacterOverall pick number.
confcharactercharacter.
net_rtgdouble
net_rtg_1integer
o_rtgdoubleO rtg.
o_rtg_1integer
d_rtgdouble
d_rtg_1integer
adj_tdoubleAdj t.
adj_t_1integer
conf_sosdoubleConf sos.
conf_sos_1integer
conf_sos_1_rkcharacter
conf_sos_1_rk_rkcharacter
conf_sos_1_rk_rk_rkcharacter
ncaa_seedintegerNcaa seed.

conf_table_2

col_nametypedescription
teamcharacterTeam-side label or team identifier.
oedoubleRaw offensive efficiency (points/100 poss).
oe_1integer
e_fg_pctdoubleE field goals percentage (0-1 decimal).
e_fg_pct_1integer
to_pctdoubleTo percentage (0-1 decimal).
to_pct_1integer
or_pctdoubleOr percentage (0-1 decimal).
or_pct_1integer
ftrdoubleFree-throw rate (offense).
ftr_1integer
2_p_pctdouble
2_p_pct_1integer
3_p_pctdouble
3_p_pct_1integer
ft_pctdoubleFree throw percentage (0-1).
ft_pct_1integer
tempodoubleTempo.
tempo_1integer
ncaa_seedintegerNcaa seed.

conf_table_3

col_nametypedescription
teamcharacterTeam-side label or team identifier.
dedoubleRaw defensive efficiency (points allowed/100 poss).
de_1integer
e_fg_pctdoubleE field goals percentage (0-1 decimal).
e_fg_pct_1integer
to_pctdoubleTo percentage (0-1 decimal).
to_pct_1integer
or_pctdoubleOr percentage (0-1 decimal).
or_pct_1integer
ftrdoubleFree-throw rate (offense).
ftr_1integer
2_p_pctdouble
2_p_pct_1integer
3_p_pctdouble
3_p_pct_1integer
blk_pctdoubleBlocks percentage (0-1 decimal).
blk_pct_1integer
stl_pctdoubleSteals percentage (0-1 decimal).
stl_pct_1integer
ncaa_seedintegerNcaa seed.

conf_table_4

col_nametypedescription
rankintegerRank.
playercharacterPlayer name.

conf_table_5

col_nametypedescription
statcharacterStat.
valuedoubleNumeric or string value field.
value_1integer

conf_table_6

col_nametypedescription
statcharacterStat.
stat_rkcharacter
valuecharacterNumeric or string value field.
value_1integer

conf_table_rank

col_nametypedescription
conferenceintegerConference name.
conference_1character
ratingdoubleSimple Rating System (SRS) value.
conference_2double
conference_3character
rating_1double

return_parsed=False — the raw page HTML (str).

Example​

kenpom_conference(conf='ACC', year=2025)

Last validated n/a.

kenpom_conference_stats​

GET /confstats.php - league-wide conference comparison for one season. Port of hoopR kp_confstats().

Endpoint URL: GET https://kenpom.com/confstats.php

Valid URL: https://kenpom.com/confstats.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

confrank_table

col_nametypedescription
confcharactercharacter.
effdoubleEff.
eff_1integer
tempodoubleTempo.
tempo_1integer
e_fg_pctdoubleE field goals percentage (0-1 decimal).
e_fg_pct_1integer
to_pctdoubleTo percentage (0-1 decimal).
to_pct_1integer
or_pctdoubleOr percentage (0-1 decimal).
or_pct_1integer
ftrdoubleFree-throw rate (offense).
ftr_1integer
blk_pctdoubleBlocks percentage (0-1 decimal).
blk_pct_1integer
stl_pctdoubleSteals percentage (0-1 decimal).
stl_pct_1integer
2_p_pctdouble
2_p_pct_1integer
3_p_pctdouble
3_p_pct_1integer
ft_pctdoubleFree throw percentage (0-1).
ft_pct_1integer
3_pa_pctdouble
3_pa_pct_1integer
a_pctdoubleA percentage (0-1 decimal).
a_pct_1integer
home_w_lcharacterHome team's wins losses.
home_w_l_1double
home_w_l_2integer
closecharacterClose.
close_1integer
blowoutscharacterBlowouts.
blowouts_1integer

return_parsed=False — the raw page HTML (str).

Example​

kenpom_conference_stats(year=2025)

Last validated n/a.

kenpom_conference_history​

GET /confhistory.php - one conference's season-by-season history. Port of hoopR kp_confhistory().

Endpoint URL: GET https://kenpom.com/confhistory.php

Valid URL: https://kenpom.com/confhistory.php?c=ACC

API ParameterPythonPatternRequiredNullableDescription
cconfYKenPom conference abbreviation.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

player_table

col_nametypedescription
yeardouble4-digit year.
rankintegerRank.
pacedoublePossessions per 48 minutes.
o_rtgdoubleO rtg.
e_fg_pctdoubleE field goals percentage (0-1 decimal).
to_pctdoubleTo percentage (0-1 decimal).
or_pctdoubleOr percentage (0-1 decimal).
ftrdoubleFree-throw rate (offense).
2_p_pctdouble
3_p_pctdouble
ft_pctdoubleFree throw percentage (0-1).
3_pa_pctdouble
a_pctdoubleA percentage (0-1 decimal).
blk_pctdoubleBlocks percentage (0-1 decimal).
stl_pctdoubleSteals percentage (0-1 decimal).
home_recordcharacterHome win-loss record.
bidsintegerBids.
s16integerS16.
f4integerF4.
chintegerCh.
reg_season_champcharacterReg season champ.
tourney_champcharacterTourney champ.
best_teamcharacterBest team.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_conference_history(conf='ACC')

Last validated n/a.

GET /trends.php - national Division I trends by season (tempo, efficiency, shooting, fouls). Port of hoopR kp_trends().

Endpoint URL: GET https://kenpom.com/trends.php

Valid URL: https://kenpom.com/trends.php

API ParameterPythonPatternRequiredNullableDescription

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
seasonintegerSeason year.
efficiencydoubleEfficiency.
tempodoubleTempo.
e_fg_pctdoubleE field goals percentage (0-1 decimal).
to_pctdoubleTo percentage (0-1 decimal).
or_pctdoubleOr percentage (0-1 decimal).
ft_ratedoubleFt rate.
2_p_pctdouble
3_p_pctdouble
3_pa_pctdouble
ft_pctdoubleFree throw percentage (0-1).
a_pctdoubleA percentage (0-1 decimal).
blk_pctdoubleBlocks percentage (0-1 decimal).
stl_pctdoubleSteals percentage (0-1 decimal).
nst_pctdouble
avg_htdouble
contdouble
home_win_pctdoubleHome win percentage (0-1 decimal).
ppgdoublePoints per game.

return_parsed=False — the raw page HTML (str).

kenpom_trends()

Last validated n/a.

kenpom_home_court_advantage​

GET /hca.php - per-team home-court advantage estimates. Port of hoopR kp_hca().

Endpoint URL: GET https://kenpom.com/hca.php

Valid URL: https://kenpom.com/hca.php

API ParameterPythonPatternRequiredNullableDescription

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
hcacharacterHca.
hca_rkcharacterHca rk.
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_pfcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_pf_rkcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_ptscharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_pts_rkcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_nstcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_nst_rkcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_blkcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_blk_rkcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_elevcharacter
model_inputs_based_on_last_60_home_and_road_conf_games_values_are_per_game_differences_between_home_and_road_margin_elev_rkcharacter
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_home_court_advantage()

Last validated n/a.

kenpom_arenas​

GET /arenas.php - arena reference (name, capacity, average attendance) by team. Port of hoopR kp_arenas().

Endpoint URL: GET https://kenpom.com/arenas.php

Valid URL: https://kenpom.com/arenas.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
column_0integer
teamcharacterTeam-side label or team identifier.
confcharactercharacter.
arenacharacterArena.
alternatedoubleAlternate.
ncaa_seedintegerNcaa seed.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_arenas(year=2025)

Last validated n/a.

kenpom_officials​

GET /officials.php - referee ratings for one season. Port of hoopR kp_officials().

Endpoint URL: GET https://kenpom.com/officials.php

Valid URL: https://kenpom.com/officials.php?y=2025

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
column_0integer
name_faacharacter
ratingdoubleSimple Rating System (SRS) value.
gmsintegerGms.
last_gamecharacterLast game date or score string.
last_game_rkcharacter
last_game_rk_rkcharacter

return_parsed=False — the raw page HTML (str).

Example​

kenpom_officials(year=2025)

Last validated n/a.

kenpom_referee​

GET /referee.php - one referee's game log and splits for a season. Port of hoopR kp_referee().

Endpoint URL: GET https://kenpom.com/referee.php

Valid URL: https://kenpom.com/referee.php?r=714294&y=2025

API ParameterPythonPatternRequiredNullableDescription
rrefereeYKenPom referee id - the r= value on an officials-table link.
yyearYSeason as a 4-digit ENDING year.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
column_0integer
datecharacterDate in YYYY-MM-DD format.
time_etcharacterTime et.
gamecharacterGame.
locationcharacterLocation.
venuecharacterVenue name.
venue_rkcharacter
thrill_scoredoubleThrill score.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_referee(referee=714294, year=2025)

Last validated n/a.

kenpom_game_attributes​

GET /game_attrs.php - season game leaderboards by attribute (thrill score, comebacks, upsets, ...). Port of hoopR kp_game_attrs().

Endpoint URL: GET https://kenpom.com/game_attrs.php

Valid URL: https://kenpom.com/game_attrs.php?y=2025&s=ThrillScore

API ParameterPythonPatternRequiredNullableDescription
yyearYSeason as a 4-digit ENDING year.
sattributeYAttribute slug, e.g. ThrillScore, Comeback, FanMatch, Upsets, Busts, MinutesPlayed, PossessionLength, LeadChanges.

Returns​

return_parsed=True (default) — A dict of polars DataFrames, one per HTML table on the page, keyed by the table's HTML id (a KenPom page often carries several -- team.php alone holds the schedule, roster, depth chart and lineup tables) (one table per documented key below); pass return_as_pandas=True for a dict of pandas.DataFrames (same keys).

ratings_table

col_nametypedescription
column_0integer
datecharacterDate in YYYY-MM-DD format.
gamecharacterGame.
game_rkcharacter
locationcharacterLocation.
location_rkcharacter
valuedoubleNumeric or string value field.

return_parsed=False — the raw page HTML (str).

Example​

kenpom_game_attributes(year=2025, attribute='ThrillScore')

Last validated n/a.