skillfed

pybaseball

Retrieve baseball data in Python

pybaseball v2.2.7 290.7K downloads/30d#7,985 on PyPI1,717
Permissive license MIT AGING released

What it is and what it does

Pybaseball is a Python library that automates retrieval of Major League Baseball data from three major public sources: Baseball Reference, Baseball Savant, and FanGraphs. Instead of manually navigating websites or parsing HTML, you call functions to fetch statcast pitch-level data, season-level batting and pitching statistics, team standings, game schedules, and awards data as pandas DataFrames. The library handles web scraping using beautifulsoup4, requests, and lxml under the hood.

The package is designed for baseball analysts, researchers, and enthusiasts who want to work with MLB data programmatically. Data is available at multiple granularities: individual pitches (via statcast), per-player per-season aggregates (via pitching_stats and batting_stats), and custom time ranges. It integrates with pandas and numpy for downstream analysis, and supports matplotlib for visualization. The aging maintenance status means web scraping may occasionally break if target sites change their structure, but the core functionality remains useful for historical and recent data analysis.

Use it for:

  • Retrieve pitch-level statcast data for a date range to analyze pitcher performance metrics like spin rate and release speed.
  • Pull multi-season batting or pitching statistics from FanGraphs for cohort analysis or player comparison studies.
  • Fetch a team's game-by-game schedule and results for a historical season to study win-loss patterns.
  • Query player-specific statcast data using playerid_lookup to build custom performance dashboards.
  • Combine standings data with schedule results to track division races and playoff implications over time.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Scrapes baseball data from Baseball Reference, Baseball Savant, and FanGraphs, returning statcast pitch-level data, batting and pitching statistics, standings, and schedule information as pandas DataFrames.

Yes, with conditions. Install if you need to work with MLB data and can tolerate occasional scraping breakage when target websites change. The low install friction, permissive MIT license, and stable dependency stack make it straightforward to add. However, the aging maintenance status (last release 2023-09-08) means you should verify that the specific data sources you need are still accessible before committing to it for production pipelines. No known security vulnerabilities.

Install

pybaseball on PyPI

pip

pip install pybaseball

uv

uv add pybaseball

poetry

poetry add pybaseball

Installing pybaseball

Before you install

Low install friction with a pure-Python wheel. Maintenance status is aging—last release was 2023-09-08 and last commit 2026-01-04—but the repository remains active and unarchived with 1717 stars. The 11 runtime dependencies (numpy, pandas, beautifulsoup4, requests, lxml, pyarrow, pygithub, scipy, matplotlib, tqdm, attrs) are all stable, widely-used libraries.

License in practice

MIT license is permissive, allowing commercial and private use with minimal restrictions. No licensing barrier to adoption.

Quickstart

pip install pybaseball

from pybaseball import statcast, pitching_stats
data = statcast(start_dt="2019-06-24", end_dt="2019-06-25")
stats = pitching_stats(2014, 2016)

Verify before relying

  • Whether scraped data remains current given that Baseball Reference, Savant, and FanGraphs may change their HTML/API structures without notice.
  • Performance characteristics when querying large date ranges or multiple seasons.
  • Whether the package handles rate-limiting or connection failures gracefully.

Package facts

License MIT (permissive)
Python support not specified
Install friction low — pure-Python wheel
Runtime dependencies 11 — numpy, pandas, beautifulsoup4, requests, lxml, pyarrow, pygithub, scipy, matplotlib, tqdm, attrs
Maintenance aging — 1,071 days since the last release
Last repo commit
First released
Downloads 290,653/month — #7,985 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: pybaseball-2.2.7-py3-none-any.whl

Keywords: baseball, sabermetrics, data, statistics, statcast, web, scraping

Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries

Tags

baseball data scrapingstatcast data retrievalbaseball statistics analysismlb data pythonbaseball reference scrapersabermetrics datapitch-level baseball data
web-scrapingsports-analyticsdata-retrieval

More Libraries packages