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

shipp_soccer-0.1.0.tar.gz (36.6 kB view details)

Uploaded Source

Built Distribution

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

shipp_soccer-0.1.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for shipp_soccer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7188039444c348736e2be1cdd09dd93d6f535cf34baf23c3e43e2f4ff7121a6f
MD5 97281eb303457e27af673a57aa08935a
BLAKE2b-256 4ea7f6bc5f845eed85de44d73cc73158af7e7ab2179e317a999f94a42722409f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shipp_soccer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for shipp_soccer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e707e99686eb33520b18b653e7ae5ac76f67c0b81325a78fdb10024736bcc95c
MD5 59d2fb54e1616f737f5c4922a0fabf85
BLAKE2b-256 441ffdc0648fdeda54e386ea1710abf863787e0b8159495f3643cfdf2f18b37e

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