7 Comments
User's avatar
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 🙏