Skip to main content

Live soccer match tracking for Premier League, La Liga, Champions League, and MLS

Project description

soccer-match-tracker

Your complete football companion across the world's top leagues.

Live scores, standings, fixtures, and match events for Premier League, La Liga, Champions League, and MLS -- all in one place.

The Problem

Following football across multiple leagues means juggling different apps, websites, and time zones. Premier League on one tab, La Liga on another, Champions League results buried somewhere else. When matches overlap, it is nearly impossible to keep up.

The Solution

soccer-match-tracker gives you a unified view of all the football that matters. Live scores from every league on one screen, standings updated every matchday, upcoming fixtures for the week ahead, and goal/card/substitution events as they happen.

What You Get

  • Multi-league live scores: See every active match across PL, La Liga, CL, and MLS grouped by competition
  • Match events feed: Goals, red/yellow cards, substitutions, penalties -- as they happen
  • League tables: Current standings with points, goal difference, form
  • Fixtures calendar: Next 7 days of upcoming matches across all leagues
  • Team squads: Full roster lookup for any team in covered leagues

Who This Is For

  • Multi-league fans who follow clubs across different competitions
  • Fantasy managers (FPL, La Liga Fantasy, UCL Fantasy) who need live data
  • Analysts tracking league form and standings trends
  • Match-day viewers who want a second-screen experience

Setup

1. Data API Key for Live Scores (Required)

For live match scores and events:

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

Get one at platform.shipp.ai.

2. Football-Data.org API Key (Required)

For standings, fixtures, and team data:

  1. Register at football-data.org
  2. The free tier provides 10 requests per minute
  3. Set the environment variable:
export FOOTBALL_DATA_API_KEY="your-key-here"

3. Install Dependencies

pip install requests

Usage

Live Scores (All Leagues)

from scripts.match_tracker import MatchTracker

tracker = MatchTracker()

# Get all live matches across leagues
live = tracker.live_scores()
print(live.display())

Single League

# Premier League only
pl_live = tracker.live_scores(league="PL")

# La Liga standings
la_liga = tracker.standings(league="PD")
print(la_liga.table())

Upcoming Fixtures

# Next 7 days across all leagues
upcoming = tracker.upcoming(days=7)
print(upcoming.display())

# Champions League only
cl_fixtures = tracker.upcoming(league="CL", days=7)

Match Events

# Get events for a specific match
events = tracker.match_events(match_id="some-match-id")
for event in events:
    print(f"{event['minute']}' {event['type']}: {event['player']} ({event['team']})")

League Standings

standings = tracker.standings(league="PL")
print(standings.table())

Team Squad

squad = tracker.team_squad(team_id=57)  # Arsenal
for player in squad:
    print(f"{player['name']} - {player['position']}")

Full Dashboard

# Everything at once
dashboard = tracker.dashboard()
print(dashboard)

Output Format

Live Scores Display

=== LIVE FOOTBALL SCORES ===

--- Premier League ---
  Arsenal 2 - 1 Chelsea          67'
    52' GOAL  Saka (Arsenal)
    61' GOAL  Palmer (Chelsea)
    65' GOAL  Havertz (Arsenal)

  Manchester City 0 - 0 Liverpool   34'

--- Champions League ---
  Real Madrid 1 - 0 PSG           78'
    44' GOAL  Vinicius Jr (Real Madrid)
    71' YELLOW CARD  Marquinhos (PSG)

--- La Liga ---
  Barcelona 3 - 0 Sevilla         FT
  Atletico Madrid vs Real Betis   20:00

League Table

=== Premier League Standings ===
 #  Team                  P   W   D   L   GF  GA  GD  Pts
 1  Arsenal              26  19   4   3   58  21  +37  61
 2  Liverpool             26  18   5   3   55  25  +30  59
 3  Manchester City       26  17   4   5   56  28  +28  55
 4  Aston Villa           26  15   5   6   48  32  +16  50
 ...

Upcoming Fixtures

=== Upcoming Fixtures (Next 7 Days) ===

Saturday, February 21
  Premier League
    Arsenal vs Manchester United      15:00
    Chelsea vs Tottenham              17:30

  La Liga
    Real Madrid vs Atletico Madrid    21:00

Sunday, February 22
  Premier League
    Liverpool vs Newcastle            16:30

  Champions League (Round of 16)
    Bayern Munich vs Inter Milan      21:00

Architecture

match_tracker.py          Main orchestrator + display formatting
    |
    +---> football_data.py    football-data.org API integration
    |
    +---> shipp_wrapper.py    Live match score/event connection

Rate Limits

Source Limit Strategy
Live data feed Plan-dependent Poll every 10-30 seconds
football-data.org 10 requests/minute Cache standings (5 min TTL)

The tracker automatically rate-limits football-data.org requests and caches responses to stay within the free tier. Standings and fixtures are cached for 5 minutes since they change infrequently.

License

MIT


Powered by Shipp.ai real-time data

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soccer_match_tracker-0.1.0.tar.gz (36.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soccer_match_tracker-0.1.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file soccer_match_tracker-0.1.0.tar.gz.

File metadata

  • Download URL: soccer_match_tracker-0.1.0.tar.gz
  • Upload date:
  • Size: 36.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for soccer_match_tracker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a80b398e6ea5c5b49b554f62619e16665237d85126c2963d0daa57f4c54f027
MD5 8cf4d39b3406c410f7481824fbca1b79
BLAKE2b-256 13ecf65d122a5d0dde8b6139379e56578414e44b5a16d61b3babddbc18fbc7cf

See more details on using hashes here.

File details

Details for the file soccer_match_tracker-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for soccer_match_tracker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 15901f0fcdc3f7fc78fc445e081cb26359de7d74fa20b6f648297620e39e43e9
MD5 1ee3fd09e3cf555afbce1713d5c06e00
BLAKE2b-256 e6283fa4a079faf0a18e0c598babb7f3bcd0cc18bbef529dedd728e3632249b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page