How I Actually Get Game Times Without Losing My Mind
I spent about three years trying to manually track the Toronto Blue Jays schedule before I realized most people were doing it wrong. The official MLB schedule page exists, but navigating it during spring training when games get rescheduled at 4 PM on a Tuesday is a special kind of pain. What actually works is finding a reliable way to pull game times and dates without clicking through twelve different submenus every time. The core problem with most scheduling tools is that they're built for casual fans who just want to know what's on tonight. The Jays play 81 home games at the Rogers Centre plus plenty of road trips, and the times shift constantly due to weather delays, national TV broadcasts, and DST changes. You need something that handles all of that without updating once per minute or breaking when ESPN flips a game to a different network. Here's what I use now. I pull the data from MLB's own API feed, route it through a simple script that filters for Toronto's matchups, and push it to a personal dashboard. Takes about 20 minutes to set up the first time, and after that it just runs. The whole thing costs roughly 4 cents a month if you're using a cheap VPS or even just running it locally on a Raspberry Pi type setup. Not worth it for maybe two games a year. Totally worth it if you watch the Jays regularly and hate refreshing apps.
The free tier of the MLB API gives you game of the day and a full season schedule with dates and times. It updates about every five to ten minutes during the season, sometimes slower. I wrote a quick Python script using requests and BeautifulSoup to grab the schedule page and parse out the relevant fields. You can find the exact JSON endpoints by opening your browser's developer tools on m.mlb.com/schedule, hitting Network, and filtering for XHR calls. Look for something with "schedule" in the URL and a league filter set to 147 for the Blue Jays. Hit that endpoint directly and you get clean structured data instead of scraping HTML. One thing nobody tells you: the API does not include local broadcast listings in the free tier. If you need to know whether a game is on Bally Sports Ontario or Sportsnet versus a national feed, you're on your own with the free version. I worked around this by cross-referencing a separate sports betting odds site that lists broadcast partners as part of their pregame data. Not ideal, but it filled the gap. There's also a timezone issue that caught me for weeks. The API returns times in Eastern but sometimes marks them without explicit timezone info. During the spring and fall when DST shifts hit Canada and the US at different times, the offset can be wrong for about two weeks. I solved it by hardcoding a manual offset rule for mid-March and early November, then defaulting to the API's returned value for the rest of the year. Check your local time against an actual game broadcast once a month during those windows to confirm.
If you don't want to build anything, there are third-party services like Batting Prospect and various ESPN mirror sites that do this for you. They work fine for casual checking but tend to lag behind the official data by fifteen to forty-five minutes during live games. That matters when you're trying to catch a game that's moved to a delayed national broadcast because of rain in Toronto. The delay means you might tune in and find the visiting team already batting in the top of the first. Another common mistake: people don't account for postponed games until after they show up on TV or their calendar. The API has a game status field that marks TBA, POSTPONED, or CANCELLED, but it's easy to miss if you're only looking at the date and time columns. Set up a filter in whatever tool you're using that highlights anything not marked FINAL or IN PROGRESS. Saves you from driving to the stadium or wasting evening time watching a delayed make-up game. I've also found that most phone apps push notifications for home games only. If you're following road trips, which is basically every other series, you need to either dig into settings or just use a custom script. The app-side solution is usually buried under three menus labeled something like "Team Alerts" then "Away Games" then a toggle you have to manually enable. By the time you figure it out, the next road trip is already over.
Get the Full Details

The practical bottom line: if you're just checking a few dates here and there, a basic web search or the MLB app covers you. If you want reliable, instant access without the friction of navigating fragmented interfaces, building a lightweight personal scheduler from the API is the move. You'll have it running in under an hour, and after that you never have to think about it again.