Skip to content

Official Schedules

Retrosheet publishes regular season schedule files for every season in Major League Baseball history (1877–present).

Each season's archive (YYYYSKED.zip) contains the game date, doubleheader number, opponent matchups, leagues, day/night flag, venue, postponed status, and makeup date.


Python API Usage

import retrosheetpy as rs

# 1. Fetch 2024 schedule into Polars
sked_df = rs.schedules(2024, backend="polars")
print(sked_df.select(["date", "vis_team", "home_team", "day_night", "postponed"]))

# 2. Fetch multi-year schedules into PyArrow Table
sked_tbl = rs.schedules(range(2020, 2025), backend="arrow")

# 3. Export to Parquet
rs.to_parquet("schedules_2024.parquet", dataset="schedules", years=2024)

CLI Usage

# Download and cache schedule files
retrosheetpy download -s schedules -y 2024

# Export to Parquet
retrosheetpy export -s schedules -y 2024 -f parquet -o schedules_2024.parquet

# Generate BigQuery SQL DDL
retrosheetpy ddl -s schedules --dialect bigquery

# Ingest into DuckDB
retrosheetpy ingest -d duckdb -c baseball.duckdb -s schedules -y 2024

PyArrow Schema (SCHEDULE_SCHEMA)

Column Name Arrow Type SQL (Postgres / BigQuery) Description
date pa.date32() DATE Scheduled game date (YYYY-MM-DD).
game_num pa.int8() SMALLINT / INT64 0 for single game, 1/2 for doubleheaders.
day_of_week pa.string() VARCHAR / STRING Three-letter or full day of week (Mon, Tue, etc.).
vis_team pa.string() VARCHAR / STRING Visiting team three-letter abbreviation (e.g. LAN).
vis_league pa.string() VARCHAR / STRING Visiting team league (AL, NL, AA, etc.).
vis_game_num pa.int16() SMALLINT / INT64 Visiting team's game number in season.
home_team pa.string() VARCHAR / STRING Home team three-letter abbreviation (e.g. SDN).
home_league pa.string() VARCHAR / STRING Home team league (AL, NL, etc.).
home_game_num pa.int16() SMALLINT / INT64 Home team's game number in season.
day_night pa.string() VARCHAR / STRING D for Day game, N for Night game.
park_id pa.string() VARCHAR / STRING Neutral site or special ballpark ID if applicable.
postponed pa.string() VARCHAR / STRING Postponement reason (e.g. Rain, Cold, Strike) or empty.
makeup_date pa.date32() DATE Rescheduled makeup date if postponed.