🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Football Data

by @antonelli182

Football (soccer) data across 13 leagues — standings, schedules, match stats, xG, transfers, player profiles. Zero config, no API keys. Covers Premier League...

Versionv0.1.0
Installs5
💡 Examples

User: "Show me the Premier League table" 1. Call get_current_season(competition_id="premier-league") to get the current season_id 2. Call get_season_standings(season_id=) 3. Present standings table with position, team, played, won, drawn, lost, GD, points

User: "How did Arsenal vs Liverpool go?" 1. Call get_daily_schedule() or get_team_schedule(team_id="359") to find the event_id 2. Call get_event_summary(event_id="...") for the score 3. Call get_event_statistics(event_id="...") for possession, shots, etc. 4. Call get_event_xg(event_id="...") for xG comparison (EPL — top 5 only) 5. Present match report with scores, key stats, and xG

User: "Deep dive on Chelsea's recent form" 1. Call search_team(query="Chelsea") → team_id=363, competition=premier-league 2. Call get_team_schedule(team_id="363", competition_id="premier-league") → find recent closed events 3. For each recent match, call in parallel: - get_event_xg(event_id="...") for xG comparison and shot map - get_event_statistics(event_id="...") for possession, shots, passes - get_event_players_statistics(event_id="...") for individual player xG/xA 4. Call get_missing_players(season_id=) → filter Chelsea's injured/doubtful players 5. Call get_season_leaders(season_id=) → filter Chelsea players, get their FPL IDs 6. Call get_player_profile(fpl_id="...", tm_player_id="...") for key players — combine FPL stats (form, ownership, ICT) with Transfermarkt data (market value, transfer history) 7. Present: xG trend across matches, key player stats, injury report, market values

User: "What's Saka's market value?" 1. Call get_player_profile(tm_player_id="433177") for Transfermarkt data 2. Optionally add fpl_id for FPL stats if Premier League player 3. Present market value, value history, and transfer history

User: "Tell me about Corinthians" 1. Call search_team(query="Corinthians") → team_id=874, competition=serie-a-brazil 2. Call get_team_schedule(team_id="874", competition_id="serie-a-brazil") for fixtures 3. Pick a recent match and call get_event_timeline(event_id="...") for goals, cards, subs 4. Note: xG, FPL stats, and season leaders are NOT available for Brazilian Serie A

⚙️ Configuration

Before first use, check if the CLI is available:

which sports-skills || pip install sports-skills
If pip install fails (package not found or Python version error), install from GitHub:
pip install git+https://github.com/machina-sports/sports-skills.git
The package requires Python 3.10+. If your default Python is older, use a specific version:
python3 --version  # check version

If < 3.10, try: python3.12 -m pip install sports-skills

On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills

No API keys required.

📋 Tips & Best Practices

  • sports-skills command not found: Package not installed. Run pip install sports-skills. If the package is not found on PyPI, install from GitHub: pip install git+https://github.com/machina-sports/sports-skills.git. Requires Python 3.10+ — see Setup section.
  • ModuleNotFoundError: No module named 'sports_skills': Same as above — install the package. Prefer the CLI over Python imports to avoid path issues.
  • Empty results for PL-only commands on other leagues: get_season_leaders and get_missing_players only return data for Premier League. They silently return empty for other leagues — check the Data Coverage table.
  • get_team_profile returns empty players: This is expected — squad rosters are not available. To get player data for a PL team, use get_season_leaders to find players and their FPL IDs, then get_player_profile(fpl_id="...") for detailed stats. For Transfermarkt data, you need the player's tm_player_id.
  • Finding FPL IDs and Transfermarkt IDs: Use get_season_leaders(season_id="premier-league-2025") to discover FPL IDs for PL players. Transfermarkt IDs must be looked up on transfermarkt.com — the ID is the number at the end of the player's URL. Well-known examples: Cole Palmer = 568177, Bukayo Saka = 433177, Mbappe = 342229.
  • No xG for recent matches: Understat data may lag 24-48 hours after a match ends. If get_event_xg returns empty for a recent top-5 match, try again later.
  • Wrong season_id format: Must be {league-slug}-{year} e.g. "premier-league-2025". Not "2025-2026", not "EPL-2025". Use get_current_season() to discover the correct format.
  • Team/event IDs unknown: Use search_team(query="team name") to find team IDs by name, or get_season_teams to list all teams in a season. Use get_daily_schedule or get_season_schedule to find event IDs. IDs are ESPN numeric strings.
  • View on ClawHub
    TERMINAL
    clawhub install football-data

    🧪 Use this skill with your agent

    Most visitors already have an agent. Pick your environment, install or copy the workflow, then run the smoke-test prompt above.

    🔍 Can't find the right skill?

    Search 60,000+ AI agent skills — free, no login needed.

    Search Skills →