11 Comments
User's avatar
Anzhe Meng's avatar

Unfortunately, nearly all scrapers or scraping methods on FBref.com aren't working anymore (Mar 15th, 2026). Correct me if I'm wrong.

MartinOnData's avatar

Fbref dropped all its advanced data. And a few weeks before that the scrapers stopped working. So sad.

Anzhe Meng's avatar

May I ask what alternatives do you have now? I personally go for Understat but that’s mostly about xG.

MartinOnData's avatar

I just bought a Wyscout subscription. I do not think there are free alternatives that offer the level of detail of Fbref.

Yohannes's avatar

epl_schedule = fbref.read_schedule() returns the ff error: [12/15/25 09:01:24] ERROR Error while scraping https://fbref.com/en/comps/. Retrying... (attempt _common.py:545

1 of 5).

Traceback (most recent call last):

File "/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py",

line 525, in _download_and_save

response.raise_for_status()

File "/usr/local/lib/python3.12/dist-packages/requests/models.py",

line 1026, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

https://fbref.com/en/comps/

[12/15/25 09:01:30] ERROR Error while scraping https://fbref.com/en/comps/. Retrying... (attempt _common.py:545

2 of 5).

Traceback (most recent call last):

File "/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py",

line 525, in _download_and_save

response.raise_for_status()

File "/usr/local/lib/python3.12/dist-packages/requests/models.py",

line 1026, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

https://fbref.com/en/comps/

[12/15/25 09:01:36] ERROR Error while scraping https://fbref.com/en/comps/. Retrying... (attempt _common.py:545

3 of 5).

Traceback (most recent call last):

File "/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py",

line 525, in _download_and_save

response.raise_for_status()

File "/usr/local/lib/python3.12/dist-packages/requests/models.py",

line 1026, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

https://fbref.com/en/comps/

[12/15/25 09:01:42] ERROR Error while scraping https://fbref.com/en/comps/. Retrying... (attempt _common.py:545

4 of 5).

Traceback (most recent call last):

File "/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py",

line 525, in _download_and_save

response.raise_for_status()

File "/usr/local/lib/python3.12/dist-packages/requests/models.py",

line 1026, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

https://fbref.com/en/comps/

[12/15/25 09:01:48] ERROR Error while scraping https://fbref.com/en/comps/. Retrying... (attempt _common.py:545

5 of 5).

Traceback (most recent call last):

File "/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py",

line 525, in _download_and_save

response.raise_for_status()

File "/usr/local/lib/python3.12/dist-packages/requests/models.py",

line 1026, in raise_for_status

raise HTTPError(http_error_msg, response=self)

requests.exceptions.HTTPError: 403 Client Error: Forbidden for url:

https://fbref.com/en/comps/

---------------------------------------------------------------------------

ConnectionError Traceback (most recent call last)

/tmp/ipython-input-2124964271.py in <cell line: 0>()

----> 1 epl_schedule = fbref.read_schedule()

4 frames

/usr/local/lib/python3.12/dist-packages/soccerdata/_common.py in _download_and_save(self, url, filepath, var)

551 continue

552

--> 553 raise ConnectionError(f"Could not download {url}.")

554

555

ConnectionError: Could not download https://fbref.com/en/comps/.

Anyone with a help?

MartinOnData's avatar

Hi Yohannes, Fbref increased their scraping protection a month ago, so soccerdata does not work since.

MartinOnData's avatar

Nothing I can share at this point. But scraping using Selenium should still work.

Yohannes's avatar

longer deep dives and more python

Diamond Wheeler's avatar

Always want more football concepts. More python a plus too. I enjoyed this a lot still. Thank you for taking the time to write it up.

MartinOnData's avatar

Thank you for taking the time to share your feedback 🙏