Skip to main content

injury-report-monitor

Never get blindsided by a late scratch again.

A real-time injury aggregation tool that pulls from multiple public sources, tracks status changes, and tells you which injuries actually matter for tonight's games.

The Problem

Injury news is scattered across dozens of sources. By the time you check ESPN, the official NBA injury report, team Twitter accounts, and beat reporters, the game has already started and your fantasy lineup is locked with a player who was ruled out 20 minutes ago.

The Solution

injury-report-monitor continuously aggregates injury data from:

  • ESPN injury pages (NBA, MLB, Soccer)
  • CBS Sports injury reports
  • Official NBA injury report filings
  • MLB transaction wire (IL placements and activations)
  • Soccer injury reports from public league sources

All sources are combined into a single feed. When a player's status changes -- Questionable to Out, IL to Active, Injured to Available -- you see it immediately with full context about whether their game is today.

Who This Is For

  • Fantasy managers who need lineup-lock alerts
  • Sports bettors who need to know about late scratches before lines adjust
  • Fans who want to know if their favorite player is suiting up tonight
  • Analysts tracking team health trends over a season

Setup

1. API Key for Game Schedules

You need an API key for game schedule context (knowing which games are today so the tool can flag relevant injuries):

export SHIPP_API_KEY="your-api-key-here"

Get one at platform.shipp.ai.

2. Install Dependencies

pip install requests beautifulsoup4

No additional API keys are required. All injury sources are scraped from publicly available pages.

3. (Optional) State Persistence

By default, the monitor stores last-known injury states in a local JSON file (~/.injury_monitor_state.json). This enables change detection between runs. To customize the location:

export INJURY_STATE_PATH="/your/preferred/path/state.json"

Usage

Full Report (All Sports)

from scripts.injury_monitor import InjuryMonitor

monitor = InjuryMonitor()
report = monitor.get_full_report()

# Structured JSON output
print(report.to_json())

# Human-readable summary
print(report.summary())

Single Sport

report = monitor.get_report(sport="nba")

Changes Only

changes = monitor.get_status_changes()
for change in changes:
    print(f"{change['player']} ({change['team']}): "
          f"{change['old_status']} -> {change['new_status']} "
          f"{'** GAME TODAY **' if change['game_today'] else ''}")

Today's Games Impact

# Only injuries for players whose teams play today
today_injuries = monitor.get_today_impact()

Output Format

JSON Structure

{
  "generated_at": "2026-02-18T14:30:00Z",
  "sports": {
    "nba": {
      "injuries": [
        {
          "player": "Anthony Davis",
          "team": "Los Angeles Lakers",
          "status": "Questionable",
          "injury": "Left knee soreness",
          "updated": "2026-02-18T10:00:00Z",
          "source": "espn",
          "game_today": {
            "opponent": "Golden State Warriors",
            "time": "19:30 ET",
            "game_id": "nba-20260218-lal-gsw"
          },
          "status_changed": true,
          "previous_status": "Probable"
        }
      ],
      "total_injuries": 47,
      "games_today": 8,
      "affected_games": 6
    }
  }
}

Human-Readable Summary

=== INJURY REPORT — February 18, 2026 ===

--- NBA (47 injuries, 6 of 8 games affected) ---

** STATUS CHANGES **
  Anthony Davis (LAL) — Probable -> Questionable — Left knee soreness
    GAME TODAY: vs GSW at 7:30 PM ET

  Ja Morant (MEM) — Questionable -> Out — Right ankle sprain
    GAME TODAY: vs PHX at 9:00 PM ET

** ALL INJURIES (Teams Playing Today) **
  ...

Architecture

injury_monitor.py          Main orchestrator
    |
    +---> injury_sources.py    Individual source parsers (ESPN, CBS, etc.)
    |
    +---> shipp_wrapper.py     Game schedule context
    |
    +---> state.json           Last-known injury states for change detection

Error Handling

Each source is fetched independently. If ESPN is down, CBS Sports data still comes through. The report always tells you which sources succeeded and which failed, so you know the completeness of your data.

Rate Limiting

All sources are public HTML pages scraped with polite intervals:

  • Minimum 2 seconds between requests to the same domain
  • Requests timeout after 15 seconds
  • Failed sources are retried once after a 5-second delay

License

MIT


Powered by Shipp.ai real-time data

Release files for injury-report-monitor 0.1.0

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

Source distribution (sdist)

Source distribution for injury-report-monitor 0.1.0
File Size Uploaded
injury_report_monitor-0.1.0.tar.gz 39.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for injury-report-monitor 0.1.0
File Interpreter ABI Platform
injury_report_monitor-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size:56.5 kB

Release files / injury_report_monitor-0.1.0.tar.gz

Download URL injury_report_monitor-0.1.0.tar.gz
Size 39.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a00649324d0d09d116508b0ec20714960843ea8bd275a445b28c3855ccc1fb5d
BLAKE2b-256 checksum
How to use checksums
1fb9a44a3cc1cc40ecd10884e3734930f0cbb2ea1c6cbc78c2979fe1f17a3914
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / injury_report_monitor-0.1.0-py3-none-any.whl

Download URL injury_report_monitor-0.1.0-py3-none-any.whl
Size 17.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0624cd9f21d69efb18d57f178f708f945afe318b718479ed6c693eceafb349f3
BLAKE2b-256 checksum
How to use checksums
aeb7dc268f8531d295f05066972d238fb20da40ba6c6c8fe970e8084cb735a01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.0 This release

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