Building a Playbyplay Timeline for Toronto Blue Jays Vs Dodgers Matchups

The Toronto Blue Jays and Los Angeles Dodgers have played each other enough times across four decades that any serious timeline needs a system. You can't just dump box scores into a spreadsheet and call it a history. The real work is in how you pull the data, what you include at the play level, and what you do when the records disagree. These two clubs first met in exhibition and interleague play before the modern era, but the timeline really begins in earnest after Toronto joined the American League in 1977. The Dodgers are in the National League, so they only crossed paths regularly once interleague play started in 1997. Before that, meetings were limited to spring training, the 1992 and 1993 World Series, and occasional pre-season events. The 1992 World Series is the anchor point for most people researching this timeline. Toronto beat the Dodgers in six games. The 1993 Series went seven, with Toronto taking it again. Any complete play-by-play history has to start with those series because they are the only postseason meetings between the franchises. The regular season matchups since 1997 add volume, but they don't carry the same weight in terms of narrative importance.

When I started mapping this out, I ran into a problem pretty quickly. The official MLB play-by-play database goes back to 1998 for full granular data, which means Game 1 of the 1992 World Series is not available at the pitch level through the standard API. I spent a few weeks trying to patch around this before I found a workaround. The Retrosheet archives have full play-by-play files for every World Series game back to 1903, and they released their data under a public domain license. I pulled the 1992 and 1993 series files from Retrosheet, converted them into the same schema I was using for post-1998 games, and merged them. The Retrosheet format uses slightly different field names than the MLBAM database, so I wrote a small normalization script that mapped event types, out classifications, and runner advancement columns. It took about three hours to get the pipeline working, but once it was set up, adding any new series is mostly automatic. Here is what a proper play-by-play timeline actually looks like when you build it right. Each game gets its own entry with the date, venue, final score, and winning pitcher. Then each inning gets broken down into individual events. A standard event includes the batter, the pitcher, the result of the plate appearance, and any runner movement. The MLBAM data gives you the Statcast layer on top — exit velocity, launch angle, hop value — but that only goes back to 2008 for most venues and not at all for the old Exhibition Stadium or the original Dodger Stadium configurations before the camera systems were installed. One thing that catches people off guard is how incomplete the early interleague data is. Between 1997 and 2007, the play-by-play records exist but the quality varies. Some games from that era have missing batted ball data or incomplete fielding outcomes. If you are building a timeline and you need consistency across the entire span, you will find yourself filling gaps manually by cross-referencing newspaper game stories and the Baseball Reference play logs. That step is unavoidable if you want accuracy, and it is also the most time-consuming part. I usually budget two to three hours per season for data cleaning on the pre-2008 interleague games.

The regular season matchups since 1997 number in the dozens. These two teams do not play each other every year — the AL East and NL West schedules mean they meet roughly once every other season or in scattered three-game series during divisional alignment years. The most productive periods for data volume are 2015, 2019, 2022, and 2023, when scheduling aligned to give them multiple series. In 2023 alone they played six games against each other, which gives you a solid sample for analyzing how specific pitchers matched up. If you are tracking individual player performances across these timelines, here are a few names that show up repeatedly. Joe Carter had a meaningful series against the Dodgers in 1992, especially in Game 3 where he went 3-for-4 with two RBIs. Steve Avery was the Dodgers' standout starter in that same series, taking two wins. On the Toronto side, Roberto Alomar was the consistent offensive force throughout the early nineties. In the modern era, players like George Springer, Vladimir Guerrero Jr., and Shohei Ohtani appear frequently in the matchup data, but Ohtani only shows up in the timeline after he joined the Dodgers in 2023, so his earlier Toronto years are irrelevant to this specific matchup. There is a common mistake people make when they try to summarize these timelines with win-loss records. The Dodgers lead the all-time regular season series against the Blue Jays, but the margin is not as large as you would expect given Los Angeles's overall franchise success. Toronto has won several memorable series against them, particularly in 2015 when the Blue Jays went 4-2 against LA during the stretch run and the pitching matchups tilted in their favor. The regular season record is useful context, but it does not tell you anything about how these games actually played out at the plate or on the mound.

Get the Full Details

Dodgers vs Toronto Blue Jays Timeline & Recap 2026
Dodgers vs Toronto Blue Jays Timeline & Recap 2026

For anyone trying to build this themselves, the main bottleneck is data ingestion. The MLB API requires authentication and has rate limits. If you pull game after game without batching, you will hit throttling within an hour. I recommend using the Seamheads API or the Lahman database as a supplementary source for historical game logs, and reserving the MLBAM API for Statcast-level detail on games after 2008. The Seamheads data covers everything back to 1871 for major league games, and their play-by-play files for older seasons fill gaps that the official league database leaves open. Another practical consideration is venue changes. The Dodgers moved from the original Dodger Stadium to a renovated version, and Toronto played in Exhibition Stadium until 1989 before moving to the SkyDome. Weather data, altitude adjustments, and park factors all shift depending on which stadium was used in a given game. If your timeline includes park-adjusted statistics, you need to flag every venue change and apply the correct park factor for that specific year. Skipping this step will distort any advanced metrics you try to calculate from the raw play data. The 2015 game at Rogers Centre is worth mentioning because it demonstrates how a single matchup can contain enough data density to reveal patterns. The Blue Jays won that series 3-1, and the play-by-play shows Toronto's starting pitchers held the Dodgers to a .267 weighted on-base average across the four games. The Dodgers relied heavily on Chase Utley and Hanley Ramirez in the middle of the order, and Toronto's bullpen usage pattern — bringing in closer Drew in high-leverage spots earlier than typical — was a deliberate strategy that worked. That kind of detail is what separates a timeline from a simple schedule listing.

If you need the raw data to start building your own version, the easiest entry point is the MLBgamedata GitHub repository, which contains JSON files for every MLB game since 2008. For anything before that, Retrosheet remains the authoritative source. Both are free to use. The Retrosheet files are in plain text format with fixed-width columns, which means you will need a parser if you are not comfortable with that kind of data structure. I use a Python script with the pandas library to handle the conversion, and it runs in under ten minutes for a full season's worth of files. The biggest limitation of any Blue Jays versus Dodgers timeline is the inherent incompleteness of pre-1998 play-by-play data. You can get line scores and basic event counts for earlier games, but you cannot reconstruct full at-bat sequences with pitch-by-pitch detail for anything before the late nineties. Accepting that constraint upfront saves you a lot of frustration. The timeline will always have blind spots in its earliest entries, and no amount of scraping will fix that. What you can do is make the available data as useful as possible by normalizing formats, annotating missing sections, and being transparent about what is reconstructed versus what is verified. The modern era from 2015 onward is where the timeline becomes richest. Statcast tracking, pitch-type classification, and defensive positioning data all exist for these years, which means you can answer questions like how often the Dodgers shifted against left-handed Blue Jays hitters or how effective Toronto's relief pitchers were in late innings during Dodgers series. Those deeper layers require more work to assemble but they are where the analysis becomes genuinely interesting.