Skip to main content

IBBA — Segev Stats live-stats API (stats.segevstats.com, Israel play-by-play)

sportsdataverse.basketball.ibba — 6 endpoints.

Note: Access (sdv-internal-refs/ibba/README.md): Segev Stats is the live-stats vendor behind basket.co.il's game pages; its JSON-RPC API is keyless, unofficial and not documented for outside use. The wrappers space requests at least one second apart and read only finished games; payloads are not redistributed as release assets. The host serves JSON as text/html.

Note: Games and ids. game_id is one flat Segev id space across seasons AND competitions: men's Winner League, Winner Cup, women's, Leumit, youth, school and pre-season games share it, so read competition from ibba_segev_game_info (team names do not separate men from women reliably). There is no game list: league game ids come from ibba_games.segev_game_id (2025-26 on), the women's league and Leumit from a scan or Genius Sports org IBBA. Segev team and player ids are stable across seasons (Jaylen Hoard = player 1000 in games 50 and 419), unlike the IBBA season registrations, and are not IBBA ids.

Note: Play-by-play: actions name the player by Segev id and by JERSEY number, score reads away-home, and shot x / y are one half-court frame (x 0-1470 across, basket near 735; y out from the baseline, rim near 112-140); which sideline is x = 0 and the metric scale are unverified. Segev renamed its team game stats between 2025-26 and 2026-27; the parsers unify them. Unfinished games and ids of another game are refused.

ibba_segev_game_info​

Game header: tip-off, competition, both teams and the game state (scores are in the box score).

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getGameInfo&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
start_timecharacterScheduled tip-off in Israel local time as a naive datetime (the feed has no offset; it can differ from the IBBA tip_off by minutes).
competitioncharacterCompetition name ('Winner League', 'Winner Cup', 'Women', 'Leumit', 'Noar', 'School', 'Preparation Games'): the reliable men's / women's discriminator.
home_team_idintegerHome Segev team id (key space: Segev teams, stable across seasons and competitions; Maccabi Tel Aviv = 2). Not an IBBA team-season id.
home_teamcharacterHome team name in English, upper case; some women's teams end in ' (W)', not all.
home_team_localcharacterHome team name in Hebrew (Latin sponsor words kept).
home_short_namecharacterHome team short name in English, upper case.
away_team_idintegerAway Segev team id (key space: Segev teams, stable across seasons and competitions).
away_teamcharacterAway team name in English, upper case.
away_team_localcharacterAway team name in Hebrew (Latin sponsor words kept).
away_short_namecharacterAway team short name in English, upper case.
periodsintegerRegulation periods in the game (4).
finishedlogicalTrue once the game is final (the wrappers read finished games only).
current_periodintegerCurrent period, the last one played for a finished game (5+ means overtime).
clockcharacterGame clock remaining as 'mm:ss' ('00:00' for a finished game).

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_game_info(game_id=50)

Last validated n/a.

ibba_segev_rosters​

Both teams' game rosters with Segev player ids and names in English and Hebrew.

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getGameInfo&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
team_sidecharacterSide of the game: home or away (the feed's homeTeam / awayTeam; an action's parameters.team 1 = home, 2 = away).
team_idintegerSegev team id of the roster's side (stable across seasons).
player_idintegerSegev player id (key space: Segev players, stable across seasons: Jaylen Hoard = 1000 in games 50 and 419); null on team lines and on actions without a player. Not an IBBA player-season id.
jersey_numberintegerJersey number as an integer.
first_namecharacterFirst name in English, upper case.
last_namecharacterLast name in English, upper case.
first_name_localcharacterFirst name in Hebrew.
last_name_localcharacterLast name in Hebrew.
in_rosterintegerRoster flag, 0 or 2 in the samples; meaning unverified.
api_idintegerExternal player id as an integer: null or equal to the Segev player_id (both occur within one game); its source is unverified.

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_rosters(game_id=50)

Last validated n/a.

ibba_segev_player_box​

