Scrape soccer data from Club Elo, ESPN, FBref, Football-Data.co.uk, Sofascore, SoFIFA, Understat and WhoScored.
Find a file
renovate[bot] e2c56eaabc
chore(deps): update release-drafter/release-drafter action to v7.2.0 (#936)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-16 20:48:57 +02:00
.dvc ci: fix GHA pipeline (#915) 2026-01-16 17:15:02 +01:00
.github chore(deps): update release-drafter/release-drafter action to v7.2.0 (#936) 2026-04-16 20:48:57 +02:00
docs Bump version: 1.8.8 → 1.9.0 2026-04-12 12:36:13 +02:00
soccerdata Bump version: 1.8.8 → 1.9.0 2026-04-12 12:36:13 +02:00
tests fix(fbref): use selenium to bypass cloudflare (#928) 2026-04-12 10:25:43 +02:00
.gitignore poetry -> uv + use cached data in CI (#870) 2025-08-23 13:09:28 +02:00
.pre-commit-config.yaml deps: fix renovate (#873) 2025-08-23 13:36:00 +02:00
.readthedocs.yml Update RTD config (#393) 2023-10-03 15:13:27 +02:00
CONTRIBUTING.rst docs(contributing): add dvc instructions 2026-04-12 12:33:31 +02:00
LICENSE.rst Reset git history 2022-02-03 16:08:33 +01:00
Makefile ci: fix GHA pipeline (#915) 2026-01-16 17:15:02 +01:00
pyproject.toml Bump version: 1.8.8 → 1.9.0 2026-04-12 12:36:13 +02:00
README.rst remove(FotMob): remove the FotMob scraper (#919) 2026-02-01 09:35:12 +01:00
requirements.txt chore: drop py3.9; support py3.14; update deps (#933) 2026-04-12 12:18:11 +02:00
uv.lock chore: drop py3.9; support py3.14; update deps (#933) 2026-04-12 12:18:11 +02:00

.. image:: https://raw.githubusercontent.com/probberechts/soccerdata/master/docs/_static/logo2.png
   :align: center
   :alt: SoccerData
   :width: 600px

.. badges-begin

|Downloads| |PyPI| |Python Version| |License| |Read the Docs| |Tests| |Codecov| |pre-commit| |Black|

.. |Downloads| image:: https://static.pepy.tech/badge/soccerdata/month
   :target: https://pepy.tech/project/soccerdata
   :alt: Downloads Per Month
.. |PyPI| image:: https://img.shields.io/pypi/v/soccerdata.svg
   :target: https://pypi.org/project/soccerdata/
   :alt: PyPI
.. |Python Version| image:: https://img.shields.io/pypi/pyversions/soccerdata
   :target: https://pypi.org/project/soccerdata
   :alt: Python Version
.. |License| image:: https://img.shields.io/pypi/l/soccerdata.svg
   :target: https://opensource.org/licenses/Apache-2.0
   :alt: License
.. |Read the Docs| image:: https://img.shields.io/readthedocs/soccerdata/latest.svg?label=Read%20the%20Docs
   :target: https://soccerdata.readthedocs.io/
   :alt: Read the documentation at https://soccerdata.readthedocs.io/
.. |Tests| image:: https://github.com/probberechts/soccerdata/workflows/CI/badge.svg
   :target: https://github.com/probberechts/soccerdata/actions?workflow=CI
   :alt: Tests
.. |Codecov| image:: https://codecov.io/gh/probberechts/soccerdata/branch/master/graph/badge.svg
   :target: https://app.codecov.io/gh/probberechts/soccerdata
   :alt: Codecov
.. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white
   :target: https://github.com/pre-commit/pre-commit
   :alt: pre-commit
.. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
   :target: https://github.com/psf/black
   :alt: Black

.. badges-end

SoccerData is a collection of scrapers to gather soccer data from popular
websites, including `Club Elo`_, `ESPN`_, `FBref`_,
`Football-Data.co.uk`_, `Sofascore`_, `SoFIFA`_, `Understat`_ and `WhoScored`_.
You get Pandas DataFrames with sensible, matching column names and identifiers
across datasets. Data is downloaded when needed and cached locally.

.. code:: python

   import soccerdata as sd

   # Create a scraper class instance for the 2020/21 Premier League
   fbref = sd.FBref('ENG-Premier League', '2021')

   # Fetch data
   games = fbref.read_schedule()
   team_season_stats = fbref.read_team_season_stats(stat_type="passing")
   player_season_stats = fbref.read_player_season_stats(stat_type="standard")

To learn how to install, configure and use SoccerData, see the
`Quickstart guide <https://soccerdata.readthedocs.io/en/latest/intro.html>`__. For documentation on each of the
supported data sources, see the `example notebooks <https://soccerdata.readthedocs.io/en/latest/datasources/>`__
and `API reference <https://soccerdata.readthedocs.io/en/latest/reference/>`__.

.. _Club Elo: https://www.clubelo.com/
.. _ESPN: https://www.espn.com/soccer/
.. _FBref: https://www.fbref.com/en/
.. _FiveThirtyEight: https://fivethirtyeight.com/soccer-predictions/
.. _Football-Data.co.uk: https://www.football-data.co.uk/
.. _Sofascore: https://www.sofascore.com/
.. _SoFIFA: https://sofifa.com/
.. _Understat: https://understat.com/
.. _WhoScored: https://www.whoscored.com/

**Usage Notice:** Please use this web scraping tool responsibly and in compliance with the terms of service of the
websites you intend to scrape. The software is provided as-is, without any warranty or guarantees of any kind. The
developers disclaim any responsibility for misuse, legal consequences, or damages resulting from its use. It is
your responsibility to use the software in accordance with the laws and regulations of your jurisdiction.

**Contribution and Issues:** As SoccerData relies on web scraping, any changes to the
scraped websites will break the package. Hence, do not expect that all code
will work all the time. If you spot any bugs, then please `fork it and start
a pull request <https://github.com/probberechts/soccerdata/blob/master/CONTRIBUTING.rst>`__.