toddrob99 / MLB-StatsAPI

Python wrapper for MLB Stats API
GNU General Public License v3.0
533 stars 100 forks source link

Schedule returns irregular results when calling without season parameter #60

Closed DatGuy1 closed 3 years ago

DatGuy1 commented 3 years ago

https://statsapi.mlb.com/api/v1/schedule?sportId=1&teamId=147 returns zero items https://statsapi.mlb.com/api/v1/schedule?sportId=1&teamId=147&season=2021 returns the proper result

Others: NY Mets - Two most recent completed games LA Angels - Most recent completed game SWB RailRiders (Yankees AAA affiliate) - Zero items (sportId = 11)

All return what should be correct responses when adding season=2021 parameter

toddrob99 commented 3 years ago

First, this has nothing to do with the MLB-StatsAPI wrapper that is maintained in this repository. This question is about how the MLB API itself works.

The schedule endpoint appears to be functioning as designed to me.

If you leave off the season parameter and just include sportId (e.g. https://statsapi.mlb.com/api/v1/schedule?sportId=1), the default date range is the current day only. Adding teamId filters the results to only include the given team's games (e.g. https://statsapi.mlb.com/api/v1/schedule?sportId=1&teamId=147).

The season parameter (without any date parameters) requests changes the default date range to the full season (e.g. https://statsapi.mlb.com/api/v1/schedule?sportId=1&season=2021). Then adding the teamId parameter filters the results.

Adding the date parameter or both startDate and endDate will override the default date range. For example, you can get Yankees games in July using https://statsapi.mlb.com/api/v1/schedule?sportId=1&teamId=147&startDate=07/01/2021&endDate=07/31/2021 and you'll get the same results if you include the season parameter. Or you can get today's Yankees games using https://statsapi.mlb.com/api/v1/schedule?sportId=1&teamId=147&date=07/27/2021, again adding the season parameter will have no effect.

If the Mets schedule returns two games, that indicates they have/had a doubleheader that day. The fact that the games being returned were completed is only due to the timing of when you pulled the data. If no games are returned when you include sportId and teamId alone, that means the team doesn't have any games today.

DatGuy1 commented 3 years ago

Ah, that's on me. I thought statsapi made a backend change which affected the schedule() function. Thanks for the in-depth response and apologies for the mistaken issue.