Per-player box score of a finished game, plus a team-credited line per side.

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getBoxScore&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
team_sidecharacterSide of the game: home or away (the feed's homeTeam / awayTeam; an action's parameters.team 1 = home, 2 = away).
team_idintegerSegev team id of the side (key space: Segev teams, stable across seasons). Not an IBBA team-season id; null on game-level actions.
row_typecharacterplayer (one player's line) or team (actions credited to the team and no player, such as team rebounds and turnovers).
player_idintegerSegev player id (key space: Segev players, stable across seasons: Jaylen Hoard = 1000 in games 50 and 419); null on team lines and on actions without a player. Not an IBBA player-season id.
jersey_numberintegerJersey number as an integer.
starterlogicalTrue when the player was in the starting five.
on_courtlogicalTrue when the player was on court at the final buzzer or the feed's last state.
minutescharacterTime played as 'mm:ss'.
seconds_playedintegerTime played in seconds, derived from minutes.
plus_minusintegerPlus-minus while the player was on court, signed.
fg2mintegerTwo-point field goals made.
fg2_missedintegerTwo-point field goals MISSED (not attempted; attempts = made + missed, verified against the IBBA box score).
fg3mintegerThree-point field goals made.
fg3_missedintegerThree-point field goals MISSED (not attempted).
ftmintegerFree throws made.
ft_missedintegerFree throws MISSED (not attempted).
drebintegerDefensive rebounds.
orebintegerOffensive rebounds.
foulsintegerFouls committed (the feed's f; equals the IBBA fouls).
fouls_drawnintegerFouls drawn (the feed's f_drawn; equals the IBBA fouls_drawn).
stealsintegerSteals made by the player or team.
turnoversintegerTurnovers committed by the player or team.
assistsintegerAssists credited to the player or team.
blocksintegerShots the player or team blocked.
blocks_againstintegerOwn shots that were blocked.
fast_break_ptsintegerFast-break points; for a team total it equals the P of the feed's 'P of N' fast-break stat.
second_chance_ptsintegerSecond-chance points (scored after an offensive rebound).
ptsintegerPoints scored by the player or side (free throws included).
valintegerEfficiency rating (the feed's rate; equals the IBBA VAL).
deflectionsintegerDeflections (count of deflection actions).
recoveriesintegerThe feed's rec count; unverified, probably loose-ball recoveries.
dunksintegerDunks made by the player or side.
offensive_fouls_drawnintegerOffensive fouls drawn (charges taken); inferred.
and_onesintegerAnd-one plays (a made basket plus a foul); inferred.
vpsnumericThe feed's vps ratio with two decimals; its definition is unverified (it matches neither points per shot nor rate per minute).
fg2aintegerTwo-point field goals attempted, derived as made + missed.
fg3aintegerThree-point field goals attempted, derived as made + missed.
ftaintegerFree throws attempted, derived as made + missed.

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_player_box(game_id=50)

Last validated n/a.

ibba_segev_team_box​

Team totals of both sides: final score, timeouts, lead stats, shooting, rebounds and team game stats.

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getBoxScore&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
team_sidecharacterSide of the game: home or away (the feed's homeTeam / awayTeam; an action's parameters.team 1 = home, 2 = away).
team_idintegerSegev team id of the side (key space: Segev teams, stable across seasons). Not an IBBA team-season id; null on game-level actions.
scoreintegerFinal score of the side (homeScore / awayScore).
timeoutsintegerTimeouts the side took (the feed's homeTimeOut / awayTimeOut).
time_leadingcharacterTime the side led as 'mm:ss'.
biggest_leadintegerThe side's biggest lead in points.
times_tiedintegerTimes the score was tied (same value for both sides).
lead_changesintegerLead changes (same value for both sides).
fg2mintegerTwo-point field goals made.
fg2_missedintegerTwo-point field goals MISSED (not attempted; attempts = made + missed, verified against the IBBA box score).
fg3mintegerThree-point field goals made.
fg3_missedintegerThree-point field goals MISSED (not attempted).
ftmintegerFree throws made.
ft_missedintegerFree throws MISSED (not attempted).
drebintegerDefensive rebounds.
orebintegerOffensive rebounds.
foulsintegerFouls committed (the feed's f; equals the IBBA fouls).
fouls_drawnintegerFouls drawn (the feed's f_drawn; equals the IBBA fouls_drawn).
stealsintegerSteals made by the player or team.
turnoversintegerTurnovers committed by the player or team.
assistsintegerAssists credited to the player or team.
blocksintegerShots the player or team blocked.
blocks_againstintegerOwn shots that were blocked.
fast_break_ptsintegerFast-break points; for a team total it equals the P of the feed's 'P of N' fast-break stat.
second_chance_ptsintegerSecond-chance points (scored after an offensive rebound).
ptsintegerPoints scored by the player or side (free throws included).
valintegerEfficiency rating (the feed's rate; equals the IBBA VAL).
deflectionsintegerDeflections (count of deflection actions).
recoveriesintegerThe feed's rec count; unverified, probably loose-ball recoveries.
dunksintegerDunks made by the player or side.
offensive_fouls_drawnintegerOffensive fouls drawn (charges taken); inferred.
and_onesintegerAnd-one plays (a made basket plus a foul); inferred.
vpsnumericThe feed's vps ratio with two decimals; its definition is unverified (it matches neither points per shot nor rate per minute).
fg2aintegerTwo-point field goals attempted, derived as made + missed.
fg3aintegerThree-point field goals attempted, derived as made + missed.
ftaintegerFree throws attempted, derived as made + missed.
pts_from_turnoversintegerPoints scored off opponent turnovers (the feed renamed the key in 2026-27).
pts_in_paintintegerPoints scored in the paint (the feed renamed the key in 2026-27).
starting_pointsintegerPoints scored by the starting five.
bench_pointsintegerPoints scored by the bench.
fast_break_possessionsintegerThe N of the feed's 'P of N' fast-break stat (fast-break possessions or attempts); unverified. Null before 2026-27 where the key differs.
defensive_stopsintegerDefensive stops; the feed adds it in 2026-27, null before.
biggest_scoring_runcharacterBiggest scoring run as the feed prints it ('23-0 (36-6)'); 2026-27 on, null before.

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_team_box(game_id=50)

Last validated n/a.

ibba_segev_period_scores​

Points and team fouls in each period of a finished game.

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getBoxScore&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
periodintegerPeriod number (1-4 regulation, 5+ overtime).
home_pointsintegerPoints the home side scored IN this period (not cumulative).
away_pointsintegerPoints the away side scored IN this period (not cumulative).
home_foulsintegerTeam fouls the home side committed in this period.
away_foulsintegerTeam fouls the away side committed in this period.

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_period_scores(game_id=50)

Last validated n/a.

ibba_segev_pbp​

Play-by-play of a finished game: every action with shot coordinates, running scores and jersey numbers.

Endpoint URL: GET https://stats.segevstats.com/realtimestat_heb/api/

Valid URL: https://stats.segevstats.com/realtimestat_heb/api/?method=getActions&game_id=50

API ParameterPythonPatternRequiredNullableDescription
game_idgame_idYRequired. Segev game id (e.g. 50 = Hapoel Be'er Sheva vs Maccabi Tel Aviv, 2025-26 round 1): segev_game_id in ibba_games.

Returns​

return_parsed=True (default) — a tidy polars.DataFrame with the columns below; pass return_as_pandas=True for a pandas.DataFrame.

col_nametypedescription
game_idintegerSegev game id (key space: one flat sequence across seasons and competitions); equals the IBBA ibba_games segev_game_id from 2025-26. Not an IBBA game id.
action_idintegerAction id (key space: Segev actions; unique and increasing within one game, 500001 ... for game 50).
parent_action_idintegerId of the action this one follows from (rebound -> missed shot, steal -> turnover, assist or block -> shot); null when none.
periodintegerPeriod number (1-4 regulation, 5+ overtime).
clockcharacterGame clock remaining in the period as 'mm:ss', counting down from 10:00.
user_time_utccharacterWall-clock time the scorer logged the action, 'HH:MM:SS', UTC (inferred: game 50 tipped at 18:40 Israel time and its first tick reads 15:42).
typecharacterAction type: game, quarter, clock, substitution, shot, freeThrow, rebound, assist, steal, turnover, block, deflection, foul, foul-drawn or timeout.
subtypecharacterSubtype by type: shot jump-shot / lay-up / dunk; rebound offensive / defensive; turnover bad-pass, ball-handling, travelling, ...; foul personal / technical / unsportsmanlike; start-of-game, end-of-quarter, ...
team_idintegerSegev team id of the acting side (stable across seasons); null on game-level actions.
player_idintegerSegev player id (key space: Segev players, stable across seasons: Jaylen Hoard = 1000 in games 50 and 419); null on team lines and on actions without a player. Not an IBBA player-season id.
team_sidecharacterSide of the game: home or away (the feed's homeTeam / awayTeam; an action's parameters.team 1 = home, 2 = away).
jerseycharacterJersey number (a string, not an id) of the acting player; null when none (team rebound, timeout).
score_awayintegerAway running score after a scoring action (the feed's score reads away-home); null otherwise.
score_homeintegerHome running score after a scoring action; null otherwise.
player_pointsintegerThe scorer's running points after a scoring action; null otherwise.
pointsintegerShot value, 2 or 3; null on other actions.
madecharacterShot or free-throw result: made, missed, or blocked (shots only).
xnumericShot x: across the half court, sideline to sideline, 0-1470, basket near 735; which sideline is 0 and the metric scale are unverified.
ynumericShot y: distance out from the baseline, rim near 112-140, deepest observed 1176; metric scale unverified.
fast_breaklogicalTrue when the shot or free throw came on a fast break.
second_chancelogicalTrue when the attempt followed an offensive rebound.
points_from_turnoverlogicalTrue when the attempt came off an opponent turnover.
free_throw_numberintegerWhich free throw of the set (1, 2, 3).
free_throws_awardedintegerFree throws in the set.
foul_kindcharacterFoul kind, shooting or offensive; absent on some fouls. 'shooting' also appears on technical and offensive-unsportsmanlike fouls, so it does not prove a shooting foul.
fouled_on_jerseycharacterJersey number (string) of the fouled player.
foul_free_throwsintegerFree throws the foul awards (the feed sends a string when non-zero, 0 otherwise).
is_coach_foullogicalTrue on a foul charged to the coach or bench (player_id null); null otherwise.
player_in_jerseycharacterSubstitution: jersey of the player coming in; null on the row that records the player going out.
player_out_jerseycharacterSubstitution: jersey of the player going out; null on the row that records the player coming in.

return_parsed=False — the raw JSON-RPC envelope (dict): result with the method's block plus _request (the method and game id sent).

Example​

ibba_segev_pbp(game_id=50)

Last validated n/a.