SportStatsAPI
Fixtures, live scores, results, tables and match facts for 1,881 competitions in 8 sports.
Should I use this
Quality & Safety
Findings (2)
- LOWin get_mma_event
- LOWin get_mma_events
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"sports-data": {
"url": "https://mcp.sportstatsapi.com/mcp"
}
}
}Remote endpoints
https://mcp.sportstatsapi.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (34)
🟢find_horses(name, limit)
Find horses, jockeys and trainers by name, with their ids (for get_runner_form), most recently seen first.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "part of a horse, jockey or trainer name (2-64 characters)"
},
"limit": {
"type": "integer",
"description": "max results per kind (default 20, max 50)"
}
},
"required": [
"name"
],
"additionalProperties": false
}🟢find_leagues(sport, query, future, lang)
Find leagues (competitions) of a sport and their ids, optionally by name or country (also matches official_name, the competition's official or Wikidata name where known). Free.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport: soccer, basketball, baseball, hockey, tennis, handball, volleyball, american-football, cricket, rugby (union), rugby-league, esports or table-tennis"
},
"query": {
"type": "string",
"description": "text the league or country name must contain, e.g. 'Premier League' or 'Germany'"
},
"future": {
"type": "boolean",
"description": "only leagues with upcoming matches"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢find_teams(sport, name, league_id, limit, lang)
Find teams by name, with their ids, country, venue and leagues.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"name": {
"type": "string",
"description": "part of the team name, e.g. 'Bayern'"
},
"league_id": {
"type": [
"integer",
"string"
],
"description": "only teams of this league"
},
"limit": {
"type": "integer",
"description": "max teams (default 20, max 100)"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport",
"name"
],
"additionalProperties": false
}🟢get_boxing_event(event_id)
One boxing event with every bout from the main event down: weight class, world titles at stake (WBA, WBC, IBF, WBO, Ring), fighters, result, method (KO, TKO, UD, SD, MD, RTD, DQ, TD, NC, draw), round, time, rounds scheduled.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": [
"integer",
"string"
],
"description": "event code (or number) from get_boxing_events"
}
},
"required": [
"event_id"
],
"additionalProperties": false
}🟢get_boxing_events(season, status, kind, date_from, date_to, ...)
Boxing events of the last and the current year from Wikipedia: fight cards and world title fights, with date, venue, city, status and the main event's winner (cite the attribution). The current world champions: get_standings with sport boxing.
Input Schema
{
"type": "object",
"properties": {
"season": {
"type": "string",
"description": "year (default: the last and the current year)"
},
"status": {
"type": "string",
"description": "scheduled, live, finished or no_results"
},
"kind": {
"type": "string",
"description": "card (a whole card) or title_fight (a world title fight from a champion's record)"
},
"date_from": {
"type": "string",
"description": "YYYY-MM-DD"
},
"date_to": {
"type": "string",
"description": "YYYY-MM-DD"
},
"limit": {
"type": "integer",
"description": "max events (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many events (paging)"
}
},
"additionalProperties": false
}🟢get_boxing_fighter(fighter_id, name)
A boxer (fighter_id): birth date, country, height, reach, stance and professional record (Wikipedia/Wikidata), world titles held now, latest bouts; or find boxers by name.
Input Schema
{
"type": "object",
"properties": {
"fighter_id": {
"type": [
"integer",
"string"
],
"description": "fighter code (or number) from a bout or the champions"
},
"name": {
"type": "string",
"description": "part of a boxer's name, to find the id"
}
},
"additionalProperties": false
}🟢get_golf_leaderboard(tournament_id, holes)
A golf tournament's leaderboard: position (tied), to par, strokes per round, thru and today while live, earnings, missed cut or withdrawn, and per-player stats (birdies, eagles, driving distance and accuracy, greens in regulation, putts); holes=true adds hole-by-hole scores.
Input Schema
{
"type": "object",
"properties": {
"tournament_id": {
"type": [
"integer",
"string"
],
"description": "tournament code (or number) from get_golf_tournaments"
},
"holes": {
"type": "boolean",
"description": "also each player's hole-by-hole scores (large)"
}
},
"required": [
"tournament_id"
],
"additionalProperties": false
}🟢get_golf_player(player_id, name, season)
A golfer's profile (country, birth date and place, PGA Tour rank) and season results from our leaderboards with events, wins, top 10s, cuts made and earnings (player_id); or find golfers by name.
Input Schema
{
"type": "object",
"properties": {
"player_id": {
"type": [
"integer",
"string"
],
"description": "player code (or number) from a leaderboard: profile and the season's results"
},
"name": {
"type": "string",
"description": "part of a golfer's name, to find the id"
},
"season": {
"type": "integer",
"description": "season of the results (default: the latest)"
}
},
"additionalProperties": false
}🟢get_golf_tournaments(tour, season, status, date_from, date_to, ...)
Golf tournaments of the PGA Tour and LPGA by date: course, location, purse, status and the leader or winner. Leaderboards exist for the PGA Tour only. The season money list: get_standings with sport golf.
Input Schema
{
"type": "object",
"properties": {
"tour": {
"type": "string",
"description": "pga or lpga (LPGA: schedule only, no leaderboards)"
},
"season": {
"type": "integer",
"description": "season (year)"
},
"status": {
"type": "string",
"description": "scheduled, live, finished, no_results or incomplete"
},
"date_from": {
"type": "string",
"description": "tournaments ending on or after YYYY-MM-DD"
},
"date_to": {
"type": "string",
"description": "tournaments starting on or before YYYY-MM-DD"
},
"limit": {
"type": "integer",
"description": "max tournaments (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many tournaments (paging)"
}
},
"additionalProperties": false
}🟢get_h2h(sport, team_a, team_b, lang)
Head-to-head of two teams (soccer by default; any team sport with results: basketball, baseball, hockey, handball, volleyball, American football) over every meeting in our data (all competitions, no friendlies): won, drawn and lost from team_a's side (home_team_* fields = team_a), goals (the sport's score: points, runs, sets won), each side's biggest win, the last 5 meetings, with sentences (lang de, es, it, fr). history_from: our data starts there, so say 'since' that date. Tennis: get_player with vs. Facts only. Insights feature.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "team sport (default soccer; see list_sports; tennis: get_player with vs)"
},
"team_a": {
"type": [
"integer",
"string"
],
"description": "team code (or number) from find_teams or a match"
},
"team_b": {
"type": [
"integer",
"string"
],
"description": "the other team's id"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"team_a",
"team_b"
],
"additionalProperties": false
}🟢get_league_facts(sport, league_id, since, min_importance, lang)
What finished matches changed, newest first: the match story (comebacks, late winners, red cards), runs started or ended, table places and zones, each also as a sentence (lang de, es, it, fr). Use for 'what happened in this league today'. Facts only. Insights feature.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (default soccer; see list_sports)"
},
"league_id": {
"type": [
"integer",
"string"
],
"description": "only this league (from find_leagues)"
},
"since": {
"type": "string",
"description": "only matches updated after this RFC 3339 time"
},
"min_importance": {
"type": "integer",
"description": "only facts of at least this importance, 0-100 (default 50)"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"additionalProperties": false
}🟢get_live_matches(sport, league_id, lang)
Matches in play right now, with score and minute or period, and the TV channels showing them where known.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"league_id": {
"type": [
"integer",
"string"
],
"description": "only this league"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢get_match(sport, match_id, lang)
One match: teams, score, status, events (goals, cards...), venue, referee; where known TV channels by country and, after the match, a highlights video link. Soccer adds timeline: the events normalised (minute, extra_minute, team home/away, kind goal, penalty, own_goal, missed_penalty, yellow, second_yellow, red, substitution or var, player, assist, player_in/player_out, detail: card reason or VAR outcome; minute null = not known; no headers or xG per shot: not in our data) and referee_stats: the referee's season in the league (games, cards and penalties per game, with league_matches_with_referee of league_matches_played).
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"match_id": {
"type": [
"integer",
"string"
],
"description": "match code (or number) from get_matches"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport",
"match_id"
],
"additionalProperties": false
}🟢get_match_briefing(sport, match_id, format, lang)
Ready briefing for one match (any sport but cricket): form, current streaks, home and away records, head-to-head, table position and gaps, stakes, schedule; for soccer also injuries, lineups, players one league appearance or goal short of a club milestone (milestone_next) and, after the match, the story (comeback, late winner, red cards), runs it ended (streak_ended_*: 'first defeat after 11 unbeaten') and long waits it ended that our data can date (first_since_*: first win at the opponent's ground, first clean sheet, top of the table for the first time since a day; history_from: nothing is claimed before it). The head-to-head block has goals and each side's biggest win. Soccer before kickoff: players suspended (suspended_out) or one booking from a ban, by the league's card rules. Each statement also as a sentence (lang de, es, it, fr). Facts only, no predictions. Insights feature. Prefer this for 'tell me about this match'.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (default soccer; see list_sports)"
},
"match_id": {
"type": [
"integer",
"string"
],
"description": "match code (or number) from get_matches"
},
"format": {
"type": "string",
"description": "md for a short Markdown text instead of JSON"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"match_id"
],
"additionalProperties": false
}🟢get_match_details(sport, match_id, part, lang)
Detail of one match: statistics or box score, lineups, injuries (soccer: per player type, expected_return and matches_missed; null = not known, never guess), play-by-play, a cricket scorecard (batting, bowling, fall of wickets), rugby scoring events, esports maps and games with player lines, or the singles and doubles of a table tennis team match with set scores.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"match_id": {
"type": [
"integer",
"string"
],
"description": "match code (or number) from get_matches"
},
"part": {
"type": "string",
"description": "stats, lineups or injuries (soccer); stats (box score) or play_by_play (basketball, baseball, hockey, tennis, american-football); scorecard (cricket); events (rugby, rugby-league: tries, conversions, penalties, cards); maps (esports: per map or game with player lines); games (table-tennis: singles and doubles with set scores)"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport",
"match_id",
"part"
],
"additionalProperties": false
}🟢get_matches(sport, date, date_from, date_to, league_id, ...)
Matches (fixtures and results) by day or date range, optionally of one league, or one team's matches in every competition (team_id; without status or dates its latest results, then live, then next matches; with status scheduled only the next ones, with finished only the latest results). Without a date or team: today (UTC). Where known: TV channels by country (where to watch) and a highlights video link.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"date": {
"type": "string",
"description": "day YYYY-MM-DD (UTC)"
},
"date_from": {
"type": "string",
"description": "first day YYYY-MM-DD of a range"
},
"date_to": {
"type": "string",
"description": "last day YYYY-MM-DD of a range"
},
"league_id": {
"type": [
"integer",
"string"
],
"description": "league code (or number) from find_leagues"
},
"league_name": {
"type": "string",
"description": "exact league name, picks one division where several share a league id"
},
"team_id": {
"type": [
"integer",
"string"
],
"description": "only this team's matches in every competition (team code (or number) from find_teams; not tennis); without a date all of them"
},
"status": {
"type": "string",
"description": "scheduled, finished or live, or a status as the API reports it, e.g. FT or NS; with team_id finished lists the latest first; with team_id and no status or date: latest results then next matches"
},
"limit": {
"type": "integer",
"description": "max matches (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many matches (paging)"
},
"game": {
"type": "string",
"description": "esports: cs2, dota2, lol or valorant"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢get_mma_event(event_id, bout_id)
One MMA card from the main event down (weight class, fighters, winner, method, round, time, judges' scores, fight stats), or with bout_id one fight.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": [
"integer",
"string"
],
"description": "event code (or number) from get_mma_events: the full card"
},
"bout_id": {
"type": [
"integer",
"string"
],
"description": "bout code (or number) from a card: that fight with its stats instead"
}
},
"additionalProperties": false
}🟢get_mma_events(date_from, date_to, status, limit, offset)
MMA (UFC) fight cards by date: name, date, status and the main event with its result once known.
Input Schema
{
"type": "object",
"properties": {
"date_from": {
"type": "string",
"description": "events on or after YYYY-MM-DD"
},
"date_to": {
"type": "string",
"description": "events on or before YYYY-MM-DD"
},
"status": {
"type": "string",
"description": "scheduled, live, finished or cancelled"
},
"limit": {
"type": "integer",
"description": "max events (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many events (paging)"
}
},
"additionalProperties": false
}🟢get_mma_fighter(fighter_id, name)
An MMA fighter's record (wins, losses, draws, no contests; wins and losses by KO/TKO, submission, decision) from the bouts held since 2026, with the last fights; where Wikipedia/Wikidata has the fighter also the profile (birth date, height, reach, stance, nationality, weight class, team), the career record and the fights before 2026 (cite the attribution). Or find fighters by name.
Input Schema
{
"type": "object",
"properties": {
"fighter_id": {
"type": [
"integer",
"string"
],
"description": "fighter code (or number) from a bout: the record, recent fights, profile and history"
},
"name": {
"type": "string",
"description": "part of a fighter's name, to find the id"
}
},
"additionalProperties": false
}🟢get_motorsport_event(event_id, session_id)
One motorsport weekend with its sessions (practice, qualifying, sprint, race; start in UTC, status), or with session_id one session's results: position, driver, team, time or gap, laps, grid, pit stops, DNF/DNS/DSQ.
Input Schema
{
"type": "object",
"properties": {
"event_id": {
"type": [
"integer",
"string"
],
"description": "event code (or number) from get_motorsport_events: the weekend with its sessions"
},
"session_id": {
"type": [
"integer",
"string"
],
"description": "session code (or number) from an event: that session's results instead"
}
},
"additionalProperties": false
}🟢get_motorsport_events(series, season, date_from, date_to, status, ...)
Motorsport race weekends (Formula 1, MotoGP, Moto2, Moto3, Formula 2, Formula E, IndyCar, NASCAR) by start date: round, name, country, circuit, dates, status and the race winner once known. With overview: every series with its season, next and last event.
Input Schema
{
"type": "object",
"properties": {
"series": {
"type": "string",
"description": "f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks"
},
"season": {
"type": "integer",
"description": "season year"
},
"date_from": {
"type": "string",
"description": "events ending on or after YYYY-MM-DD"
},
"date_to": {
"type": "string",
"description": "events starting on or before YYYY-MM-DD"
},
"status": {
"type": "string",
"description": "scheduled, live, finished or cancelled"
},
"limit": {
"type": "integer",
"description": "max events (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many events (paging)"
},
"overview": {
"type": "boolean",
"description": "the series list instead: season, next and last event of each"
}
},
"additionalProperties": false
}🟢get_player(sport, player_id, vs, season, lang)
Player profile: position, nationality, birth date, height, team, career and photo link where known; cricket and tennis also Wikidata values (birth date, height, batting or playing hand, bowling style, role, country; cite the attribution); tennis also the ATP/WTA rank, or with vs the head-to-head of two players; soccer also bio: known_as, full_name, short_name, birth_date, age, nationality, position, number, club, market_value_eur (null = not in our data; there are no contract dates), and season_stats: the current season (or season) in every competition we hold statistics for, total and per competition (apps, minutes, goals, assists, cards, shots, rating; null = not in our data; matches_with_stats of team_matches_played says how complete it is); NBA, MLB and NFL players also season_stats: the season line per team from the data provider's team feeds (stats by category as the feed names them; season null for the NBA, whose feed names none, as_of when read).
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"player_id": {
"type": [
"integer",
"string"
],
"description": "player code (or number) from a squad or lineup"
},
"vs": {
"type": [
"integer",
"string"
],
"description": "tennis: another player's id, for the head-to-head of the two instead"
},
"season": {
"type": "string",
"description": "soccer: season_stats of this season (2025-26, or 2025) instead of the current one"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport",
"player_id"
],
"additionalProperties": false
}🟢get_race(race_id)
One horse race card: runners with number, horse, jockey, trainer, weight, rating, recent form where the feed has it, best current price and morning line; once settled the result (positions, starting prices, finish codes such as PU or F) and results_final.
Input Schema
{
"type": "object",
"properties": {
"race_id": {
"type": [
"integer",
"string"
],
"description": "race code (or number) from get_races"
}
},
"required": [
"race_id"
],
"additionalProperties": false
}🟢get_race_briefing(race_id, format, lang)
Ready briefing for one horse race from our results: field size, distance, going, class, the favourite, each runner's form figures and last run, jockey and trainer strike rates over the last 30 days; after the race the winner, starting price and whether the favourite won. Each statement also as a sentence (lang de, es, it, fr). Facts only.
Input Schema
{
"type": "object",
"properties": {
"race_id": {
"type": [
"integer",
"string"
],
"description": "race code (or number) from get_races"
},
"format": {
"type": "string",
"description": "md for a short Markdown text instead of JSON"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"race_id"
],
"additionalProperties": false
}🟢get_races(date, region, meeting_id, limit, offset)
Horse races of a day (default today, UTC), optionally of one region or racecourse: off time, course, race name, distance, going, class, number of runners, status (NS, live, result_pending, FT).
Input Schema
{
"type": "object",
"properties": {
"date": {
"type": "string",
"description": "UTC race day YYYY-MM-DD (default today)"
},
"region": {
"type": "string",
"description": "usa, uk, australia, hk, singapore, dubai, sa or france"
},
"meeting_id": {
"type": [
"integer",
"string"
],
"description": "racecourse (meeting) code (or number) from a race"
},
"limit": {
"type": "integer",
"description": "max races (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many races (paging)"
}
},
"additionalProperties": false
}🟢get_runner_form(kind, id, limit)
Last runs of a horse, jockey or trainer in our stored results, latest first: date, course, distance, going, position and field size, starting price; plus wins, top-three finishes and strike rate over those runs.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "horse (default), jockey or trainer"
},
"id": {
"type": [
"integer",
"string"
],
"description": "horse, jockey or trainer code (or number) from find_horses or a race card"
},
"limit": {
"type": "integer",
"description": "runs (default 10, max 50)"
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢get_snooker_darts_player(sport, player_id, name)
A snooker or darts player (player_id): country, world ranking, birth date (Wikidata), titles and finals in the stored seasons, latest matches; or find players by name.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "snooker or darts"
},
"player_id": {
"type": [
"integer",
"string"
],
"description": "player code (or number) from a draw or ranking"
},
"name": {
"type": "string",
"description": "part of a player's name, to find the id"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢get_snooker_darts_tournament(sport, tournament_id)
A snooker or darts tournament with its whole draw (qualifying first, the final last): round, players, seeds, frames/legs/sets won, best of, three-dart averages where listed; snooker also the century breaks per player.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "snooker or darts"
},
"tournament_id": {
"type": [
"integer",
"string"
],
"description": "tournament code (or number) from get_snooker_darts_tournaments"
}
},
"required": [
"sport",
"tournament_id"
],
"additionalProperties": false
}🟢get_snooker_darts_tournaments(sport, season, status, kind, limit, ...)
Snooker (World Snooker Tour ranking and invitational events) or darts (PDC majors, World Series, Players Championships, European Tour) tournaments of the current and last season from Wikipedia: dates, venue, prize fund, winner, final score. The world ranking: get_standings with sport snooker or darts.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "snooker or darts"
},
"season": {
"type": "string",
"description": "snooker 2026-27, darts 2026 (default: the current and the last season)"
},
"status": {
"type": "string",
"description": "scheduled, live, finished or no_results"
},
"kind": {
"type": "string",
"description": "snooker: ranking, non_ranking; darts: ranked, non_ranked, world_series, players_championship, european_tour"
},
"limit": {
"type": "integer",
"description": "max tournaments (default 20, max 100)"
},
"offset": {
"type": "integer",
"description": "skip this many tournaments (paging)"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢get_standings(sport, league_id, tour, top_scorers, player_stats, ...)
League table of a league; for soccer also the top scorers, most assists or most cards (top_scorers), every player's season statistics sorted by goals, assists, minutes, rating, xg or apps (player_stats), every team's season statistics with ranks such as the best defence (team_stats), the referees with cards and penalties per game (referees), the roll of honour with champions and runners-up per season and their sources (champions), home attendance per team and league (attendance), the xG table with expected points against real points (xg_table), players banned or one booking away from a ban (suspensions) and past seasons' final tables (season); for every sport with results Elo-style team ratings of a league or the whole sport (ratings); for tennis the ATP or WTA singles ranking (tour); for motorsport a series' drivers or teams championship (series, kind); for golf the season money list with wins (tour); for snooker and darts the world ranking (WPBSA, PDC Order of Merit); for boxing the current world champions per weight class and body; for cricket the points table of a series or league.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports)"
},
"league_id": {
"type": [
"integer",
"string"
],
"description": "league code (or number) from find_leagues (not for tennis)"
},
"tour": {
"type": "string",
"description": "tennis: atp or wta (the singles ranking, top 100); golf: pga (default) or lpga"
},
"top_scorers": {
"type": "string",
"description": "soccer: goals, assists or cards for the league's top scorers, most assists or most cards instead of the table"
},
"player_stats": {
"type": "string",
"description": "soccer: goals, assists, minutes, rating, xg or apps for every player's season statistics in the league sorted by it, instead of the table (computed from our matches; matches_with_stats of team_matches_played says how complete a row is; season: a past season); NBA, MLB, NFL: a stat name such as points_per_game, home_runs, earned_run_average or passing.yards (category.stat) for the players' season lines from the data provider's team feeds (season null for the NBA: before a new season the feed still holds the last one; as_of says when it was read)"
},
"team_stats": {
"type": "string",
"description": "soccer: ppg, goals_for, goals_against (best defence), clean_sheets, failed_to_score, xg_for, xg_against or attendance for every team's season statistics (home/away records, xG, attendance, ranks per metric) sorted by it, instead of the table (matches_with_xg and matches_with_attendance say how complete xG and attendance are; season: a past season)"
},
"xg_table": {
"type": "string",
"description": "soccer: xpts, xg_diff or points_minus_xpts for the league's xG table instead of the table: xG for and against, expected points (xpts, independent Poisson goals from both sides' xG) against real points and the difference (positive = more than expected: luckier or better finishing), all over matches_with_xg of played (top leagues; season: a past season)"
},
"ratings": {
"type": "boolean",
"description": "any sport with results: Elo-style team ratings (tennis: players) instead of the table, highest first, of the league (league_id) or of the whole sport without it; matches_rated and rated_from say how much history a rating stands on, provisional below 10; ratings compare across leagues only where those leagues' teams meet (cups, continental matches)"
},
"champions": {
"type": "boolean",
"description": "soccer: the league's (or cup's) roll of honour instead of the table: champion and runner_up per season, each with its sources (wikipedia: the final tables of the last 10 seasons, top leagues; provider: the trophy lists of team profiles, further back but missing teams we do not hold); conflicts lists a team another source names for the same place: report it, do not pick silently; cite the attribution"
},
"attendance": {
"type": "boolean",
"description": "soccer: the league season's home attendance instead of the table: league average and record, per team average, record and rank; matches_with_attendance of matches_played says how complete (often low: the feed lacks attendance for many matches, so say the average stands on that many matches; season: a past season)"
},
"referees": {
"type": "boolean",
"description": "soccer: the league's referees instead of the table: games, yellow and red cards and penalties per game (computed from our match data, top leagues; league_matches_with_referee of league_matches_played says how complete; season: a past season)"
},
"suspensions": {
"type": "boolean",
"description": "soccer: the league's suspension watch instead of the table: players banned now (status suspended, matches_left) and one booking away from a ban (next_threshold, next_ban), from the league's official card rules (Premier League, EFL, Bundesliga, 2. Bundesliga, LaLiga, Segunda, Serie A, Serie B; rules.source) and our cards; rules_known and matches_with_stats of matches_played on every row; leagues without known rules list cards so far only"
},
"history": {
"type": "boolean",
"description": "the league's table round by round instead of the table (position charts; sports with the data provider league tables, not cricket): soccer from our results for the current and previous season plus stored tables, other sports the stored tables from 2026-10-11 (history_from); with team_id only that team's row per round"
},
"team_id": {
"type": [
"integer",
"string"
],
"description": "with history: only this team"
},
"series": {
"type": "string",
"description": "motorsport: f1, motogp, moto2, moto3, f2, formula-e, indycar, nascar-cup, nascar-xfinity or nascar-trucks"
},
"kind": {
"type": "string",
"description": "motorsport: drivers (default) or teams"
},
"season": {
"type": "string",
"description": "soccer: a past season's final table (2016-17, or 2016 for Brazil and MLS; the last 10 seasons of the top leagues, from Wikipedia: cite the attribution) instead of the current table; tennis: a year (2026) for that year's year-end ranking, first 100 places (final false while the year is not over; stored weekly from 2026-10)"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport"
],
"additionalProperties": false
}🟢get_team(sport, team_id, squad, injuries, coach, ...)
Team profile: country, founded, venue, leagues, logo link; rating: its Elo-style rating (rank of of in its league, matches_rated, rated_from, the last 10 changes); next: its next 5 matches in every competition (more: get_matches with team_id; fixture congestion: get_team_briefing). Soccer also coach: the current head coach from Wikidata with appointment date and won/drawn/lost since (record_complete false: our matches start later, at record_from, so say the record covers only that; cite the attribution), and squad_value_eur: the current squad's summed market value over players_with_value of squad_players. Options: squad (the players); soccer: coach (adds previous_coach and previous_club), facts (runs, first since, milestones; Insights feature), season_stats (the current season per league: home/away records, goals, clean sheets, biggest win and defeat, xG over matches_with_xg, home attendance over matches_with_attendance, the team's rank per metric), transfers (the latest 20), honours (titles and runners-up with sources), injuries (players out for coming matches: type, expected_return null = not known, never guess one; matches_missed a lower bound when matches_missed_complete is false). For an MLB, NBA, WNBA, NHL or NFL team, injuries returns its current injury report and season_stats its season statistics instead of the profile.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (see list_sports; not tennis)"
},
"team_id": {
"type": [
"integer",
"string"
],
"description": "team code (or number) from find_teams or a match"
},
"squad": {
"type": "boolean",
"description": "also return the squad (players)"
},
"injuries": {
"type": "boolean",
"description": "return the team's injury report instead (MLB, NBA, WNBA, NHL, NFL); soccer: added as injuries (players out for its coming matches with type, expected_return, matches_missed); needs the injuries feature"
},
"coach": {
"type": "boolean",
"description": "soccer: also return coach: the head coach with appointment date, record since, previous coach and previous club"
},
"season_stats": {
"type": "boolean",
"description": "return the team's current season statistics instead (MLB, NBA, WNBA, NHL, NFL); soccer: added as season_stats (per league, computed from our matches)"
},
"facts": {
"type": "boolean",
"description": "soccer: also return facts: current runs, runs its last match ended, first since, record, table, next match stakes, player milestones (needs the insights feature)"
},
"transfers": {
"type": "boolean",
"description": "soccer: also return the team's latest 20 transfers in and out (more: get_transfers)"
},
"honours": {
"type": "boolean",
"description": "soccer: also return honours: titles and runners-up per competition, each with its source (provider: the profile's trophy list, every competition, can lag the latest season; wikipedia: league tables of the last 10 seasons) and disagreements, seasons the sources tell apart: report both, never pick one silently"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"sport",
"team_id"
],
"additionalProperties": false
}🟢get_team_briefing(sport, team_id, format, lang)
Ready briefing for one team (any sport but cricket; for tennis a player): form, streaks (overall, home, away; streak_season_best: the longest of the season), home and away record, table place and gaps, last and next match, congestion (games_last_7d, games_last_14d in every competition, rest_days from the last match to the next), injuries (soccer); what its last match ended (runs; soccer: first_since_* waits); soccer player milestones for the club (debut, first goal, 50/100/150 league appearances, 25/50/75 league goals, milestone_next before the next match; only when our statistics hold the whole season); each also as a sentence (lang de, es, it, fr). Facts only. Insights feature.
Input Schema
{
"type": "object",
"properties": {
"sport": {
"type": "string",
"description": "sport (default soccer); for tennis the id is a player id"
},
"team_id": {
"type": [
"integer",
"string"
],
"description": "team code (or number) from find_teams or a match (tennis: player id)"
},
"format": {
"type": "string",
"description": "md for a short Markdown text instead of JSON"
},
"lang": {
"type": "string",
"description": "language of team, league and country names: de, es, it or fr (default English)"
}
},
"required": [
"team_id"
],
"additionalProperties": false
}🟢get_transfers(league_id, team_id, direction, season, window, ...)
Soccer transfers from player profiles: player, from and to team, date, season, window (summer, winter, other by the date), type (transfer, loan, loan_return, free, promoted, swap, unknown) and fee_eur where the feed gives an amount (often null: say the fee is not known, never 0). Filter by league (moves in or out of its current teams), team (direction in or out), season and window; sort by fee for the biggest moves. Moves dated after today (mostly planned loan ends) are left out; planned true returns only those. Profiles are re-read every 30 days, so the latest moves can be missing.
Input Schema
{
"type": "object",
"properties": {
"league_id": {
"type": [
"integer",
"string"
],
"description": "moves in or out of this league's current teams"
},
"team_id": {
"type": [
"integer",
"string"
],
"description": "moves of this team"
},
"direction": {
"type": "string",
"description": "with team_id: in or out (default both)"
},
"season": {
"type": "string",
"description": "2026-27 (1 June to 31 May) or 2026 (calendar year)"
},
"window": {
"type": "string",
"description": "summer (1 June-5 September), winter (1 January-3 February) or other"
},
"sort": {
"type": "string",
"description": "date (default, latest first) or fee (highest first)"
},
"planned": {
"type": "boolean",
"description": "true: only agreed moves dated after today (mostly loan ends); default: moves up to today"
},
"limit": {
"type": "integer",
"description": "maximum results (default 20, max 100)"
}
},
"additionalProperties": false
}🟢list_sports
Sports available, with whether each has upcoming matches. Free. Horse racing has its own tools (get_races, get_race, get_race_briefing, find_horses, get_runner_form), motorsport too (get_motorsport_events, get_motorsport_event; get_standings with sport motorsport), MMA (get_mma_events, get_mma_event, get_mma_fighter), golf (get_golf_tournaments, get_golf_leaderboard, get_golf_player; get_standings with sport golf), snooker and darts (get_snooker_darts_tournaments, get_snooker_darts_tournament, get_snooker_darts_player; get_standings with sport snooker or darts), boxing (get_boxing_events, get_boxing_event, get_boxing_fighter; get_standings with sport boxing for the current world champions).
Input Schema
{
"type": "object",
"additionalProperties": false
}Community
Evidence