Skip to main content

EdgingHockeyScraper

im https://pypi.python.org/pypi/edginghockeyscraper

Install

pip install edginghockeyscraper

Python Hockey Data Scraper

Features

  • Python Hockey Data Scraper with following features:

    • Caching Requests to quickly fetch data
    • Parallel Processing to speed up data fetch from NHL API
  • Get League schedule for year - Usageschedule = edginghockeyscraper.get_league_schedule(2024)

  • Get Game boxscore

    • boxscore = edginghockeyscraper.get_boxscore(2024020345)
  • Get Game playByPlay

    • playByPlay = edginghockeyscraper.get_play_by_play(2024020345)
  • Get Season boxscores

    • boxscoreSeason = edginghockeyscraper.get_boxscore_season(2024)
  • Get Season playByPlay

    • playByPlaySeason = edginghockeyscraper.get_play_by_play_season(2024)

Filter Season data by PreSeason, Regular, PostSeason gametypes

  • e.g.
    • games = edginghockeyscraper.get_league_schedule(2024, {GameType.REG})
    • boxscoreSeason = edginghockeyscraper.get_boxscore_season(2024, {GameType.REG})

Fetch multiple seasons in one pooled call

  • Season-range variants of the fetchers above pull the schedule for each season, then issue a single pooled fetch across every game in the range instead of spinning up a new worker pool per season:
    • boxscoreSeasons = edginghockeyscraper.get_boxscore_seasons(range(2020, 2025))
    • playByPlaySeasons = edginghockeyscraper.get_play_by_play_seasons(range(2020, 2025))
    • shiftsSeasons = edginghockeyscraper.get_shifts_seasons(range(2020, 2025))
    • onIcePbpSeasons = edginghockeyscraper.get_on_ice_players_with_play_by_play_seasons(range(2020, 2025))
    • stintsSeasons = edginghockeyscraper.build_stints_seasons(range(2020, 2025))
  • Prefer these over looping the single-season functions when backfilling a range of seasons (e.g. building an xG training set) -- one pool for the whole range instead of one per season.

Choose a fetch backend

  • All season and multi-season fetchers accept fetch_backend ('process' or 'thread', default 'process') and max_workers:
    • boxscoreSeason = edginghockeyscraper.get_boxscore_season(2024, fetch_backend='thread', max_workers=16)
  • 'process' matches historical behavior (CPU-isolated workers), and suits cases with heavier per-game post-processing (e.g. build_stints_season/build_stints_seasons).
  • 'thread' is often faster for the pure single-endpoint fetchers (get_boxscore, get_play_by_play, get_shifts, get_on_ice_players_with_play_by_play) since each call is a blocking HTTP GET + JSON parse -- I/O-bound work that releases the GIL while waiting on the network, and threads skip the cost of pickling large payloads back across a process boundary. Benchmark on your own connection/CPU before assuming thread is faster -- it depends on how much the NHL API rate-limits concurrent connections, and requests-cache's sqlite backend serializes writes from many threads in one process, which can become the bottleneck at high thread counts.
  • max_workers=None (the default) keeps each backend's own default (process_map -> os.cpu_count(); thread_map -> min(32, os.cpu_count() + 4)).

Utilize requests-cache for fast repeated request calls

  • Caching is on by default; pass disable_cache=True to bypass it.
  • First Call:

    %%time
    edginghockeyscraper.get_boxscore_season(2024)
    

    CPU times: user 583 ms, sys: 318 ms, total: 901 ms Wall time: 1min 18s

  • Second Call:

    • CPU times: user 374 ms, sys: 141 ms, total: 515 ms Wall time: 1.31 s

    A 60x speedup!

Utilize multiprocessing to improve request speed

Benchmark using 2024 Macbook Air Apple M3 16GB

  1. No Parallel getBoxscoreSeason: CPU times: user 15.6 s, sys: 3.55 s, total: 19.1 s Wall time: 8min 49s

  2. Parallel getBoxscoreSeason: CPU times: user 583 ms, sys: 318 ms, total: 901 ms Wall time: 1min 18s

    A ~7x Speedup! (this is an 8-core CPU - you can expect roughly a <# cpu-cores> speedup)

Release files for edginghockeyscraper 0.1.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for edginghockeyscraper 0.1.16
File Size Uploaded
edginghockeyscraper-0.1.16.tar.gz 27.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for edginghockeyscraper 0.1.16
File Interpreter ABI Platform
edginghockeyscraper-0.1.16-py3-none-any.whl Python 3 none any Details

Total release size: 45.3 kB

Release files / edginghockeyscraper-0.1.16.tar.gz

Download URL edginghockeyscraper-0.1.16.tar.gz
Size 27.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5443bae1ab9bd16388572840998ea4cf2d3f3a9786dd4052259d8c9933ae9794
BLAKE2b-256 checksum
How to use checksums
e76da9f41adc4117c4c59791970e07b5453c002f34aa5ca0eee867708641b173
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / edginghockeyscraper-0.1.16-py3-none-any.whl

Download URL edginghockeyscraper-0.1.16-py3-none-any.whl
Size 17.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
be82255436edcb04ee8b59e3b548c48f588e140181c6f903e1ddcc752937148c
BLAKE2b-256 checksum
How to use checksums
b9a2119c103005552772d987a68e029a6fcd7620d60baccfa0018bdfb05b6d4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

This release

0.1.16 This release

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page