About the record
Data methodology
Coverage layers
Ballrecord separates baseball data by the level of detail actually available. Historical season totals extend to 1871. Retrosheet game records begin in 1898 and include available box scores and play-by-play. Statcast pitch tracking begins in 2015. Modern schedules, live games, standings, and rosters are refreshed from MLB systems.
Older games cannot contain the same measurements as modern games because pitch speed, movement, launch angle, and tracking coordinates were not recorded. Pages present the most detailed source record available for each season rather than inventing equivalent data.
Identity resolution
Players, teams, venues, and games receive internal canonical identifiers. Source identifiers from MLBAM, Baseball-Reference, Retrosheet, Lahman, and Chadwick are retained as crosswalks. Conflicting identifiers stop an import for review instead of silently combining two people.
Freshness and corrections
Live games refresh throughout the day. Final box scores are reconciled after completion, while standings, rosters, and recent Statcast records receive scheduled updates. Historical imports are checkpointed and idempotent, allowing corrected source releases to replace prior snapshots without duplicating games or statistics.
Live scores remain unofficial until a game is final. Missing values are shown as unavailable, not converted to zero, when the source record does not contain the statistic.
Statistic conventions
Baseball innings use outs-based notation: .1 represents one out and .2 represents two outs. Rate statistics are calculated only when their denominator is available. Current leaderboards apply standard playing-time qualification thresholds before ranking players.