Python-Sportyfin 1.0.7-stable: A way to scrape sports streams for use with Jellyfin.

Latest Release: 1.0.7-stable



Stream sports events straight from your Jellyfin server. Sportyfin allows users to scrape for live streamed events and watch straight from Jellyfin. Sportyfin also generates meta-data that is used in Jellyfin to provide a great viewing experience.

Currently, Sportyfin supports NBA, NHL, NFL and Premier League livestreams, but we plan to support other leagues in the future.


To install Sportyfin with your running instance of Jellyfin, follow the steps bellow:

pip install sportyfin --no-binary=sportyfin

To uninstall the program:

pip uninstall sportyfin


We highly recommend running Sportyfin in combination with tmux, or something similar.

Example usage:

python3 -m sportyfin <arguments>

Start the sportyfin server as follows:

# -nba specifies finding streams for the NBA
# -s allows sportyfin to use Selenium to scrape
# -v enables verbose mode
# -o enables selecting output location

python3 -m sportyfin -nba -s -v -o ~/Desktop
# -vv specifies silent mode (no output will be produced)
# -a specifies all leagues supported by sportyfin

python3 -m sportyfin -a -vv

Once you have run the program, make sure to link to the .m3u's in the Jellyfin dashboard:

Dashboard > Live TV > Tuner Devices (+) > Tuner Type (M3U Tuner) > File or URL (enter path)

Additionally, make sure to change the "Refresh Guide" setting under:

Dashboard > Scheduled Tasks > Live TV > Refresh Guide > Task Triggers

Once the path has been defined and the settings have been updated, you can check out your streams under:

Home > Live TV > Channels (at the top)


Find all the documentation here.

Future Improvement

Add server functionality, aka, ability to access streams (m3u files) from HTTP server.


  • Specify file
    Specify file "location" in addition to "destination"

    Jan 14, 2022


    Might be a bit of an edge case/weird setup, and if its not workable -- no worries!

    All of my media is stored on a linux server, however my Jellyfin instance runs on a windows machine (as it has more computing oomf). Ideally, I would like to run Sportyfin on my linux box as a Cron job along with my other self-hosted projects. I have my linux box mounted as a network drive in Windows -- so Jellyfin can access the files on the linux server.

    The issue I run into, is that the xmltv file indicates the images are stored where the script put the files (in linux) - which isn't the same file path in Windows.

    What would be ideal, is if I could specify to the script where the files can be "located" by Jellyfin - which is different than where the script's output/destination is specified.

    e.g. output script files to /media/sportyfin but the created xmltv files say they are actually located at Z:\sportyfin python3 -m sportyfin -a -s -v -o /media/sportyfin -l z:\sportyfin

    Cheers, and thanks for your work on this project!

  • formatedStartDate Error can't start docker container.
    formatedStartDate Error can't start docker container.

    Jan 16, 2022

    [-] 'formatedStartDate'
  • Scrap sport streams
    Scrap sport streams

    Jan 15, 2022


  • Create docker-image.yml for Build & Push Sportyfin docker
    Create docker-image.yml for Build & Push Sportyfin docker

    Jan 16, 2022

    Build & Push Sportyfin docker to

  • Very interesting! How to expand for different  European tournaments?
    Very interesting! How to expand for different European tournaments?

    Jan 14, 2022

    How can we expand to other football tournaments like Champions League, Europa League and Seria A, La Liga, Bundesliga, Ligue 1?

    It seems to me that from the page you get the streams you can also get the other tournaments so it should be pretty easy right?