Closed jso8910 closed 3 years ago
This data is in the game endpoint. You can retrieve it using something like this: game = statsapi.get("game", {"gamePk": 634039})
.
You will find the current runners on base in the dict at game["liveData"]["linescore"]["offense"]
... if there is a first
key in that dict, there is a runner on first; if there is a second
key, there is a runner on second, and if there is a third
key, there is a runner on third. The value for each of these keys will be a dict containing info about the player on that base. If there is no runner on a given base, the key for that base will be missing.
If you want to know where runners were at different points in the game, you can either retrieve the game data using a timecode from the game_timestamps
endpoint: timestamps = statsapi.get("game_timestamps", {"gamePk": 634039})
, and look at the current runners as described above, or you can use the data in game["liveData"]["plays"]["allPlays"]
. For each play in that list, there will be a runnerIndex
key containing a list of values corresponding to keys in the runners
list. You can iterate through the items in the runners
list to see where each runner started and ended, and how they got there. The batter will have runners[N]["movement"]["originBase"] == None
. Keep in mind a runner can move more than once during a play, for example the runner on first could steal second, then advance to third on a wild pitch, then score on a base hit. So more than one of the items in the runner
list may be the same runner.
In the future keep in mind there is a subreddit about MLB data, and you can get input from others in the community aside from me.
Pretty self explanatory. I want to be able to know if there is a runner on first, second, third, etc.