sportsdata-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPORTSDATA_MCP_CONFIG | No | Path to a configuration file. | |
| SPORTSDATA_MCP_GROUPS | No | Comma-separated list of enabled tool groups; overrides config file. | |
| SPORTSDATA_MCP_MAX_BYTES | No | Global response-size cap in bytes (0 = no cap). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_available_groupsA | List every tool group across all providers, which are currently enabled, and each provider's auth requirements (env-var names + required/optional). On a fresh install (no groups enabled) this is the only functional tool, so the model can guide the user to enable what they want in sportsdata-mcp.yaml. |
| list_tools_by_capabilityA | Discover tools by capability — the unit of cross-provider comparison. Given a slug like 'sport.event_markets', returns every enabled tool exposing it across providers. Pass no argument for the full capability → tools map. |
| afl_competitions_listA | List all AFL competitions (AFL, AFLW, VFL, SANFL, …). Returns: {meta:{pagination}, competitions:[{id, providerId, code, name}]} Example: All 16 competitions {"pageSize": 50} Auth: none needed. |
| afl_competition_getA | Get a single competition by integer id. Returns: {meta, competitions:[{id, providerId, code, name}]} Auth: none needed. |
| afl_compseasons_listA | List comp seasons across all competitions (2012–present). Returns: {meta:{pagination}, compSeasons:[{id, providerId, name, competition, season}]} Auth: none needed. |
| afl_competition_compseasonsA | List comp seasons within one competition. Returns: {meta, compSeasons:[...]} Auth: none needed. |
| afl_compseason_getA | Get a single comp season (embeds its full rounds array + currentRoundNumber). Returns: {meta, compSeasons:[{id, providerId, name, shortName, season, rounds:[...], currentRoundNumber}]} Auth: none needed. |
| afl_rounds_listA | List rounds for a comp season (incl. byes, start/end times). Returns: {rounds:[{id, providerId, roundNumber, abbreviation, byes, utcStartTime, utcEndTime}]} Auth: none needed. |
| afl_ladders_getA | Competition ladder up to a comp season's current round. Returns: {compSeason, round, ladders:[{entries:[{position, team, played, thisSeasonRecord}]}]} Example: 2026 AFL ladder {"compSeasonId": 85} Auth: none needed. |
| afl_seasons_listB | List calendar-year season records. Returns: {meta, seasons:[{id, year}]} Auth: none needed. |
| afl_season_getA | Get a single calendar-year season by id. Returns: {meta, seasons:[{id, year}]} Auth: none needed. |
| afl_clubs_listA | List AFL/AFLW clubs (32). Returns: {clubs:[{id, providerId, name, abbreviation, nickname}]} Auth: none needed. |
| afl_club_getA | Get a single club by id. Returns: {clubs:[{id, providerId, name}]} Auth: none needed. |
| afl_teams_listA | List teams (150 incl. AFL men, AFLW, state leagues, historical). Returns: {teams:[{id, providerId, name, abbreviation, nickname, club, teamType, metadata}]} Auth: none needed. |
| afl_team_getA | Get a single team by id (incl. social/home-venue metadata). Returns: {teams:[{id, providerId, name, club, teamType, metadata}]} Auth: none needed. |
| afl_teams_idmapA | Map CD_T* team providerIds to integer aflapi ids (and vice versa). Returns: {entityType:'team', idMapResponse:{ids:{'CD_T10':1, ...}}} Auth: none needed. |
| afl_venues_listA | List venues (191) incl. location, state, timezone, landOwner. Returns: {venues:[{id, providerId, name, location, state, timezone, landOwner}]} Auth: none needed. |
| afl_venue_getA | Get a single venue by id. Returns: {venues:[{id, providerId, name, location, state, timezone}]} Auth: none needed. |
| afl_players_listA | List players (17k+ all-time catalogue). Returns: {players:[{id, providerId, firstName, surname, dateOfBirth, draftYear, heightInCm}]} Auth: none needed. |
| afl_player_getA | Get a single player by id (bio, draft, height/weight). Returns: {players:[{id, providerId, firstName, surname, draftYear, debutYear, recruitedFrom}]} Auth: none needed. |
| afl_matches_listA | List matches with filters (competition, season, round, team, status, date). Returns: {meta:{pagination}, matches:[{id, providerId, round, home, away, venue, utcStartTime, status}]} Example: Live + upcoming AFL matches from a date {"status": "L,U", "startDate": "", "competitionId": "1"} Auth: none needed. |
| afl_match_getA | Get a single match by integer id (teams, venue, time, score when started). Returns: {meta, matches:[{id, providerId, home, away, venue, utcStartTime, status, score?}]} Auth: none needed. |
| afl_matches_idmapA | Map every match providerId (CD_M*) to its integer id (~48 KB). Returns: {entityType:'match', idMapResponse:{ids:{'CD_M20260141201':8139, ...}}} Auth: none needed. |
| afl_players_idmapA | Map every player providerId (CD_I*) to its integer id (~98 KB, 17k+). Returns: {entityType:'player', idMapResponse:{ids:{...}}} Auth: none needed. |
| afl_broadcast_regionsA | List broadcast regions (26) with timezones. Returns: {pageInfo, content:[{id, name, timezone}]} Auth: none needed. |
| afl_broadcast_region_getA | Get a single broadcast region by id. Returns: {id, name, timezone} Auth: none needed. |
| afl_broadcasters_listA | List broadcasters (49: Foxtel, Channel 7, BBC, ESPN, …). Returns: {pageInfo, content:[{id, name, abbreviation, logo, restrictedCountries}]} Auth: none needed. |
| afl_broadcast_channelsA | List broadcast channels (272) with media types (VIDEO/AUDIO/TEXT). Returns: {pageInfo, content:[{id, name, abbreviation, broadcaster, channelTypes:[{name, mediaType}]}]} Auth: none needed. |
| afl_broadcast_eventsA | Broadcast schedule — one entry per match per channel. Returns: {pageInfo, content:[{id, name, startDateTime, channels:[...], contentReference:{id, type}}]} Auth: none needed. Also answers this: espn_core_call, pl_broadcasting_events, pl_broadcast_match_events. |
| afl_broadcast_event_getA | Get a single broadcast event by id. Returns: {id, name, startDateTime, channels:[...], contentReference} Auth: none needed. Also answers this: espn_core_call, pl_broadcasting_events, pl_broadcast_match_events. |
| afl_broadcast_match_eventsB | Broadcast events scoped to one (compseason, round). Returns: {pageInfo, content:[{id, name, startDateTime, channels}]} Auth: none needed. Also answers this: espn_core_call, pl_broadcasting_events, pl_broadcast_match_events. |
| afl_live_videoA | Live AFL video streams (empty when no game is live). Returns: {pageInfo, content:[{id, name, channels:[{streamUrl, type:'LIVE'}]}]} Auth: none needed. Also answers this: cricketaustralia_streams, entain_video_channels, pointsbet_inplay_streaming. |
| afl_live_audioA | Live AFL audio streams (empty when no game is live). Returns: {pageInfo, content:[{id, name, channels:[...]}]} Auth: none needed. Also answers this: openf1_team_radio. |
| afl_content_text_listA | List text articles (news) with reference/tag filters. Returns: {pageInfo, content:[{id, type:'text', title, date, tags, references, body, author}]} Example: AFL+AFLW news index {"referenceExpression": "(AFL_COMPETITION:1) or (AFL_COMPETITION:3)", "tagExpression": "("News")", "limit": 17} Auth: none needed. |
| afl_content_text_getA | Get a single text article by id. Returns: {id, type:'text', title, body, author, references, tags} Auth: none needed. |
| afl_content_video_listA | List video content (highlights, replays, press conferences). Returns: {pageInfo, content:[{id, type:'video', title, duration, onDemandUrl, additionalInfo}]} Auth: none needed. |
| afl_content_video_getA | Get a single video content item by id. Returns: {id, type:'video', title, duration, onDemandUrl} Auth: none needed. |
| afl_content_photo_listA | List photo content. Returns: {pageInfo, content:[{id, type:'photo', title, leadMedia}]} Auth: none needed. |
| afl_content_photo_getA | Get a single photo content item by id. Returns: {id, type:'photo', title} Auth: none needed. |
| afl_content_promo_listA | List promo / marketing cards (each embeds a links[] of CTAs). Returns: {pageInfo, content:[{id, type:'promo', title, links:[{promoUrl, linkText}]}]} Auth: none needed. |
| afl_content_promo_getA | Get a single promo content item by id. Returns: {id, type:'promo', title, links:[...]} Auth: none needed. |
| afl_keyserver_url_signingA | Sign an AFL HLS video URL for playback (returns a token-signed CDN URL). Returns: {signedUrl} (anonymous tokens may return {code: KEYSERVER001, status: 401}) Auth: none needed. Also answers this: cricketaustralia_streams, entain_video_channels, pointsbet_inplay_streaming. |
| afl_cfs_callA | Call any of the AFL CFS premium operations (api.afl.com.au/cfs/afl/...). Requires the anonymous x-media-mis-token (minted automatically). Path params use provider IDs (CD_M*/CD_R*/CD_S*/CD_I*/CD_T*) — map integer ids via the idmap endpoints/resources. Read afl://cfs/operations for the full op list. Returns: (JSON object) Auth: none needed. |
| afl_statspro_callA | Call any of the AFL StatsPro operations (api.afl.com.au/statspro/...). Requires the anonymous x-media-mis-token (minted automatically). Path params use provider IDs (CD_S*/CD_R*/CD_I*). Read afl://statspro/operations for the list. Returns: (JSON object) Auth: none needed. |
| apisports_statusA | Your subscription and how much of today's quota is left. Costs no quota — call it first when something returns empty. Returns: {response:{account:{firstname, lastname, email}, subscription:{plan, end, active}, requests:{current, limit_day}}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Quota check Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_leaguesA | Football leagues and cups worldwide, with the seasons available on your plan. Returns: {response:[{league:{id, name, type:'League'|'Cup', logo}, country:{name, code, flag}, seasons:[{year, start, end, current, coverage:{fixtures:{events, lineups, statistics_fixtures}, standings, players, odds, predictions}}]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: English competitions {"country": "England"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_fixturesA | Football fixtures and results by date, league or team. Give at least one filter. Returns: {results, response:[{fixture:{id, date, timestamp, venue:{name, city}, status:{long, short, elapsed}}, league:{id, name, country, season, round}, teams:{home:{id, name, winner}, away:{…}}, goals:{home, away}, score:{halftime, fulltime, extratime, penalty}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's fixtures {"date": "2024-08-17"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_standingsA | League table. Both Returns: {response:[{league:{id, name, standings:[[{rank, team:{id, name}, points, goalsDiff, group, form, status, description, all:{played, win, draw, lose, goals:{for, against}}, home:{…}, away:{…}}]]}}]} — SHAPE FROM VENDOR DOCS. NOTE the DOUBLE nesting: NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Premier League table {"league": 39, "season": 2023} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_teamsA | Clubs, by league/season, country, or name search. Returns: {response:[{team:{id, name, code, country, founded, national, logo}, venue:{id, name, address, city, capacity, surface}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Search a club {"search": "Arsenal"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_playersA | Player season statistics for a team or league. Returns: {paging:{current, total}, response:[{player:{id, name, age, nationality, height, weight, injured, photo}, statistics:[{team, league, games:{appearences, lineups, minutes, position, rating}, goals:{total, assists, conceded, saves}, shots, passes, tackles, duels, dribbles, fouls, cards, penalty}]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A club's squad statistics {"team": 42, "season": 2023} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_fixture_statisticsA | Team match statistics for one fixture — shots, possession, corners, and expected goals where covered. Returns: {response:[{team:{id, name}, statistics:[{type:'Shots on Goal'|'Ball Possession'|'expected_goals'|…, value}]}]} — SHAPE FROM VENDOR DOCS. NOTE this is LONG format keyed by a HUMAN-READABLE NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One fixture's team stats {"fixture": 1035037} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_h2hA | Every past meeting between two clubs. Returns: {response:[{fixture, league, teams, goals, score}]} — same fixture shape as apisports_football_fixtures. SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Two clubs' history {"h2h": "33-34", "last": 10} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_oddsA | Pre-match odds from many bookmakers for a fixture or league. Returns: {response:[{fixture, league, update, bookmakers:[{id, name, bets:[{id, name:'Match Winner', values:[{value:'Home', odd:'1.85'}]}]}]}]} — SHAPE FROM VENDOR DOCS. ODDS ARE STRINGS, not numbers. For AU markets the direct providers here (sportsbet, tab, pointsbet) are deeper and live. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One fixture's odds {"fixture": 1035037} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_football_predictionsA | The vendor's own model prediction for a fixture, with the comparison data behind it. Returns: {response:[{predictions:{winner:{id, name, comment}, win_or_draw, under_over, goals:{home, away}, advice, percent:{home, draw, away}}, league, teams, comparison:{form, att, def, poisson_distribution, h2h, goals, total}, h2h:[…]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A fixture's prediction {"fixture": 1035037} Auth: needs your own key in API_SPORTS_KEY. Also answers this: squiggle_tips, squiggle_ladder. |
| apisports_basketball_gamesA | Basketball games worldwide (NBA, EuroLeague, NBL and many more) by date or league. Returns: {response:[{id, date, status:{long, short}, league:{id, name, season}, teams:{home, away}, scores:{home:{quarter_1, quarter_2, quarter_3, quarter_4, over_time, total}, away:{…}}}]} — SHAPE FROM VENDOR DOCS. Note NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": "2024-01-15"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_basketball_standingsA | Basketball standings for a league and season. Returns: {response:[[{position, team, league, group:{name}, games:{played, win:{total, percentage}, lose:{…}}, points:{for, against}, form}]]} — SHAPE FROM VENDOR DOCS. Double-nested like football's. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A league table {"league": 12, "season": "2023-2024"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_baseball_gamesA | Baseball games (MLB, NPB, KBO and others) by date or league. Returns: {response:[{id, date, status, league, teams, scores:{home:{hits, errors, innings:{'1','2',…, extra}, total}, away:{…}}}]} — SHAPE FROM VENDOR DOCS. Innings are keyed by NUMBER-AS-STRING. For MLB itself, the keyless official NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": "2024-07-04"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_hockey_gamesA | Ice-hockey games (NHL, KHL, SHL and others) by date or league. Returns: {response:[{id, date, status, league, teams, scores:{home, away}, periods:{first, second, third, overtime, penalties}}]} — SHAPE FROM VENDOR DOCS. For the NHL itself the keyless official NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": "2024-01-15"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_nfl_gamesA | American-football games (NFL, NCAA) by date, season or team. Returns: {response:[{game:{id, stage, week, date:{date, time, timezone}, status}, league, teams, scores:{home:{quarter_1,…, total}, away:{…}}}]} — SHAPE FROM VENDOR DOCS. NOTE this host wraps the identity under NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A week of NFL {"league": 1, "season": 2023} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_rugby_gamesA | Rugby games (Six Nations, Super Rugby, NRL, Premiership) by date or league. The catalogue's only rugby-union coverage. Returns: {response:[{id, date, time, status, league, teams, scores:{home, away}, periods:{first, second, overtime}}]} — SHAPE FROM VENDOR DOCS. For the NRL specifically, the keyless NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": "2024-03-09"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_formula1_racesA | Formula 1 races and sessions for a season. Returns: {response:[{id, competition:{id, name, location}, circuit:{id, name}, season, type, laps:{current, total}, distance, timezone, date, status}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A season's races {"season": 2023} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_mma_fightsA | MMA fights (UFC and others) by date or season. Returns: {response:[{id, date, slug, category, status, is_main, fighters:{first:{id, name, winner}, second:{…}}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A card {"date": "2024-03-09"} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_handball_gamesA | Handball games (EHF Champions League, Bundesliga, LNH and others) by date or league. Returns: {response:[{id, date, time, status, league, teams, scores:{home, away}, periods:{first, second}}]} — SHAPE FROM VENDOR DOCS. Handball scores run to 25-35 per side; a value under 10 usually means the match is still in the first half, not a low-scoring game. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": ""} Auth: needs your own key in API_SPORTS_KEY. |
| apisports_volleyball_gamesA | Volleyball games (Italian SuperLega, Polish PlusLiga, CEV and others) by date or league. Returns: {response:[{id, date, status, league, teams, scores:{home, away}, periods:{first, second, third, fourth, fifth}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": ""} Auth: needs your own key in API_SPORTS_KEY. |
| apitennis_eventsA | Event types the API covers (ATP singles, WTA doubles, ITF, …). Returns: {success:1, result:[{event_type_key, event_type_type:'Atp Singles'}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Event types {"method": "get_events"} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_tournamentsA | Tournaments, optionally for one event type. Returns: {success:1, result:[{tournament_key, tournament_name, event_type_key, event_type_type}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: All tournaments {"method": "get_tournaments"} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_fixturesA | Matches in a date range, with scores and set-by-set detail once played. Returns: {success:1, result:[{event_key, event_date, event_time, event_first_player, first_player_key, event_second_player, second_player_key, event_final_result:'2 - 0', event_status, tournament_name, tournament_round, scores:[{score_first, score_second, score_set}], pointbypoint:[…]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's matches {"method": "get_fixtures", "date_start": "2025-01-20", "date_stop": "2025-01-20"} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_livescoreA | Matches in progress right now, with live scores. Returns: {success:1, result:[{event_key, event_first_player, event_second_player, event_game_result, event_serve, event_status, scores:[…]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Live matches {"method": "get_livescore"} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_standingsA | ATP or WTA rankings. Returns: {success:1, result:[{place, player, player_key, league, movement, country, points}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: ATP rankings {"method": "get_standings", "event_type": "ATP"} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_playersA | One player's profile and recent results. Returns: {success:1, result:[{player_key, player_name, player_country, player_bday, player_logo, stats:[{season, type, rank, titles, matches_won, matches_lost, hard_won, clay_won, grass_won}]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One player {"method": "get_players", "player_key": 1905} Auth: needs your own key in API_TENNIS_KEY. |
| apitennis_h2hA | Head-to-head history between two players, plus each one's recent form. Returns: {success:1, result:{H2H:[{event_key, event_date, event_first_player, event_second_player, event_final_result, tournament_name}], firstPlayerResults:[…], secondPlayerResults:[…]}} — SHAPE FROM VENDOR DOCS. Note NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Two players' H2H {"method": "get_H2H", "first_player_key": 1905, "second_player_key": 1903} Auth: needs your own key in API_TENNIS_KEY. |
| balldontlie_nba_teamsA | All 30 NBA franchises with conference and division. Returns: {data:[{id, conference, division, city, name, full_name, abbreviation}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Every NBA team Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nba_playersA | NBA players, searchable by name. Returns: {data:[{id, first_name, last_name, position, height, weight, jersey_number, college, country, draft_year, draft_round, draft_number, team:{…}}], meta:{next_cursor, per_page}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Search a player {"search": "curry"} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nba_gamesA | NBA games by date, season or team. Returns: {data:[{id, date, season, status, period, time, postseason, home_team_score, visitor_team_score, home_team:{…}, visitor_team:{…}}], meta:{next_cursor}} — SHAPE FROM VENDOR DOCS. Note the away side is NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One date's games {"dates": ["2024-01-15"]} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nba_statsA | Per-player, per-game NBA box-score lines. Returns: {data:[{id, min:'34:12', fgm, fga, fg_pct, fg3m, fg3a, ftm, fta, oreb, dreb, reb, ast, stl, blk, turnover, pf, pts, player:{…}, team:{…}, game:{…}}], meta:{next_cursor}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A player's game lines {"player_ids": ["115"], "seasons": ["2023"]} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nba_season_averagesA | Season averages for specific NBA players. Returns: {data:[{player_id, season, games_played, min, pts, reb, ast, stl, blk, turnover, fg_pct, fg3_pct, ft_pct}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A player's season {"season": 2023, "player_ids": ["115"]} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nba_standingsA | NBA standings for a season. Returns: {data:[{team:{…}, conference_record, conference_rank, division_record, division_rank, wins, losses, home_record, road_record, season}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A season's standings {"season": 2023} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_nfl_gamesA | NFL games by season, week or team. Returns: {data:[{id, visitor_team_score, home_team_score, season, postseason, status, date, week, home_team, visitor_team}], meta:{next_cursor}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A season's games {"seasons": ["2023"]} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_mlb_gamesA | MLB games by date, season or team. (For MLB alone, the keyless official Returns: {data:[{id, date, season, postseason, home_team_score, away_team_score, home_team, away_team, venue, status}], meta:{next_cursor}} — SHAPE FROM VENDOR DOCS. NOTE: NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One date's games {"dates": ["2024-07-04"]} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_epl_teamsA | Premier League clubs for a season. Returns: {data:[{id, name, short_name, abbr, city, stadium}]} — SHAPE FROM VENDOR DOCS. The keyless official NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: EPL clubs {"season": 2023} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| balldontlie_epl_gamesA | Premier League fixtures and results. Returns: {data:[{id, week, kickoff, home_team, away_team, home_score, away_score, status, ground}], meta:{next_cursor}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A season's fixtures {"season": 2023} Auth: needs your own key in BALLDONTLIE_API_KEY. |
| betfair_market_pricesB | Exchange back/lay prices + state for one or more markets (the core odds feed). Returns: {currencyCode, eventTypes:[{eventTypeId, eventNodes:[{eventId, event:{eventName, countryCode, openDate}, marketNodes:[{marketId, state:{inplay, status}, description, runners:[{...prices: back/lay}]}]}]}]} Example: Price two markets {"marketIds": "1.258654642,1.258653584"} Auth: none needed. |
| betfair_markets_by_eventA | Market STRUCTURE for an event (market ids, names, runners) — probed live 2026-07-06: this route STRIPS exchange prices (runners come back without the exchange block) and 400s on multi-id batches. For prices, feed the market ids into betfair_market_prices; for bulk market-id discovery, betfair_navigation with attachments=MENU,EVENT,MARKET returns 1000+ MARKET nodes per event type in one call. Returns: {currencyCode, eventTypes:[{eventNodes:[{eventId, event:{eventName}, marketNodes:[{marketId, description:{marketType}, state, runners:[{...prices}]}]}]}]} Auth: none needed. |
| betfair_cashoutB | Cash-out availability for one or more markets. Returns: [{marketId, cashout, partial}] (top-level array) Auth: none needed. |
| betfair_navigationA | Navigation graph by node — traverse sport → group → event → market. Feed market ids into betfair_market_prices. Returns: {nodes:[{nodeId, name, nodeType: EVENT_TYPE|MENU|EVENT|MARKET, navInfo, ...}]} Example: Top of the Horse Racing tree {"nodeIds": "EVENT_TYPE:7"} Auth: none needed. |
| betfair_scoresA | Live scores for one or more in-play events (per-sport score detail). Returns: [{eventId, eventTypeId, score:{home:{name, score, ...}, away:{...}}}] (top-level array) Auth: none needed. |
| betfair_event_detailsB | In-play event details (event name, competition, primary market, runners, start time) for one or more events. Returns: [{eventId, eventTypeId, marketId, marketName, eventName, competitionName, numberOfRunners, countryCode, startTime}] (top-level array) Auth: none needed. |
| betfair_event_timelineA | Live timeline + running score/state for one in-play event. Returns: {eventId, eventTypeId, score:{home:{name, score, numberOfYellowCards, ...}, away:{...}}, timeElapsed, ...} Auth: none needed. |
| betfair_event_timelinesA | Live timelines + running scores for several in-play events at once (batch). Returns: [{eventId, eventTypeId, score:{home:{name, score, halfTimeScore, fullTimeScore}, away:{...}}}] (top-level array) Auth: none needed. |
| betfair_scores_broadcastA | Live scores plus broadcast/streaming availability for one or more events. Returns: [{eventId, startTime, state:{score:{...}}, broadcast:{...}}] (top-level array) Auth: none needed. |
| betr_next5_racesA | Next races about to jump, with time-to-jump, for a race-type + country filter. Returns: {Items:[{Race:{EventId, Venue, RaceNo, AdvertisedStartTime, StateCode}, TimeToJump, SecondsToJump, EventType}]} Auth: none needed. |
| betr_todays_racesA | Today's races grouped by code (Thoroughbred / Greyhound / Harness), for the homepage. Returns: {Throughbred:[{VenueId, Venue, Race1:{EventId, RaceNumber, AdvertisedStartTime, SecondsToJump}}], Greyhound:[...], Harness:[...]} Auth: none needed. |
| betr_grouped_racecardA | All meetings + their races for a day offset, grouped by code. Returns: {Thoroughbred:[[{EventId, Venue, CountryCode, RaceNumber, AdvertisedStartTime, HasFixedMarkets}]], Greyhounds:[...], Trots:[...]} Example: Today's meetings {"DaysToRace": 0} Auth: none needed. |
| betr_raceA | Full racecard for one race: runners, prices, allowed bet types, results once run. Returns: {EventId, EventName, AllowedWinBetTypes:[{MarketTypeCode, DividendTypeCode}], ...runners + prices} Auth: none needed. |
| betr_race_formA | Detailed form guide for one race (runner history, comments, ratings). Returns: {RaceFormV2:{RaceNo, RaceName, NumberOfRunners, Distance, Course, RaceComment, Runners:[...]}} Auth: none needed. |
| betr_race_flucsA | Price fluctuation history per runner for one race (fixed-odds movements). Returns: {Items:[{OutcomeId, Flucs:[{Offset, Price}]}]} Auth: none needed. |
| betr_market_moversA | Racing market movers — runners whose fixed prices are shortening/drifting. Returns: {Items:[{EventId, EventName, Venue, RaceNumber, SecondsToJump, AdvertisedStartTime}]} Auth: none needed. |
| betr_fav4A | Featured 'Fav 4' upcoming races for a race-type filter. Returns: {Items:[{EventId, MasterEventId, Venue, RaceNumber, BettingCloseTimeUtc, TimeToJump}]} Auth: none needed. |
| betr_event_typesA | All event types (sports + racing) with event counts and SGM availability. Returns: {Items:[{EventTypeId, EventTypeDesc, EventCount, HasSameGameMulti, MasterEventTypeId}]} Auth: none needed. |
| betr_master_categoryA | Master categories (competitions) for one event type, optionally with levelled markets. Returns: {EventTypeDesc, EventTypeId, MasterCategories:[{MasterCategoryId, MasterCategory, Categories:[{CategoryId, CategoryName}]}]} Example: Basketball competitions {"EventTypeId": 107} Auth: none needed. |
| betr_sports_categoryA | Events + markets for one sport category (competition). Returns: {EventTypeDesc, EventTypeId, MasterCategories:[{Categories:[{CategoryId, CategoryName, Events:[...]}]}]} Auth: none needed. |
| betr_master_eventA | One sport match's markets by master event id — a market GROUP per call (Events[].Outcomes[] with prices; GroupLinks names the other groups: totals, lines, race-to, periods). Returns: {MasterEvent:{MasterEventId, MasterEventName, CategoryId, MinAdvertisedStartTime, IsLive, IsOpenForBetting}, Events:[{EventId, EventName, Outcomes:[{OutcomeName, Price, MarketTypeCode, MarketDesc, Points}]}], GroupLinks:[{GroupTypeCode, GroupName}]} Auth: none needed. |
| betr_pop_sgm_categoryA | Categories that currently have Popular Same Game Multis. Returns: {PopSGMCategoryItems:[{EventTypeId, MasterCategoryName, CategoryId, CategoryName}]} Auth: none needed. |
| betr_pop_sgm_bet_dataA | Popular Same Game Multi suggestions for one master event. Returns: {PopSGMBetItems:[{legs:[{selectionName, price}], price}]} Auth: none needed. |
| betr_statwars_eventsA | Statwars master events (head-to-head stats promo events). Returns: {Items:[{EventTypeId, EventTypeDesc, MasterEventId, MasterEventName, MinAdvertisedStart}]} Auth: none needed. |
| betr_promotionsA | Active promotions with metadata (title, end date, linked master events). Returns: {MetaData:[{PromotionId, Title, PromotionEndDate, MasterEventId:[...]}]} Auth: none needed. |
| betr_all_promotionsA | All visible promotions (name, description, dates). Returns: {Promotions:[{Id, PromotionId, Name, Description, PromotionStartDate}]} Auth: none needed. |
| betr_featured_racingA | Editorially featured racing events (carousel order, promo titles). Returns: {ContentfulFeaturedEvent:[{EventOrder, EventID, EventName, PromotionTitle}]} Auth: none needed. |
| betr_popular_market_linksA | Popular market quick-links (specials, featured competitions) for navigation. Returns: {Items:[{PopularMarketName, EventTypeId, EventType, MasterEventId, CategoryId}]} Auth: none needed. |
| cfbd_teamsA | FBS/FCS programmes with conference, venue and colours. Returns: [{id, school, mascot, abbreviation, conference, division, color, alt_color, logos:[url], location:{venue_id, name, city, state, capacity, grass, dome}}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: SEC programmes {"conference": "SEC"} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_gamesA | Games for a season with scores, venue and attendance. Returns: [{id, season, week, season_type, start_date, neutral_site, conference_game, venue, home_team, home_points, home_line_scores:[…], away_team, away_points, excitement_index, home_post_win_prob}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 week 1 {"year": 2024, "week": 1} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_rankingsA | Weekly poll rankings (AP, Coaches, Playoff Committee). Returns: [{season, seasonType, week, polls:[{poll:'AP Top 25', ranks:[{rank, school, conference, firstPlaceVotes, points}]}]}] — SHAPE FROM VENDOR DOCS. Note polls are NESTED inside each week entry. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 week 10 polls {"year": 2024, "week": 10} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_ratings_spA | SP+ ratings — the headline predictive rating for college football, split by offence and defence. Returns: [{year, team, conference, rating, ranking, offense:{ranking, rating, success, explosiveness}, defense:{…}, specialTeams:{rating}}] — SHAPE FROM VENDOR DOCS. Defensive ratings are better when LOWER. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 SP+ {"year": 2024} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_ratings_eloA | Elo ratings by team and week. Returns: [{year, team, conference, elo}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 Elo {"year": 2024} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_betting_linesA | Historical betting lines per game from multiple books — spread, over/under and moneyline. The college-football backtesting dataset. Returns: [{id, season, week, homeTeam, homeScore, awayTeam, awayScore, lines:[{provider:'consensus'|'Bovada'|…, spread, formattedSpread, spreadOpen, overUnder, overUnderOpen, homeMoneyline, awayMoneyline}]}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 week 1 lines {"year": 2024, "week": 1} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_team_season_statsA | Season totals per team across every tracked stat category. Returns: [{season, team, conference, statName, statValue}] — SHAPE FROM VENDOR DOCS. NOTE this is LONG format: one row PER STAT per team, not one row per team. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 team stats {"year": 2024} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_advanced_box_scoreA | Advanced box score for one game: success rate, explosiveness, PPA and field position. Returns: {gameId, teams:{ppa:[…], cumulativePpa:[…], successRates:[…], explosiveness:[…], rushing:[…], havoc:[…], scoringOpportunities:[…], fieldPosition:[…]}} — SHAPE FROM VENDOR DOCS. PPA is CFBD's expected-points-added metric. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One game's advanced box {"id": 401520165} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_recruitingA | Recruiting classes: individual commits with stars, ratings and positions. Returns: [{id, athleteId, recruitType, year, ranking, name, school, committedTo, position, height, weight, stars, rating, city, stateProvince, hometownInfo}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 recruits {"year": 2024} Auth: needs your own key in CFBD_API_KEY. |
| cfbd_portalA | Transfer-portal moves for a season — origin, destination and rating. Returns: [{season, firstName, lastName, position, origin, destination, transferDate, rating, stars, eligibility}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: 2024 portal {"year": 2024} Auth: needs your own key in CFBD_API_KEY. |
| chesscom_playerA | A Chess.com player's profile: name, title, country, league, followers and status. Returns: {player_id, '@id', url, username, name, title, followers, country, location, joined, last_online, status, league, avatar} — Example: One player's profile {"username": "hikaru"} Auth: none needed. |
| chesscom_player_statsA | A player's ratings and records per game type — blitz, bullet, rapid, daily, plus tactics and puzzle rush. Returns: {chess_blitz:{last:{rating, date, rd}, best:{rating, date, game}, record:{win, loss, draw}}, chess_bullet:{…}, chess_rapid:{…}, chess_daily:{…}, tactics:{highest, lowest}, puzzle_rush:{best}, fide} — a key is ABSENT if the player has never played that format Example: Ratings across formats {"username": "hikaru"} Auth: none needed. |
| chesscom_leaderboardsA | Chess.com's leaderboards for every category — live blitz/bullet/rapid, daily, variants and tactics. LARGE (~290 KB). Returns: {live_blitz:[{player_id, username, score, rank, title, country}], live_bullet:[…], live_rapid:[…], daily:[…], daily960:[…], tactics:[…], battle:[…]} — one array per category Example: All leaderboards Auth: none needed. |
| chesscom_titled_playersA | Every player holding a given FIDE title — usernames only. Returns: {players:[username]} — a flat list of USERNAME STRINGS, not objects; feed one to chesscom_player for detail Example: All grandmasters {"title": "GM"} Auth: none needed. |
| chesscom_archivesA | The list of monthly game archives available for a player — call this before asking for a month's games. Returns: {archives:[url]} — URLs ending /games/YYYY/MM; take the year and month from the last entry to fetch the most recent games Example: Which months a player has games for {"username": "hikaru"} Auth: none needed. |
| chesscom_monthly_gamesA | Every game a player finished in one month, with PGN, result, ratings and opening ECO. Returns: {games:[{url, pgn, time_control, time_class, rules, end_time, rated, eco, white:{username, rating, result}, black:{…}}]} — Example: One player-month {"username": "hikaru", "year": "2025", "month": "01"} Auth: none needed. |
| chesscom_clubA | A Chess.com club: description, membership count, admins and average rating. Returns: {'@id', name, club_id, country, average_daily_rating, members_count, created, last_activity, admin:[url], description, url} Example: The developer community club {"club_id": "chess-com-developer-community"} Auth: none needed. |
| cricketaustralia_fixturesA | Match list (the /matches feed) — fixtures with teams, venue, competition, status, toss and result. Filter by competition, completed/live, etc. Returns: {fixtures:[{id, name, startDateTime, gameType, isLive, isCompleted, resultText, competitionId, venueId, homeTeamId, awayTeamId, tossResult, tossDecision}], responseError} Auth: none needed. |
| cricketaustralia_competitionsA | Competition catalogue — series / tournaments with id, name, dates and artwork. Returns: {competitions:[{id, name, url, imageUrl, startDateTime, endDateTime, order}], responseError} Auth: none needed. |
| cricketaustralia_toursA | Tours / series with status flags — each tour groups its competitions and is flagged upcoming / in-progress / completed. The feed behind the site's series navigation. Returns: {tours:[{competitionId, name, startDateTime, endDateTime, isUpComing, isInProgress, isCompleted, competitions:[...], bannerUrl, logoUrl}]} Auth: none needed. |
| cricketaustralia_venueA | Venue detail for one venueId — name, city, country, state, coordinates. Resolve a fixture's venueId (one venue per call). Returns: {venue:{id, name, city, state, countryName, latitude, longitude}, responseError} Auth: none needed. |
| cricketaustralia_teamsA | Team catalogue — id, name, short name, colours, logo/badge URLs across all CA competitions. Returns: {teams:[{id, name, shortName, teamColor, logoUrl, teambadgeImageUrl, isActive}], responseError} Auth: none needed. |
| cricketaustralia_playersA | Player profiles for a batch of player ids — name, DOB, birthplace, batting/bowling hand + type, height, image. Pass a list of playerIds. Returns: {players:[{id, displayName, firstName, lastName, dob, birthPlace, battingHand, bowlingHand, bowlingType, height, imageUrl}], responseError} Auth: none needed. |
| cricketaustralia_standingsA | Competition ladder — per-team played/won/lost/drawn/tied/no-result, points, net run rate. Needs competitionId (empty for competitions without a points table). Returns: {standings:[{competitionId, teamId, groupName, played, won, lost, drawn, matchTied, noResult, points, netRunRate, deductions}], responseError} Auth: none needed. |
| cricketaustralia_scorecardA | Full match scorecard — per-innings batting, bowling and fall-of-wickets, plus the players[] lookup for the fixture. Returns: {fixture:{id, name, innings:[{inningNumber, battingTeamId, bowlingTeamId, batsmen:[...], bowlers:[...], wickets:[...]}]}, fixtureTitle, players:[{id, displayName}], dataSupport, responseError} Auth: none needed. |
| cricketaustralia_runs_graphA | Run-progression (worm/manhattan) data per innings for a fixture — the series behind cricket.com.au's run graphs. Returns: {innings:[{inningNumber, battingTeamId, bowlingTeamId, overs, overnightRuns, overnightWickets, byesRuns, legByesRuns, noBalls}]} Auth: none needed. |
| cricketaustralia_streamsA | Live video stream entries for a fixture (populated during live matches; empty array otherwise). Returns: {streams:[{...stream urls/metadata}], responseError} (streams empty when the match isn't live) Auth: none needed. |
| cricketaustralia_contentA | Pulselive CMS content list by type — VIDEO (highlights/replays), TEXT (articles), AUDIO, or PLAYLIST (curated collections). Paginated. Returns: {pageInfo:{page, pageSize, numPages, numEntries}, content:[{id, type, title, description, date, ...}]} Auth: none needed. |
| cricketaustralia_playlistA | A single Pulselive playlist by id — a curated collection of videos (e.g. a match's highlights playlist). Returns: {id, type, title, description, date, content:[{id, type, title, ...}]} Auth: none needed. |
| cricketdata_current_matchesA | Matches in progress or starting soon, with live scores. Returns: {status:'success', data:[{id, name, matchType:'t20'|'odi'|'test', status, venue, date, dateTimeGMT, teams:[str], teamInfo:[{name, shortname, img}], score:[{r, w, o, inning}], series_id, matchStarted, matchEnded}], info:{hitsToday, hitsLimit}} — SHAPE FROM VENDOR DOCS. Score fields are terse: r runs, w wickets, o overs. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Live and upcoming matches Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_matchesA | All matches, paginated — recent and upcoming across every series. Returns: {status, data:[{id, name, matchType, status, venue, date, teams, teamInfo, series_id, matchStarted, matchEnded}], info:{hitsToday, hitsLimit}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Recent matches Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_match_infoA | One match: toss, venue, teams and result. Returns: {status, data:{id, name, matchType, status, venue, date, dateTimeGMT, teams, teamInfo, score:[{r, w, o, inning}], tossWinner, tossChoice, matchWinner, matchStarted, matchEnded}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One match {"id": ""} Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_scorecardA | Full scorecard: batting and bowling figures per innings. Returns: {status, data:{id, name, scorecard:[{inning, batting:[{batsman:{id, name}, r, b, '4s', '6s', sr, 'dismissal-text'}], bowling:[{bowler:{id, name}, o, m, r, w, eco}], extras, totals}]}} — SHAPE FROM VENDOR DOCS. Cricket abbreviations: r runs, b balls, sr strike rate, o overs, m maidens, w wickets, eco economy. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One match's scorecard {"id": ""} Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_seriesA | Series (tours and tournaments) with their match counts and dates. Returns: {status, data:[{id, name, startDate, endDate, odi, t20, test, squads, matches}], info:{hitsToday, hitsLimit}} — SHAPE FROM VENDOR DOCS. The format counts (odi/t20/test) are how many matches of each type the series holds. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: All series Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_series_infoA | One series with its full match list. Returns: {status, data:{info:{id, name, startdate, enddate, odi, t20, test, squads, matches}, matchList:[{id, name, matchType, status, venue, date, teams}]}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One series {"id": ""} Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_playersA | Search the player catalogue by name. Returns: {status, data:[{id, name, country}], info:{hitsToday, hitsLimit}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Search players {"search": "Kohli"} Auth: needs your own key in CRICKETDATA_API_KEY. |
| cricketdata_player_infoA | One player's profile and career batting/bowling statistics. Returns: {status, data:{id, name, dateOfBirth, role, battingStyle, bowlingStyle, placeOfBirth, country, playerImg, stats:[{fn:'batting'|'bowling', matchtype:'test'|'odi'|'t20i', stat:'m'|'runs'|'avg', value}]}} — SHAPE FROM VENDOR DOCS. NOTE NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One player's career {"id": ""} Auth: needs your own key in CRICKETDATA_API_KEY. |
| dabble_active_competitionsA | Every currently-bettable competition across all sports (~318) — the discovery entry point. Pick any one's Returns: {status, data:{activeCompetitions:[{id, name, sportName, country, featured, location, sportId}]}} Auth: none needed. |
| dabble_competitionsA | Look up competitions by EXACT name ( Returns: {status, data:[{id, name, sportId, country}]} (filtered by name or sportId — empty if the exact name isn't found) Auth: none needed. |
| dabble_sportsA | The 24 sports Dabble offers (Rugby League, Australian Rules, Football, Basketball, Cricket, Tennis, Horse Racing, …), each with id + name. Join sportId from a competition back to its sport here. Returns: {status, data:[{id, name, isRacing, isHidden}]} Auth: none needed. |
| dabble_competition_fixturesA | All fixtures for ONE competition, each embedding its markets + prices (decimal odds) + selections + teams. Get the competitionId from dabble_active_competitions / dabble_competitions (AFL Matches = ad4c78ec-e39d-45ee-8cec-ff5d485a3205, NRL = c709772d-d5d0-4252-af89-be8a163706dc). For the FULL book of one fixture use dabble_fixture_details. Returns: {data:[{id, name, displayName, competitionId, competitionName, advertisedStart, status, inplayAvailable, teams:[{id, name, abbreviation}], markets:[{id, name, resultingType, product, isHandicap, isTotal, isSgmAllowed, status}], selections:[{id, name, marketId, isScratched}], prices:[{marketId, selectionId, price}]}]} ( Example: AFL fixtures with markets + odds {"competitionId": "ad4c78ec-e39d-45ee-8cec-ff5d485a3205"} Auth: none needed. |
| dabble_fixture_detailsA | The FULL book for one fixture — every market (hundreds), all selections + prices, the marketGroups (SGM grouping) and the Pick'em playerProps product. LARGE (~1 MB+ for a major match); fetch one fixture at a time. fixtureId comes from dabble_competition_fixtures. Each market gets an engine-derived Returns: {sportFixtureDetail:{id, name, competitionName, sportName, status, teams, markets:[{id, name, resultingType, product, isSgmAllowed, isSingleAllowed}], selections:[{id, name, marketId}], prices:[{marketId, selectionId, price}], marketGroups, marketGroupMappings, playerProps:[{playerName, stats, value, lineType}]}} (LARGE — markets/selections/prices number in the hundreds-to-thousands. Each market carries an engine-derived Auth: none needed. |
| datagolf_player_listA | Full player list with Data Golf ids (dg_id), name, country, amateur flag. Returns: [{dg_id, player_name, country, country_code, amateur}] (top-level array) Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_scheduleA | Tour schedule — the season's events with dates, courses and locations. Returns: {schedule:[{event_id, event_name, course, course_key, location, country, latitude, longitude, start_date}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_field_updatesA | Current event field — players entered, tee times, withdrawals, current round. Returns: {event_name, event_id, course_name, current_round, date_start, date_end, field:[{dg_id, player_name, ...tee times}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_rankingsA | Data Golf player rankings (top ~500) with skill estimate and OWGR rank. Returns: {last_updated, rankings:[{datagolf_rank, owgr_rank, dg_id, player_name, dg_skill_estimate, country}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_pre_tournamentA | Pre-tournament model predictions — win / top-5/10/20 / make-cut probabilities per player. Returns: {baseline:[{dg_id, player_name, win, top_5, top_10, top_20, make_cut}], baseline_history_fit:[...]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_in_playA | Live (in-play) model predictions during a tournament — current position/score + updated win probabilities. Returns: {data:[{dg_id, player_name, current_pos, current_score, R1, R2, R3, R4, make_cut, win, ...}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_skill_ratingsA | Player skill ratings — strokes-gained components (off-tee, approach, around-green, putting) + driving acc/dist. Returns: {last_updated, players:[{dg_id, player_name, sg_total, sg_ott, sg_app, sg_arg, sg_putt, driving_acc, driving_dist}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_approach_skillA | Detailed approach-play skill per player across yardage/lie buckets — SG per shot, proximity, GIR, good-shot and poor-shot-avoidance rates. Returns: {last_updated, time_period, data:[{dg_id, player_name, ...per-bucket sg/proximity/gir fields}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_live_strokes_gainedA | Live strokes-gained breakdown for every player during PGA Tour events (raw, or relative to the model's pre-round expectations). Returns: {event_name, current_round, last_update, strokes_gained_values, data:[{dg_id, player_name, pos, score, thru, today, R1:{...sg}, R2, R3, R4}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_live_tournament_statsA | Live per-player tournament stats (strokes-gained by category, accuracy, etc.) for the requested round. Returns: {event_name, course_name, last_updated, live_stats:[{dg_id, player_name, sg_total, sg_ott, sg_app, ...}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_pre_tournament_archiveA | Archived pre-tournament predictions for a past event (what the model said beforehand). Returns: {baseline:[{dg_id, player_name, fin_text, win, make_cut, first_round_leader, top_10}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_player_decompositionsA | Per-player skill decomposition for the current event — how each skill (driving, approach, putting, course-fit) contributes to the prediction. Returns: {event_name, course_name, players:[{dg_id, player_name, ...skill/course-fit components}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_fantasy_projectionsA | DFS fantasy-points projections + salaries/ownership for a site + slate. Returns: {event_name, last_updated, projections:[{dg_id, player_name, proj_points, salary, proj_ownership}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_live_hole_statsA | Live per-hole scoring distributions for the in-progress event (avg score, birdie/bogey rates by hole, AM/PM wave). Returns: {courses:[{course_code, course_key, rounds:[{round_num, holes:[{hole, par, avg_score, afternoon_wave:{...}, morning_wave:{...}}]}]}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_outrightsA | Outright (win / top-N / make-cut) odds for the current event across ~13 sportsbooks, plus Data Golf's model line. Returns: {event_name, last_updated, books_offering:[...], odds:[{dg_id, player_name, datagolf:{...}, bet365, pinnacle, draftkings, fanduel, ...}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_matchupsB | Tournament / round / 3-ball matchup odds across sportsbooks, plus Data Golf's model line. Returns: {event_name, market, last_updated, match_list:[{p1_player_name, p2_player_name, odds:{datagolf, bet365, pinnacle, ...}}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_matchups_all_pairingsA | All possible tournament matchup pairings for the current event with Data Golf's model odds (every player-vs-player price). Returns: {event_name, last_update, pairings:[{p1_player_name, p2_player_name, p3_player_name, ...model odds}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_event_listA | List of historical events that have raw round-level data available (event_id + year to pass to the rounds feed). Returns: [{event_id, event_name, tour, calendar_year, date, sg_categories}] (top-level array) Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_roundsA | Historical round-by-round scoring + strokes-gained for every player in a past event. Returns: {event_id, event_name, event_completed, scores:[{dg_id, player_name, fin_text, rounds:[{round_num, score, sg_total, sg_putt, ...}]}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_results_event_listA | List of tournaments with historical event-level results data (finishes/earnings/points) — the id lookup for datagolf_hist_results. Returns: [{event_id, event_name, calendar_year, date}] (top-level array) Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_resultsA | Historical event-level results for a past tournament — finish position, earnings, FedExCup points and DG Points per player. Returns: {event_id, event_name, year, season, event_completed, event_stats:[{dg_id, player_name, fin_text, earnings, fec_points, dg_points}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_odds_event_listA | List of historical events that have archived bookmaker odds available. Returns: [{event_id, event_name, calendar_year, archived_preds, ...}] (top-level array) Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_outrightsA | Historical opening/closing outright odds for a past event from one sportsbook. Returns: {book, event_id, event_name, event_completed, outrights:[{dg_id, player_name, open_odds, close_odds, ...}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_matchupsA | Historical matchup / 3-ball odds for a past event from one sportsbook. Returns: {book, event_id, event_name, event_completed, matchups:[{p1_player_name, p2_player_name, open_odds, close_odds, ...}]} Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_dfs_event_listA | List of historical events with DFS salary/ownership/points data for a site. Returns: [{event_id, event_name, calendar_year, date, dk_salaries, dk_ownerships}] (top-level array) Auth: needs your own key in DATAGOLF_KEY. |
| datagolf_hist_dfs_pointsA | Historical DFS points + salary + ownership per player for a past event. Returns: {event_id, event_name, event_completed, season, dfs_points:[{dg_id, player_name, fin_text, finish_pts, total_pts, salary, ownership}]} Auth: needs your own key in DATAGOLF_KEY. |
| entain_quicklinks_listA | Navigation quick-links (racing/sports nav tiles). Returns: {quick_links:[{id, root_category_id, category_id, url, title, icon, priority}]} Example: Racing quick-links {"filter": {"type": "Racing"}} Auth: none needed. |
| entain_featured_sliderA | Featured slider events (homepage hero carousel). Returns: {items:[{id, title, url, event_id, event:{competition_id, event_start}}]} Auth: none needed. |
| entain_racing_meetingA | All race meetings + races for one date (normalised UUID-keyed tables). Returns: {compounds, domestic_countries, meetings:{}, races:{}, venues:{}} Example: Melbourne card for a given day {"date": "", "timezone": "Australia/Melbourne"} Auth: none needed. |
| entain_racing_next_racesA | Next races about to jump, grouped per racing category. Returns: {category_race_map:{}, race_summaries:{:{race_name, meeting_name, advertised_start, race_form}}} Auth: none needed. |
| entain_racing_racecardA | Full priced racecard for one race — entrants, fixed-odds fluctuations, form. Returns: {status, data:{races:{}, markets:{}, prices:{}, entrants:{}, price_fluctuations:{:[floats — LAST is the live fixed win price]}, meetings:{}}} Example: One priced racecard {"id": "7f553143-1ed4-4ef8-a622-46c7563e6c83"} Auth: none needed. |
| entain_racing_searchA | Racing search facets (barrier/country/jockey/trainer buckets); optional full-text. Returns: {facets:{barrier:{buckets}, country:{buckets}, jockey:{buckets}, trainer:{buckets}}} Auth: none needed. |
| entain_racing_future_marketsB | Legacy v1 racing RPC selector (future-markets races feed). Returns: {status, data:{races:{:{name, advertised_start:{seconds}}}}} Auth: none needed. |
| entain_sport_event_cardA | Complete event card — every market, selection and price for one sport event. Returns: {entrants:{}, events:{}, markets:{}, prices:{}, regions:{}, market_type_groups:{}} Example: One NBA event card {"id": "339e26d0-72a8-49bc-a85f-a2d02c0a1a70"} Auth: none needed. |
| entain_sport_event_requestA | Bulk events + markets + prices for one or more sport categories. Returns: {events:{}, markets:{}, prices:{}, entrants:{}, next_events:[], regions:{}} Auth: none needed. |
| entain_event_market_rulesA | Settlement rules for every named market, indexed by rule id. Returns: {market_rules:{:{id, name, description}}} Auth: none needed. |
| entain_event_market_type_groupsA | Market-tab group definitions for a sport category (lower priority renders first). Returns: {market_type_group:[{id, category_id, name, priority, type}]} Auth: none needed. |
| entain_event_market_type_group_mapsA | Join table between market types and market-type groups (dedup by pair). Returns: {market_type_group_map:[{market_type_id, market_type_group_id, priority}]} Auth: none needed. |
| entain_metadata_by_urlA | SEO metadata (page title) for a given URL path. Returns: {metadata:{title, url}} (empty {} when no override) Auth: none needed. |
| entain_video_channelsA | Racing live-video channels (HLS .m3u8 URLs; verify token expires within minutes). Returns: {channels:[{id, name, url}]} Auth: none needed. |
| entain_cms_entriesA | Contentful CMS entries (promotions, major-event nav) via the www CDN proxy. Returns: {sys, total, skip, limit, items:[{sys, fields}], includes:{}} Example: Active promotions {"content_type": "promotions", "limit": 20} Auth: none needed. |
| entain_graphql_callA | Call any of Entain's 127 persisted GraphQL operations against
api.ladbrokes.com.au/gql/router by name + variables. Hashes are managed
server-side; a PERSISTED_QUERY_NOT_FOUND (gateway APQ-cache eviction) is
self-healed automatically by re-POSTing the stored query document. If it
still surfaces, run Returns: (JSON object) Auth: none needed. |
| entitysport_matchesA | Cricket matches — live, upcoming and completed. Returns: {status:'ok', response:{items:[{match_id, title, short_title, subtitle, format_str:'T20'|'ODI'|'Test', status, status_str, game_state_str, teama:{team_id, name, short_name, scores_full, scores, overs}, teamb:{…}, date_start, venue, toss:{text, winner, decision}}], total_items, total_pages}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Live matches {"status": 3} Auth: needs your own key in ENTITYSPORT_TOKEN. |
| entitysport_match_infoA | One match with squads, toss and current state. Returns: {status:'ok', response:{match_id, title, format_str, status_str, teama, teamb, venue, toss, umpires, referee, players:[…], equation, live}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One match {"matchId": 12345} Auth: needs your own key in ENTITYSPORT_TOKEN. |
| entitysport_match_scorecardA | Full innings-by-innings scorecard. Returns: {status:'ok', response:{innings:[{iid, number, name, batsmen:[{name, batsman_id, runs, balls_faced, fours, sixes, strike_rate, how_out}], bowlers:[{name, overs, maidens, runs, wickets, econ}], extras, equations:{runs, wickets, overs, runrate}, fows:[…], did_not_bat:[…]}]}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One match's scorecard {"matchId": 12345} Auth: needs your own key in ENTITYSPORT_TOKEN. |
| entitysport_match_commentaryA | Ball-by-ball commentary for an innings — the reason to choose this provider over cricketdata. Returns: {status:'ok', response:{commentaries:[{event:'ball'|'overend'|'wicket', over, ball, batsman_id, bowler_id, score, run_str, commentary, noball, wide, byes, legbyes, six, four}]}} — SHAPE FROM VENDOR DOCS. Rows include NON-BALL events ('overend'), so filter on NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: An innings' commentary {"matchId": 12345, "inningsId": 1} Auth: needs your own key in ENTITYSPORT_TOKEN. |
| entitysport_competitionsB | Competitions and tours. Returns: {status:'ok', response:{items:[{cid, title, abbr, category, game_format, status, season, datestart, dateend, total_matches, total_teams}], total_pages}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Live competitions {"status": "live"} Auth: needs your own key in ENTITYSPORT_TOKEN. |
| espn_scoreboardA | Scoreboard for one league: today's (or a given date's) games with status,
clock, live scores and event ids. The fastest way to get the Returns: {leagues:[...], events:[{id, name, status, competitions:[{competitors:[{team, score}]}]}]} Example: Today's NFL scoreboard. {"sport": "football", "league": "nfl"} Auth: none needed. |
| espn_teamsA | Team catalogue for one league: every team with id, name, abbreviation, colours and logos. Use the team ids with espn_site_call (team_roster, team_schedule, …). Returns: {sports:[{leagues:[{teams:[{team:{id, displayName, abbreviation}}]}]}]} Example: All 32 NFL teams. {"sport": "football", "league": "nfl"} Auth: none needed. |
| espn_standingsA | League standings / ladder: per-team wins, losses, win %, conference/division groupings for the current (or a given) season. Returns: {name, children:[{standings:{entries:[{team, stats:[{name, value}]}]}}]} (children = conferences/divisions) Example: Current NBA standings. {"sport": "basketball", "league": "nba"} Auth: none needed. |
| espn_game_summaryA | Full summary for one game: box score, scoring plays, drives/play-by-play,
leaders, win-probability and odds. Returns: {boxscore:{teams, players}, plays:[...], scoringPlays:[...], leaders:[...], winprobability:[...]} Auth: none needed. |
| espn_newsA | League news feed: recent articles (headline, description, links, images, related athletes/teams) for one league. Returns: {header, articles:[{headline, description, published, links, categories}]} Example: Latest NFL news. {"sport": "football", "league": "nfl"} Auth: none needed. |
| espn_site_callA | Gateway to the ESPN site API resource families (site.api.espn.com). Supply an
Returns: (JSON object) Auth: none needed. |
| espn_core_callA | Gateway to the ESPN core data model (sports.core.api.espn.com). The deepest,
most canonical surface: athletes + statistics + career logs, per-event odds /
win-probabilities / plays / situation / broadcasts / predictor / power-index,
per-competitor line-scores + statistics, season teams/coaches/draft/futures,
venues, leaders, rankings, franchises and coaches. NOTE the path uses
Returns: (JSON object) Auth: none needed. |
| espn_web_callA | Gateway to the ESPN web API (site.web.api.espn.com): site-wide search across
teams/athletes/leagues, plus the common/v3 athlete views (overview, stats,
gamelog, splits) that power player profile pages, and statistics-by-athlete.
Returns: (JSON object) Auth: none needed. |
| espn_cdn_callA | Gateway to the ESPN CDN core live feed (cdn.espn.com). Fast, lightly-cached
scoreboard/game/boxscore/playbyplay JSON. The path slug is the LEAGUE, not the
sport ( Returns: (JSON object) Auth: none needed. |
| espnfantasy_gamesA | All five ESPN fantasy games with each one's CURRENT season id and scoring period — call this first to resolve seasonId/scoringPeriodId. Returns: [{abbrev:'FFL', id, name, proSportAbbrev, currentSeasonId, currentSeason:{id, currentScoringPeriod:{id}, startDate, endDate}}] (top-level array of 5) Example: Resolve the current NFL fantasy season + week Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_seasonA | One game-season's status: current scoring period, start/end dates, whether it is active. Returns: {abbrev:'FFL 2025', id:2025, gameId, name, active, display, startDate, endDate, currentScoringPeriod:{id}} Example: 2025 fantasy football season status {"game": "ffl", "seasonId": 2025} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_pro_teamsA | Pro (real-world) teams for a fantasy season: ids, abbreviations, BYE weeks, and each team's games keyed by scoring period. Returns: {settings:{proTeams:[{id, abbrev, location, name, byeWeek, universeId, proGamesByScoringPeriod:{'1':[{...game}]}}]}} — 33 entries for NFL (id 0 = free-agent/none) Example: NFL teams + bye weeks + week-by-week pro schedule {"game": "ffl", "seasonId": 2025} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_playersA | The player universe for a season (id, name, position, pro team, % owned). Defaults to 50 players — pass fantasy_filter to widen or filter. Returns: [{id, fullName, firstName, lastName, defaultPositionId, eligibleSlots:[int], proTeamId, droppable, universeId, ownership:{percentOwned}}] (top-level array) Example: Default slice (50 players) {"game": "ffl", "seasonId": 2025} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_league_defaultsA | ESPN's stock league templates (scoring/roster presets) by scoring-type id — the defaults a new league starts from. Returns: {gameId, id, seasonId, scoringPeriodId, settings:{name:'FFL PPR Scoring', ...}, status:{...}} Example: The PPR football preset {"game": "ffl", "seasonId": 2025, "scoringTypeId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. Also answers this: fpl_game_rules, sleeper_league, yahoo_league_settings. |
| espnfantasy_player_newsA | Recent fantasy news items for one player (injury/usage blurbs that drive start-sit calls). Returns: {news:{feed:[{id, headline, description, published, lastModified, playerId, links, images}], resultsCount, resultsLimit, timestamp}} Example: News for one player {"game": "ffl", "playerId": 3139477} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_leagueA | Raw league read with ANY combination of views — the escape hatch when no dedicated tool below fits, or to fetch several views in one round trip. Returns: {id, seasonId, scoringPeriodId, settings, status, teams:[…], members:[…]} plus whatever the requested views add (schedule, draftDetail, players, …) Example: Teams + rosters + settings in one call {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "view": ["mTeam", "mRoster", "mSettings"]} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. Also answers this: fpl_game_rules, sleeper_league, yahoo_league_settings. |
| espnfantasy_league_settingsA | League rules: name, size, scoring items, roster slots, schedule/playoff format, waiver + keeper + trade settings. Returns: {settings:{name, size, isPublic, draftSettings, rosterSettings:{lineupSlotCounts}, scoringSettings:{scoringItems:[{statId, points}]}, scheduleSettings, tradeSettings, acquisitionSettings}, status} Example: Scoring + roster rules for a league {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. Also answers this: fpl_game_rules, sleeper_league, yahoo_league_settings. |
| espnfantasy_teamsA | Fantasy teams with records, points for/against, playoff seed and projected rank. Returns: {teams:[{id, abbrev, name, owners, primaryOwner, divisionId, playoffSeed, points, pointsAdjusted, currentProjectedRank, rankCalculatedFinal, record:{overall:{wins,losses,ties,pointsFor,pointsAgainst}}, transactionCounter, waiverRank}], members:[{id, displayName, firstName, lastName}]} Example: All fantasy teams + records {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_rostersA | Every fantasy team's roster — who each manager holds, their lineup slot, acquisition type and player stats. LARGE (hundreds of KB). Returns: {teams:[{id, roster:{entries:[{playerId, lineupSlotId, acquisitionType, playerPoolEntry:{player:{fullName, defaultPositionId, eligibleSlots, injuryStatus, stats:[…]}}}]}}]} Example: All rosters, week 3 {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_standingsA | League standings — records, points for/against, division and playoff seeding. Returns: {teams:[{id, name, playoffSeed, rankCalculatedFinal, record:{overall:{wins,losses,ties,percentage,pointsFor,pointsAgainst}, division:{...}, home:{...}, away:{...}}}], schedule:[…]} Example: Final standings {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_matchupsA | Full season schedule of head-to-head fantasy matchups with each side's total and per-period points. Returns: {schedule:[{id, matchupPeriodId, winner:'HOME'|'AWAY'|'UNDECIDED', home:{teamId, totalPoints, gamesPlayed, pointsByScoringPeriod:{'1':98.4}}, away:{…}}]} Example: Every matchup in the season {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. Also answers this: sleeper_matchups, sleeper_playoff_bracket. |
| espnfantasy_draftA | Draft results — every pick in order with round, team, player, keeper flag and auction bid. Returns: {draftDetail:{drafted, inProgress, completeDate, picks:[{id, overallPickNumber, roundId, roundPickNumber, playerId, teamId, owningTeamIds, keeper, reservedForKeeper, bidAmount, autoDraftTypeId, lineupSlotId, memberId}]}} Example: Full draft board {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_transactionsA | Completed transactions (adds, drops, trades, waiver claims) for a scoring period. Returns: {transactions:[{id, type, status, teamId, memberId, scoringPeriodId, proposedDate, bidAmount, items:[{type:'ADD'|'DROP', playerId, fromTeamId, toTeamId}]}]} Example: Week-3 transactions {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_pending_transactionsA | Pending/unprocessed transactions — waiver claims and trade offers awaiting processing (needs the private cookie in most leagues). Returns: {pendingTransactions:[…]} when any are pending; the key is ABSENT (not an empty list) when there are none. Example: Outstanding waiver claims / trade offers {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_statusA | League lifecycle status — current matchup period, latest scoring period, whether the season is active, waiver process dates. Returns: {status:{currentMatchupPeriod, latestScoringPeriod, finalScoringPeriod, isActive, previousSeasons:[int], teamsJoined, waiverProcessStatus:{…}}} Example: Where the league is up to {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_navA | Lightweight nav payload — league name, size and the current user's team, for cheap orientation before a heavy call. Returns: {id, settings:{name, size}, status:{…}, teams:[{id, abbrev}], members:[…]} Example: Cheap league header {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_everythingA | UNDOCUMENTED mega-view ( Returns: {settings, status, teams, members, schedule, draftDetail, players, playersHighlighted, creationInfo, lastUpdateInfo, lastAccessInfo} (~4 MB on a 10-team league) Example: Everything about a league in one shot {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_communicationA | League message board / activity feed (chat topics, trade chatter, activity posts). 404s when the league has no communication group. Returns: {topics:[{id, type, date, author, messages:[{id, messageTypeId, to, for, content}]}]} — HTTP 404 'This Communication Group does not exist.' when the league never used the board Example: Recent league activity {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_league_historyA | Pre-2018 seasons and cross-season history via the leagueHistory path. Only works for leagues that HAVE history — check espnfantasy_status.status.previousSeasons first; an empty list there means this returns 404. Returns a single-element ARRAY, not an object. Returns: [{id, seasonId, settings, teams, status, …}] — ARRAY wrapper; index [0] for a single seasonId. 404 when the league has no leagueHistory record (verified: public league 1234 reports status.previousSeasons == [] and 404s here) — fall back to the seasons path. Example: A 2017 season for a long-running league {"game": "ffl", "leagueId": 1234, "seasonId": 2017} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_boxscoreA | Week box scores — each matchup with both lineups, per-player actual and projected points. The start/sit post-mortem view. Returns: {schedule:[{matchupPeriodId, home:{teamId, totalPoints, tiebreak, pointsByScoringPeriod, rosterForCurrentScoringPeriod:{entries:[{playerId, lineupSlotId, playerPoolEntry:{player:{fullName, stats:[{appliedTotal, appliedAverage, statSourceId, statSplitTypeId}]}}}]}}, away:{…}}]} Example: Week-3 box scores {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_matchup_scoreA | Compact matchup scores for the season — totals only, no lineups. Much smaller than the box score. Returns: {schedule:[{id, matchupPeriodId, winner, home:{teamId, totalPoints, gamesPlayed}, away:{…}}]} Example: All matchup results {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. Also answers this: sleeper_matchups, sleeper_playoff_bracket. |
| espnfantasy_scoreboardA | Scoreboard for a scoring period — matchup totals plus the pro-game state behind each fantasy team. Returns: {schedule:[{matchupPeriodId, home:{teamId, totalPoints, rosterForCurrentScoringPeriod, cumulativeScore:{wins,losses,ties}}, away:{…}}]} Example: This week's scoreboard {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_live_scoringA | Live in-progress scoring for the current period — points so far and how many roster spots have yet to play. Returns: {schedule:[{matchupPeriodId, home:{teamId, totalPoints, totalPointsLive, gamesPlayed}, away:{…}}]} — the *Live fields only populate while pro games are in progress Example: Live scores right now {"game": "ffl", "seasonId": 2018, "leagueId": 1234} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_positional_ratingsA | Positional ratings — average fantasy points allowed by each pro defence to each position (the strength-of-matchup table). Returns: {positionAgainstOpponent:{positionalRatings:{'1':{average, total, ratingsByOpponent:{'proTeamId':{average, rank}}}}}} (keys are position ids). IN-SEASON ONLY: verified 2026-07-02 that completed/old seasons return 200 with the whole positionAgainstOpponent block ABSENT — that is upstream behaviour, not an error. Example: Which defences are soft against each position {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_player_infoA | The league's player pool with ownership %, ratings, projections and injury status — pass a status filter for FREE AGENTS / WAIVERS (the waiver-wire tool). Returns: {players:[{id, onTeamId, status:'FREEAGENT'|'ONTEAM'|'WAIVERS', keeperValue, draftAuctionValue, ratings, player:{fullName, defaultPositionId, eligibleSlots, injured, injuryStatus, proTeamId, ownership:{percentOwned, percentChange, percentStarted}, stats:[{appliedTotal, statSourceId, statSplitTypeId}]}}]} Example: Top available free agents by ownership {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "scoringPeriodId": 3, "fantasy_filter": {"players": {"filterStatus": {"value": ["FREEAGENT", "WAIVERS"]}, "limit": 25, "sortPercOwned": {"sortPriority": 1, "sortAsc": false}}}} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| espnfantasy_player_cardA | Deep card for specific players — full season + per-period stat splits and projections, as the site's player popup shows. Returns: {players:[{id, player:{fullName, stats:[{id, seasonId, scoringPeriodId, statSourceId:0|1, statSplitTypeId, appliedTotal, appliedAverage, stats:{…}}]}}]} — statSourceId 0=actual, 1=projected Example: Season + projection splits for one player {"game": "ffl", "seasonId": 2018, "leagueId": 1234, "fantasy_filter": {"players": {"filterIds": {"value": [15825]}, "filterStatsForTopScoringPeriodIds": {"value": 16, "additionalValue": ["002018", "102018"]}}}} Auth: works without a key; ESPN_FANTASY_COOKIE unlocks more if set. |
| euroleague_seasonsA | Seasons for a competition — call this to get valid season codes like E2024. Returns: {total, data:[{code:'E2024', name:'EuroLeague 2024-25', alias:'2024-25', year, startDate, endDate, competitionCode, winner}]} Example: EuroLeague seasons {"competition": "E"} Auth: none needed. |
| euroleague_clubsA | The clubs in one season, with city, country and venue detail. Returns: {total, data:[{code, name, abbreviatedName, editorialName, city, country:{code, name}, address, images, isVirtual}]} — Example: 2024-25 EuroLeague clubs {"competition": "E", "season": "E2024"} Auth: none needed. |
| euroleague_peopleA | Players and coaches registered for a season. LARGE (~600 KB) — page it. Returns: {total, data:[{code, name, alias, height, birthDate, country, position, club}]} Example: First page of registered people {"competition": "E", "season": "E2024", "limit": 100} Auth: none needed. |
| euroleague_roundsA | The rounds (matchdays) in a season, with their date windows. Returns: {total, data:[{round, name, seasonCode, phaseTypeCode, minGameStartDate, maxGameStartDate}]} Example: EuroLeague rounds {"competition": "E", "season": "E2024"} Auth: none needed. |
| euroleague_gamesA | Games in a season with scores, venue and officials. Unpaged this is ~800 KB — pass a limit or filter by round. Returns: {total, data:[{id (uuid), gameCode, identifier:'E2024_330', date, localDate, played, gameStatus, group, phaseType, local:{club, score}, road:{club, score}, isNeutralVenue, referee1..4, audience}]} — HOME/AWAY are Example: First 50 games of the season {"competition": "E", "season": "E2024", "limit": 50} Auth: none needed. |
| euroleague_gameA | One game's detail by its per-season game code. Returns: {id, gameCode, identifier, date, played, gameStatus, local:{club, score}, road:{club, score}, group, phaseType, referee1..4, audience} — a single object, NOT wrapped in {data} Example: Game 1 of the season {"competition": "E", "season": "E2024", "gameCode": 1} Auth: none needed. |
| euroleague_game_statsA | Box score for one game: both teams' player lines plus team totals and coach. Returns: {local:{team, coach, total:{…team totals…}, players:[{player:{person, dorsal, position, club}, stats:{timePlayed, valuation, points, fieldGoalsMade2/3, freeThrowsMade, offensiveRebounds, defensiveRebounds, assistances, steals, turnovers, plusMinus, foulsCommited}}]}, road:{…}} — a player line is NESTED as {player, stats}: identity under Example: Box score for game 1 {"competition": "E", "season": "E2024", "gameCode": 1} Auth: none needed. |
| fanduel_racing_messagesA | Site message strings (disclaimers, informational copy) for a namespace. Returns: {response:{:{: }}} Auth: none needed. |
| fanduel_racing_quicklinksA | Homepage quick-link tiles for the racing site. Returns: {quickLinks:[{label, url, ...}]} Auth: none needed. |
| fanduel_racing_promotionsA | Structured racing promotions / placements (POST; empty body returns all). Returns: {success, promoPlacements:[{...}]} Auth: none needed. |
| fanduel_sb_live_scoreA | Live score + period state for one sportsbook event (NJ). Returns: {openDate, homeTeam:{shortName, abbreviation, score}, awayTeam:{...}, comp, mediaTypes} Auth: none needed. |
| fanduel_racing_callA | Call any FanDuel Racing (TVG) GraphQL operation by name + variables against api.racing.fanduel.com/cosmo/v1/graphql. The full query text lives server-side and the boilerplate variables (brand/product/device/profile) default automatically, so most calls need no variables. Read fanduel://racing/operations for the operation list + variable signatures. Returns: (JSON object) Auth: none needed. |
| fanduel_sb_callA | Fetch a FanDuel Sportsbook (US, NJ) REST resource by operation name. Carries
the static public Returns: (JSON object) Auth: none needed. |
| footballdataorg_competitionsA | Every competition the API covers, with its code and current season. VERIFIED live — works without a key. Returns: {count, filters, competitions:[{id, name, code:'PL', type:'LEAGUE'|'CUP', emblem, plan:'TIER_ONE'…, area:{id, name, code, flag}, currentSeason:{id, startDate, endDate, currentMatchday}, numberOfAvailableSeasons, lastUpdated}]} — VERIFIED (189 competitions). NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: All competitions Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_areasB | Countries and regions, used to filter competitions. VERIFIED live — works without a key. Returns: {count, filters, areas:[{id, name, countryCode, flag, parentAreaId, parentArea}]} — VERIFIED (272 areas) NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: All areas Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_matchesA | Matches across every competition your key can see, for a date range. VERIFIED live — the envelope works without a key (though a keyless call sees no competitions). Returns: {filters, resultSet:{count, first, last, played}, matches:[{id, utcDate, status, matchday, stage, competition:{id, name, code}, homeTeam:{id, name, shortName, tla, crest}, awayTeam:{…}, score:{winner, duration, fullTime:{home, away}, halfTime:{…}}}]} — envelope VERIFIED; the match object shape is from the vendor's docs. Note the score lives in score.fullTime, not on the match. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Matches in a date window {"dateFrom": "", "dateTo": "<today+2>"} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_competitionA | One competition with its current season and available seasons. NEEDS A KEY (403 without). Returns: {id, name, code, type, emblem, area, currentSeason:{id, startDate, endDate, currentMatchday, winner}, seasons:[…]} — SHAPE FROM VENDOR DOCS, not probed. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Premier League {"competition": "PL"} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_standingsA | League table for a competition. NEEDS A KEY (403 without). Returns: {filters, competition, season, standings:[{stage, type:'TOTAL'|'HOME'|'AWAY', group, table:[{position, team:{id, name, crest}, playedGames, won, draw, lost, points, goalsFor, goalsAgainst, goalDifference, form}]}]} — SHAPE FROM VENDOR DOCS. Note NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Premier League table {"competition": "PL"} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_competition_matchesA | All matches in one competition. NEEDS A KEY (403 without). Returns: {filters, resultSet, competition, matches:[{id, utcDate, status, matchday, homeTeam, awayTeam, score:{winner, fullTime:{home, away}, halfTime}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A Premier League matchday {"competition": "PL", "matchday": 1} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_teamsA | The clubs in a competition. NEEDS A KEY (403 without). Returns: {count, filters, competition, season, teams:[{id, name, shortName, tla, crest, address, website, founded, clubColors, venue, coach, squad:[…]}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Premier League clubs {"competition": "PL"} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_scorersA | Top scorers in a competition. NEEDS A KEY (403 without). Returns: {count, filters, competition, season, scorers:[{player:{id, name, nationality, position}, team:{id, name}, goals, assists, penalties, playedMatches}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Premier League top scorers {"competition": "PL", "limit": 10} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_teamA | One club with its squad and running competitions. NEEDS A KEY (403 without). Returns: {id, name, shortName, tla, crest, address, website, founded, clubColors, venue, runningCompetitions:[…], coach:{id, name, nationality, contract}, squad:[{id, name, position, dateOfBirth, nationality}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One club {"teamId": 57} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdataorg_matchA | One match with lineups, goals, bookings and head-to-head. NEEDS A KEY (403 without). Returns: {id, utcDate, status, competition, homeTeam:{id, name, lineup:[…], bench:[…]}, awayTeam:{…}, score, goals:[{minute, scorer, assist}], bookings:[…], substitutions:[…], referees:[…], head2head:{…}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One match {"matchId": 419516} Auth: needs your own key in FOOTBALL_DATA_ORG_KEY. |
| footballdatauk_seasonA | One league season: every match with full/half-time score, shots, cards, and CLOSING ODDS from ~10 bookmakers. The backtesting dataset. Returns: [{Div, Date:'16/08/2024', Time, HomeTeam, AwayTeam, FTHG, FTAG, FTR:'H'|'D'|'A', HTHG, HTAG, HTR, Referee, HS, AS, HST, AST, HF, AF, HC, AC, HY, AY, HR, AR, B365H, B365D, B365A, PSH, PSD, PSA, WHH, WHD, WHA, MaxH, AvgH, B365CH…}] (one row per match; ~380 rows for a 20-team season). ALL VALUES ARE STRINGS — cast before arithmetic. Dates are DD/MM/YYYY. A Example: Premier League 2024/25 with closing odds {"season": "2425", "division": "E0"} Auth: none needed. |
| formulae_championshipsA | Every Formula E season ('championship') with its uuid — call this first, everything else needs the id. Returns: {championships:[{id (uuid), name:'SEASON 2024-2025', status:'Past'|'Live'|'Future', lastFinishedRound, series:{id, name}}]} Example: All seasons Auth: none needed. |
| formulae_racesA | The race calendar — all seasons, or one championship's rounds. Returns: {pageInfo:{…}, races:[{id (uuid), name:'Beijing E-Prix', sequence, date, city, country, circuit, championship, hasRaceResults, hasSessionResults}]} — WRAPPED, unlike standings Example: One season's calendar {"championshipId": "4e287a6d-e2da-471a-9c8a-01141d6a1819"} Auth: none needed. |
| formulae_raceA | One race's detail: circuit, city, date and whether results exist. Returns: {id, name, sequence, date, city, country, circuit, championship, hasRaceResults, hasSessionResults, metadata} — a single object; there is no results payload on this host (see the docs) Example: One E-Prix {"raceId": "c1dd1f8a-5112-4864-8d2d-cfcc8951d197"} Auth: none needed. |
| formulae_driver_standingsA | Drivers' championship standings for one season. Returns: [{driverPosition, driverFirstName, driverLastName, driverTLA:'ROW', driverPoints, driverTeamName, driverTeamId, driverId, driverCountry}] — a TOP-LEVEL ARRAY, not wrapped Example: Drivers' championship {"championshipId": "4e287a6d-e2da-471a-9c8a-01141d6a1819"} Auth: none needed. |
| formulae_team_standingsA | Teams' championship standings, including each team's points race by race. Returns: [{teamPosition, teamName, teamId, teamPoints, teamRaceStandings:[{raceSequence, raceCountry, racePoints}]}] — top-level array. Example: Teams' championship {"championshipId": "4e287a6d-e2da-471a-9c8a-01141d6a1819"} Auth: none needed. |
| fpl_playersA | Every FPL player with price, form, ownership, expected goals and availability. LARGE — ~65k tokens for all 581 players; use fpl_player_detail for one player's depth. Returns: {elements:[{id, web_name:'Salah', team:11, element_type:3, now_cost:145, total_points, points_per_game:'6.2', form:'5.4', selected_by_percent:'42.1', status:'a'|'i'|'d'|'s'|'u', news:'Knock - 75% chance of playing', chance_of_playing_next_round, minutes, goals_scored, assists, clean_sheets, bonus, expected_goals:'0.54', expected_assists, defensive_contribution, ict_index, ep_next:'6.1'}]} — Example: Every player, key fields Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_player_detailA | One player in full: every gameweek this season, past seasons, and upcoming fixtures with difficulty. Returns: {fixtures:[{id, event, team_h, team_a, is_home, difficulty:1-5, kickoff_time}], history:[{element, fixture, round, total_points, minutes, goals_scored, assists, clean_sheets, bonus, bps, expected_goals, value, transfers_balance, selected, was_home, opponent_team}], history_past:[{season_name:'2024/25', total_points, minutes, goals_scored, end_cost, start_cost}]} — Example: One player's full record {"playerId": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_teamsA | The 20 Premier League clubs with FPL's attack/defence strength ratings. Returns: {teams:[{id:1-20, name:'Arsenal', short_name:'ARS', code, strength:1-5, strength_overall_home, strength_overall_away, strength_attack_home, strength_attack_away, strength_defence_home, strength_defence_away, played, win, draw, loss, points, position, form}]} — Example: All 20 clubs Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_gameweeksA | All 38 gameweeks: deadlines, average scores, highest score, chip usage, and which one is current. Returns: {events:[{id:1-38, name:'Gameweek 1', deadline_time:'2026-08-15T17:30:00Z', deadline_time_epoch, finished, data_checked, is_previous, is_current, is_next, average_entry_score, highest_score, highest_scoring_entry, most_selected, most_transferred_in, most_captained, most_vice_captained, top_element, transfers_made, chip_plays:[{chip_name, num_played}]}]} — Example: The full gameweek calendar Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_game_rulesA | Positions, chips, phases and scoring settings — the lookup tables the other tools' ids refer to. Returns: {element_types:[{id:1-4, singular_name:'Goalkeeper', plural_name, squad_select, squad_min_play, squad_max_play, element_count}], chips:[{id, name:'wildcard'|'freehit'|'bboost'|'3xc', number, start_event, stop_event}], phases:[{id, name:'Overall'|'August', start_event, stop_event}], game_settings:{squad_squadplay, squad_total_spend, transfers_cost, transfers_limit, …}, element_stats:[{label:'Goals scored', name:'goals_scored'}], total_players:4085510} — Example: The lookup tables Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_fixturesA | Fixtures with FPL difficulty ratings, and goal/assist/bonus breakdowns once played. Returns: [{id, code, event, team_h, team_a, team_h_score, team_a_score, kickoff_time, started, finished, finished_provisional, minutes, team_h_difficulty:1-5, team_a_difficulty:1-5, stats:[{identifier:'goals_scored'|'assists'|'bonus'|'bps'|'saves'|…, h:[{element, value}], a:[{element, value}]}]}] — Example: One gameweek's fixtures {"event": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_live_gameweekA | Live per-player scoring for a gameweek — points as they are being earned. Returns: {elements:[{id, stats:{minutes, goals_scored, assists, clean_sheets, goals_conceded, saves, bonus, bps, total_points, expected_goals, …}, explain:[{fixture, stats:[{identifier, points, value}]}]}]} — Example: Live scoring for a gameweek {"gameweek": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_dream_teamA | The highest-scoring XI of a completed gameweek. Returns: {top_player:{id, points}, team:[{element, position, points}]} — 404s until the gameweek is finished. Example: A gameweek's best XI {"gameweek": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_event_statusA | Whether bonus points and league tables have been finalised for the current gameweek. Returns: {status:[{bonus_added, date, event, points:'r'|'p'|'l'}], leagues:'Updated'|''} — this is how you know scores are FINAL. Example: Is this gameweek settled? Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_set_piece_notesA | Official set-piece taker notes per club — who takes penalties, corners and free kicks. Returns: {last_updated, teams:[{id, notes:[{external_link, info_message:'Penalties: Haaland, then Alvarez', source_link}]}]} — genuinely useful for FPL and priced-market work alike: penalty duty is worth several points a season and moves with injuries. Example: Who takes the penalties Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_managerA | A manager's squad summary: overall rank, points, and every league they are in. Returns: {id, name:'Squad Name', player_first_name, player_last_name, player_region_name, summary_overall_points, summary_overall_rank, summary_event_points, summary_event_rank, current_event, started_event, last_deadline_bank, last_deadline_value, last_deadline_total_transfers, leagues:{classic:[{id, name, entry_rank, entry_last_rank}], h2h:[…], cup:{…}}} — Example: A manager's summary {"managerId": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_manager_historyA | A manager's gameweek-by-gameweek history, past seasons, and chips already used. Returns: {current:[{event, points, total_points, rank, overall_rank, bank, value, event_transfers, event_transfers_cost, points_on_bench}], past:[{season_name:'2024/25', total_points, rank}], chips:[{name:'wildcard', time, event}]} — Example: A manager's season {"managerId": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_manager_picksA | The exact XI, bench order, captain and chip a manager used in a gameweek. Returns: {active_chip, automatic_subs:[{element_in, element_out}], entry_history:{event, points, total_points, rank, bank, value, event_transfers, event_transfers_cost, points_on_bench}, picks:[{element, position:1-15, multiplier:0|1|2|3, is_captain, is_vice_captain}]} — Example: A manager's gameweek team {"managerId": 1, "gameweek": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. Also answers this: espnfantasy_rosters, sleeper_league_rosters, yahoo_team_roster. |
| fpl_classic_leagueA | Classic (total-points) league standings, paginated. Returns: {league:{id, name, created, closed, admin_entry, start_event, league_type, scoring}, new_entries:{has_next, page, results}, standings:{has_next, page, results:[{id, entry, entry_name, player_name, rank, last_rank, rank_sort, total, event_total}]}} — Example: A league table {"leagueId": 314} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_h2h_leagueA | Head-to-head league standings with win/draw/loss records. Returns: {league:{id, name, league_type, scoring:'h'}, standings:{has_next, page, results:[{id, entry, entry_name, player_name, rank, last_rank, total, matches_played, matches_won, matches_drawn, matches_lost, points_for}]}} — Example: An H2H table {"leagueId": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. |
| fpl_my_teamA | YOUR current squad including picks not yet visible to others, plus bank, free transfers and chip availability. Needs your FPL session cookie. Returns: {picks:[{element, position:1-15, multiplier:0|1|2|3, is_captain, is_vice_captain, element_type:1-4, selling_price, purchase_price}], picks_last_updated, chips:[{id, status_for_entry:'available'|'played'|'unavailable', played_by_entry:[], name:'bboost'|'3xc'|'wildcard'|'freehit', number, start_event, stop_event, chip_type:'team'|'transfer', is_pending}], transfers:{cost, status:'unlimited'|'limited', limit, made, bank, value}} — VERIFIED against a live squad. The ONE place TWO FIELDS THAT CHANGE THE ANSWER: Returns 403 {'detail':'Authentication credentials were not provided.'} without FPL_SESSION_COOKIE. Example: Your own squad {"managerId": 1} Auth: works without a key; FPL_SESSION_COOKIE unlocks more if set. Also answers this: espnfantasy_rosters, sleeper_league_rosters, yahoo_team_roster. |
| golfcourseapi_searchA | Search the course catalogue by name or club. Returns: {courses:[{id, club_name, course_name, location:{address, city, state, country, latitude, longitude}}]} — SHAPE FROM VENDOR DOCS. Search returns the summary only; per-hole data needs golfcourseapi_course. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Find a course {"search_query": "Pebble Beach"} Auth: needs your own key in GOLFCOURSE_API_KEY. |
| golfcourseapi_courseA | One course in full: every tee box with per-hole par, yardage and stroke index. Returns: {course:{id, club_name, course_name, location:{…}, tees:{male:[{tee_name, course_rating, slope_rating, par_total, total_yards, number_of_holes, holes:[{par, yardage, handicap}]}], female:[…]}}} — SHAPE FROM VENDOR DOCS. NOTE NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One course in full {"id": 1} Auth: needs your own key in GOLFCOURSE_API_KEY. |
| highlightly_soccer_highlightsA | Football highlight clips, by match, league or date. The main tool here. Returns: {data:[{id, title, type, url, imgUrl, embedUrl, channel, source, match:{id, date, league, homeTeam, awayTeam}}], pagination:{totalCount, limit, offset}} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's football highlights {"date": "2024-08-17"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_soccer_matchesA | Football matches, to find the matchId a highlight lookup needs. Returns: {data:[{id, date, country, league:{id, name, logo}, homeTeam:{id, name, logo}, awayTeam:{…}, state:{description, score:{current, penalties}}}], pagination} — SHAPE FROM VENDOR DOCS. The score is nested under NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's matches {"date": "2024-08-17"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_soccer_leaguesC | Football competitions covered, with the leagueId filters. Returns: {data:[{id, name, logo, country:{code, name, logo}, seasons:[…]}], pagination} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Competitions covered Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_basketball_highlightsA | Basketball highlight clips (NBA, EuroLeague and others). Returns: {data:[{id, title, url, embedUrl, imgUrl, match:{…}}], pagination} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's basketball highlights {"date": "2024-01-15"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_nfl_highlightsA | American-football highlight clips. Returns: {data:[{id, title, url, embedUrl, imgUrl, match:{…}}], pagination} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's NFL highlights {"date": "2024-01-15"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_baseball_highlightsA | Baseball highlight clips. Returns: {data:[{id, title, url, embedUrl, imgUrl, match:{…}}], pagination} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's baseball highlights {"date": "2024-07-04"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| highlightly_hockey_highlightsA | Ice-hockey highlight clips. Returns: {data:[{id, title, url, embedUrl, imgUrl, match:{…}}], pagination} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's hockey highlights {"date": "2024-01-15"} Auth: needs your own key in HIGHLIGHTLY_API_KEY. |
| isportsapi_football_competitionsA | Football competitions with their ids. Returns: {code:0, data:[{competitionId, name, shortName, logo, type, color}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Every competition Auth: needs your own key in ISPORTS_API_KEY. |
| isportsapi_football_scheduleA | Football fixtures and results by date. Returns: {code:0, data:[{matchId, competitionId, homeId, homeName, awayId, awayName, matchTime, status, homeScore, awayScore, halfHomeScore, halfAwayScore}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's fixtures {"date": "2024-08-17"} Auth: needs your own key in ISPORTS_API_KEY. |
| isportsapi_football_odds_asianA | Asian-handicap odds across companies — the reason to use this provider. Returns: {code:0, data:{handicap:[[matchId, companyId, initialHandicap, initialHome, initialAway, liveHandicap, liveHome, liveAway, …]], europeOdds:[[…]], overUnder:[[…]]}} — SHAPE FROM VENDOR DOCS. NOTE the payload is ARRAYS OF POSITIONAL ARRAYS, not objects: fields are identified by INDEX. Read the vendor's column order before parsing, and do not assume it matches other providers here. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Asian handicap odds Auth: needs your own key in ISPORTS_API_KEY. |
| isportsapi_football_liveA | Football matches in play now. Returns: {code:0, data:[{matchId, status, homeScore, awayScore, homeHalfScore, awayHalfScore, homeRed, awayRed, homeYellow, awayYellow, homeCorner, awayCorner, updateTime}]} — SHAPE FROM VENDOR DOCS. Corners and cards live here rather than in a separate statistics call. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: In play now Auth: needs your own key in ISPORTS_API_KEY. |
| isportsapi_basketball_scheduleA | Basketball fixtures and results by date. Returns: {code:0, data:[{matchId, leagueId, homeName, awayName, matchTime, status, homeScore, awayScore, quarterScores}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A day's games {"date": "2024-01-15"} Auth: needs your own key in ISPORTS_API_KEY. |
| jolpicaf1_seasonsA | Every F1 season on record (1950 onward). Returns: {MRData:{total, limit, offset, SeasonTable:{Seasons:[{season, url}]}}} Example: First page of seasons {"format": "json", "limit": 30} Auth: none needed. |
| jolpicaf1_driversA | Drivers — all-time, or the field for one season. Returns: {MRData:{DriverTable:{season, Drivers:[{driverId, permanentNumber, code, givenName, familyName, dateOfBirth, nationality, url}]}}} — Example: 2024 field {"season": "2024", "format": "json"} Auth: none needed. |
| jolpicaf1_constructorsB | Constructors (teams) — all-time, or those entered in one season. Returns: {MRData:{ConstructorTable:{season, Constructors:[{constructorId, name, nationality, url}]}}} Example: 2024 constructors {"season": "2024", "format": "json"} Auth: none needed. |
| jolpicaf1_circuitsB | Circuits, with location and coordinates. Returns: {MRData:{CircuitTable:{Circuits:[{circuitId, circuitName, Location:{lat, long, locality, country}, url}]}}} Example: 2024 circuits {"season": "2024", "format": "json"} Auth: none needed. |
| jolpicaf1_racesA | A season's race calendar with dates, circuits and (from 2021) each session's date/time. Returns: {MRData:{RaceTable:{season, Races:[{season, round, raceName, date, time, url, Circuit:{circuitId, circuitName, Location}, FirstPractice, Qualifying, Sprint}]}}} — Example: 2024 calendar {"season": "2024", "format": "json"} Auth: none needed. |
| jolpicaf1_resultsA | Race results: finishing order, grid, laps, time/status, points and fastest lap. Returns: {MRData:{RaceTable:{Races:[{season, round, raceName, Results:[{position, positionText, points, grid, laps, status, Driver:{driverId, code}, Constructor:{constructorId}, Time:{millis, time}, FastestLap:{rank, lap, Time, AverageSpeed}}]}]}}} — all values are STRINGS Example: 2024 round 1 {"season": "2024", "round": "1", "format": "json"} Auth: none needed. |
| jolpicaf1_qualifyingA | Qualifying results with Q1/Q2/Q3 times per driver. Returns: {MRData:{RaceTable:{Races:[{QualifyingResults:[{position, Driver, Constructor, Q1, Q2, Q3}]}]}}} — Q2/Q3 absent for drivers eliminated earlier Example: 2024 round 1 qualifying {"season": "2024", "round": "1", "format": "json"} Auth: none needed. |
| jolpicaf1_sprintA | Sprint race results (weekends that have one — 2021 onward). Returns: {MRData:{RaceTable:{Races:[{SprintResults:[{position, points, grid, laps, status, Driver, Constructor, Time}]}]}}} — Races is EMPTY for a weekend with no sprint, which is not an error Example: A 2024 sprint weekend {"season": "2024", "round": "5", "format": "json"} Auth: none needed. |
| jolpicaf1_lapsA | Lap-by-lap times for every driver in a race. LARGE — page it or narrow to one lap. Returns: {MRData:{total, RaceTable:{Races:[{Laps:[{number, Timings:[{driverId, position, time}]}]}]}}} — one entry per lap, each holding every driver's timing Example: First laps of 2024 round 1 {"season": "2024", "round": "1", "format": "json", "limit": 100} Auth: none needed. |
| jolpicaf1_pitstopsA | Pit stops for a race: lap, time of day and stationary duration. Returns: {MRData:{RaceTable:{Races:[{PitStops:[{driverId, lap, stop, time, duration}]}]}}} — Example: 2024 round 1 pit stops {"season": "2024", "round": "1", "format": "json"} Auth: none needed. |
| jolpicaf1_driver_standingsA | Drivers' championship standings — after a season, or after a specific round. Returns: {MRData:{StandingsTable:{season, round, StandingsLists:[{season, round, DriverStandings:[{position, points, wins, Driver:{driverId, code, familyName}, Constructors:[{constructorId, name}]}]}]}}} — note the extra StandingsLists layer Example: 2024 drivers' championship {"season": "2024", "format": "json"} Auth: none needed. |
| jolpicaf1_constructor_standingsA | Constructors' championship standings. Returns: {MRData:{StandingsTable:{StandingsLists:[{season, round, ConstructorStandings:[{position, points, wins, Constructor:{constructorId, name, nationality}}]}]}}} Example: 2024 constructors' championship {"season": "2024", "format": "json"} Auth: none needed. |
| kalshi_marketsA | Prediction-market catalogue with current quotes — filter by event/series ticker or status. Paginated by cursor. Returns: {cursor, markets:[{ticker, event_ticker, market_type, title, status, yes_bid_dollars, yes_ask_dollars, no_bid_dollars, no_ask_dollars, last_price_dollars, volume_fp, volume_24h_fp, open_interest_fp, liquidity_dollars, open_time, close_time, expiration_time, rules_primary}]} Example: First page of open markets {"limit": 5, "status": "open"} Auth: none needed. Also answers this: polymarket_markets, polymarket_clob_markets. |
| kalshi_marketA | One market's full detail by ticker — quotes, volume, rules, strike, timing. Returns: {market:{ticker, event_ticker, title, yes_sub_title, no_sub_title, status, result, yes_bid_dollars, yes_ask_dollars, last_price_dollars, volume_fp, open_interest_fp, rules_primary, rules_secondary, strike_type, custom_strike, open_time, close_time, expiration_time}} Auth: none needed. Also answers this: polymarket_market. |
| kalshi_orderbookA | Order book for one market — resting yes/no bids by price level (dollar-denominated). Returns: {orderbook_fp:{yes_dollars:[[price, size], …], no_dollars:[[price, size], …]}} (empty arrays when nothing is resting) Auth: none needed. |
| kalshi_tradesA | Recent public trades, optionally for one market ticker. Paginated by cursor. Returns: {cursor, trades:[{trade_id, ticker, count, yes_price, no_price, taker_side, created_time}]} Auth: none needed. Also answers this: polymarket_trades. |
| kalshi_candlesticksA | OHLC price candlesticks for one market over a time window (1m/1h/1d periods). Returns: {ticker, candlesticks:[{end_period_ts, yes_bid, yes_ask, price, volume, open_interest}]} Auth: none needed. Also answers this: polymarket_price_history. |
| kalshi_candlesticks_batchA | OHLC candlesticks for MANY markets in one call — pass the tickers as a list. Returns: {markets:[{market_ticker, candlesticks:[{end_period_ts, price, volume, open_interest}]}]} Auth: none needed. Also answers this: polymarket_price_history. |
| kalshi_eventsA | Event catalogue (an event groups related markets) — filter by series or status. Paginated by cursor. Returns: {cursor, events:[{event_ticker, series_ticker, title, sub_title, category, mutually_exclusive, strike_period}], milestones} Example: First page of open events {"limit": 5, "status": "open"} Auth: none needed. |
| kalshi_eventA | One event by ticker, optionally with its markets embedded. Returns: {event:{event_ticker, series_ticker, title, category, mutually_exclusive, markets:[…]}, markets} Auth: none needed. |
| kalshi_series_listA | All series in a category (Sports, Politics, Economics, Financials, Climate and Weather, Entertainment, …) — the top of the id chain. Returns: {series:[{ticker, title, category, frequency, tags, settlement_sources, contract_url}]} Example: Every sports series {"category": "Sports"} Auth: none needed. |
| kalshi_seriesA | One series by ticker — title, category, settlement sources, fee structure. Returns: {series:{ticker, title, category, frequency, tags, settlement_sources, contract_url, fee_type}} Auth: none needed. |
| kalshi_milestonesA | Milestones — dated catalysts (data releases, games, decisions) linked to the event tickers they resolve. Returns: {cursor, milestones:[{id, category, details, end_date, primary_event_tickers, related_event_tickers}]} Auth: none needed. |
| kalshi_mve_collectionsA | Multivariate event collections — the parlay-style combo products that many KXMVE* markets belong to (a market's mve_collection_ticker points here). Returns: {cursor, multivariate_contracts:[{collection_ticker, series_ticker, title, description, is_ordered, is_all_yes, size_min, size_max, associated_event_tickers, open_date, close_date}]} Auth: none needed. |
| kalshi_mve_collectionA | One multivariate event collection by ticker. Returns: {multivariate_contract:{collection_ticker, series_ticker, title, description, associated_events, associated_event_tickers}} Auth: none needed. |
| kalshi_structured_targetsA | Structured targets — Kalshi's entity registry (players, companies, people) that markets resolve against. Paginated by cursor; page size via page_size. Returns: {cursor, structured_targets:[{id, name, type, details, source_ids, last_updated_ts}]} Auth: none needed. |
| kalshi_structured_targetA | One structured target (entity) by id. Returns: {structured_target:{id, name, type, details, source_ids}} Auth: none needed. |
| kalshi_exchange_statusA | Is the exchange up and trading right now. Returns: {exchange_active, trading_active} Auth: none needed. |
| kalshi_exchange_scheduleA | Standard trading hours + maintenance windows. Returns: {schedule:{standard_hours, maintenance_windows}} Auth: none needed. |
| kalshi_exchange_announcementsA | Active exchange-wide announcements. Returns: {announcements:[{type, message, delivery_time, status}]} Auth: none needed. |
| laliga_competitionsA | All LaLiga competitions (men's/women's, primera/segunda, across history), each with slug, opta_id, name. Returns: {competitions:[{id, slug, name, opta_id, lde_id, main}]} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_competitionA | One competition by SLUG (e.g. primera-division). Numeric id 404s — use the slug. Returns: {competition:{id, slug, name, opta_id}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_subscriptionsA | Season instances (a 'subscription' = one competition's season), paginated 20/page. Each has slug, competition, year, current_gameweek, date range. Returns: {total, subscriptions:[{id, name, slug, competition, year, current_gameweek, date_ini, date_end, rounds}]} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_subscriptionA | One season instance by slug — competition, year, season name, current gameweek, rounds, and Returns: {subscription:{id, slug, name, competition, season, season_name, year, current_gameweek, teams:[20 season teams], rounds}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_standingA | Full league table for a season — 20 entries with played/won/drawn/lost/goals_for/goals_against/goal_difference/points/position + full team object (shield, colours). Returns: {total, standings:[{position, previous_position, played, won, drawn, lost, goals_for, goals_against, goal_difference, points, team:{id, slug, name, shortname, opta_id, shield}}]} Example: 2025/26 LALIGA EA SPORTS table {"slug": "laliga-easports-2025"} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_roundsA | Rounds / matchweeks structure for a season (gameweeks, groups). Returns: {total, rounds:[{id, slug, name, position, num_gameweeks, gameweeks, has_groups, groups}]} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_teamsA | Global team directory across all competitions (~1541), paginated — use it to resolve a team's slug/id/opta_id. NOTE: NOT season-scoped; for the 20 teams in a season read laliga_standing or laliga_subscription (its embedded Returns: {total, teams:[{id, slug, name, nickname, shortname, boundname, shield, competitions}]} (opta_id present on most; join via it where available) Example: First page of the team directory {"limit": 20} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_teamA | One team by SLUG — club info, colours, foundation, socials, competitions, venue. Returns: {team:{id, slug, name, shortname, opta_id, club, color, foundation, competitions, last_main_competition}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_squadA | A club's CURRENT squad — each entry has person (name, date_of_birth, country, height), photos, position id, shirt_number, opta_id, loan status. (The subscription arg is required by the API but the roster returned is the current one, not season-historical.) Returns: {total, squads:[{id, opta_id, person:{name, date_of_birth, country, height}, photos, position, shirt_number, role, current, loan}]} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_players_statsA | EVERY player in a season (≈749) with full Opta stats[] (name/stat pairs) + position + team + opta_id. Page with limit (max 100) + offset. Returns: {total, player_stats:[{id, name, slug, opta_id, shirt_number, position, country, team, stats:[{name, stat}]}]} Example: First page of 2025/26 player stats {"slug": "laliga-easports-2025", "limit": 20} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_playerA | One player profile by SLUG — name, firstname/lastname, date_of_birth, country, current team + squad, roles. Returns: {player:{id, slug, name, firstname, lastname, date_of_birth, country, international, team, squad, roles}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_player_statsA | One player's Opta stats[] by SLUG. Returns: {player_stats:{id, name, slug, opta_id, team, stats:[{name, stat}]}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_matchesA | Matches feed. IMPORTANT: pass competition= to get a competition's matches — subscription= alone returns a mixed bag (incl. World Cup placeholders). competition=primera-division gives the 380 LALIGA EA SPORTS matches; add gameweek= for one matchweek (10). Returns: {total, matches:[{id, slug, name, opta_id, home_team, away_team, competition, season, gameweek, date, time, venue, status}]} (status FullTime/PreMatch/…) Example: 2025/26 LALIGA matchweek 1 (10 matches) {"subscription": "laliga-easports-2025", "competition": "primera-division", "gameweek": 1, "limit": 10} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| laliga_matchA | One match by SLUG (from laliga_matches; the long temporada-… slug, not the numeric id which 404s). For a played match adds scores + formations. Returns: {match:{id, slug, name, home_team, away_team, home_score, away_score, home_formation, away_formation, competition, gameweek, date, status, attempt, ball}} Auth: works without a key; LALIGA_SUBSCRIPTION_KEY unlocks more if set. |
| lichess_userA | A Lichess player: ratings per time control and variant, games played, play time and profile. Returns: {id, username, title, perfs:{bullet:{rating, games, rd, prog}, blitz:{…}, rapid:{…}, classical:{…}, correspondence:{…}, puzzle:{…}}, createdAt, seenAt, playTime:{total, tv}, count:{all, rated, win, loss, draw}, profile:{…}, patron, streamer} — no single 'rating': read perfs..rating Example: One player's profile and ratings {"username": "thibault"} Auth: none needed. |
| lichess_users_statusA | Online/playing status for up to 50 users in one call — who is available right now. Returns: [{id, name, title, online, playing, streaming, patron}] (top-level array) Example: Status of two players {"ids": ["thibault", "neio"]} Auth: none needed. |
| lichess_leaderboardA | Top-rated players for one time control or variant. Returns: {users:[{id, username, title, perfs:{:{rating, progress}}, online}]} Example: Top 10 blitz players {"count": 10, "perf": "blitz"} Auth: none needed. |
| lichess_leaderboards_allA | Top 10 for EVERY time control and variant in a single call. Returns: {bullet:[{id, username, title, perfs}], blitz:[…], rapid:[…], classical:[…], chess960:[…], atomic:[…], …} — one array per perf Example: Every leaderboard at once Auth: none needed. |
| lichess_daily_puzzleA | The daily puzzle: the position, the solution line, and the game it came from. Returns: {game:{id, perf:{key, name}, rated, players:[{name, color, rating}], pgn, clock}, puzzle:{id, rating, plays, solution:[uci moves], themes:[str], initialPly}} Example: Today's puzzle Auth: none needed. |
| lichess_tournamentsA | Arena tournaments — currently running, finished and upcoming. Returns: {created:[{id, fullName, startsAt, variant, clock, nbPlayers}], started:[…], finished:[…]} — three lists by state, NOT one Example: Arena tournaments by state Auth: none needed. |
| mlb_sportsA | Sport catalogue — the sportId lookup (1 = Major League Baseball; others are MiLB levels, college, international). Returns: {sports:[{id, code, name, abbreviation, sortOrder, activeStatus}]} Auth: none needed. |
| mlb_leaguesA | League catalogue — e.g. American League (103) and National League (104). Pass sportId=1 for MLB. Returns: {leagues:[{id, name, abbreviation, sport, seasonState, hasWildCard}]} Auth: none needed. |
| mlb_divisionsA | Division catalogue (AL/NL East, Central, West) with their league + sport links. Returns: {divisions:[{id, name, nameShort, abbreviation, league, sport}]} Auth: none needed. |
| mlb_teamsA | Team catalogue — id, name, abbreviation, location, league/division, home venue. Pass sportId=1 for the 30 MLB clubs. Returns: {teams:[{id, name, abbreviation, teamName, locationName, league, division, venue, firstYearOfPlay}]} Auth: none needed. |
| mlb_team_rosterA | A team's roster — players with position and jersey number. rosterType selects active / 40-man / full-season / depth chart. Returns: {roster:[{person:{id, fullName}, jerseyNumber, position:{abbreviation, name}, status}], teamId, rosterType} Auth: none needed. |
| mlb_playerA | Player biographical profile — name, DOB, bats/throws, height/weight, position, debut, current team. One personId. Returns: {people:[{id, fullName, primaryNumber, birthDate, currentAge, height, weight, primaryPosition, batSide, pitchHand, mlbDebutDate, currentTeam}]} Auth: none needed. |
| mlb_player_searchA | Find players by name — resolves a name to personId(s) and basic bio. Returns: {people:[{id, fullName, firstName, lastName, birthDate, primaryPosition}]} Auth: none needed. |
| mlb_venuesA | Venue detail for one or more venueIds — name, location, field/roof info. Returns: {venues:[{id, name, location, fieldInfo, timeZone, active}]} Auth: none needed. |
| mlb_seasonsA | Season catalogue with key dates (regular-season start/end, postseason, etc.). Pass sportId=1. Returns: {seasons:[{seasonId, regularSeasonStartDate, regularSeasonEndDate, seasonStartDate, seasonEndDate, preSeasonStartDate, postSeasonEndDate}]} Auth: none needed. |
| mlb_seasons_allA | Every season in MLB history (151+) with key dates — the /seasons/all catalogue. (Plain /seasons only returns the current season; an ?all=true query there is a no-op.) Returns: {seasons:[{seasonId, regularSeasonStartDate, regularSeasonEndDate, seasonStartDate, seasonEndDate, preSeasonStartDate, qualifierPlateAppearances, hasWildcard}]} Auth: none needed. |
| mlb_scheduleA | Game schedule — by single date or startDate/endDate range, optionally for one team. Each game carries gamePk, status, teams and score. Returns: {totalGames, dates:[{date, games:[{gamePk, gameDate, status, teams:{away:{team,score}, home:{team,score}}, venue}]}]} Auth: none needed. |
| mlb_boxscoreA | Full game boxscore — both teams' batting + pitching lines per player, team totals, officials and top performers. Returns: {teams:{away:{team, teamStats, players:{ID#:{stats:{batting,pitching}, position}}}, home:{...}}, officials, topPerformers} Auth: none needed. |
| mlb_linescoreA | Game linescore — runs per inning, R/H/E totals, current inning + state, and on-base/defense for live games. Returns: {currentInning, inningState, isTopInning, innings:[{num, home:{runs,hits,errors}, away:{...}}], teams:{home:{runs,hits,errors}, away:{...}}} Auth: none needed. |
| mlb_playbyplayA | Pitch-by-pitch / play-by-play log — every plate appearance with result, pitches, counts, runners and scoring-play flags. Returns: {allPlays:[{result, about:{inning,halfInning,isScoringPlay}, matchup:{batter,pitcher}, playEvents:[...], count}], scoringPlays, currentPlay} Auth: none needed. |
| mlb_live_feedA | The complete live game feed (v1.1) — gameData (teams, players, venue, weather, probables) + liveData (boxscore, linescore, full plays). The firehose; large. Returns: {gamePk, gameData:{teams, players, venue, weather, probablePitchers}, liveData:{plays, linescore, boxscore, decisions}} Auth: none needed. |
| mlb_standingsA | Division standings — per-team W/L, pct, GB, streak, run differential, wild-card and division ranks. Pass leagueId (103=AL, 104=NL). Returns: {records:[{division, league, teamRecords:[{team, wins, losses, winningPercentage, gamesBack, streak, runDifferential, divisionRank, wildCardRank}]}]} Auth: none needed. |
| mlb_statsA | Season stats query across players — by group (hitting/pitching/fielding) and type (season, career, byDateRange, ...). Sort + limit for top-N tables. Returns: {stats:[{type, group, splits:[{season, player, team, stat:{...}}]}]} Auth: none needed. |
| mlb_player_statsA | One player's stats — by type (season / career / yearByYear / gameLog) and group (hitting/pitching/fielding). Returns: {stats:[{type, group, splits:[{season, stat:{...}, team, league}]}]} Auth: none needed. |
| mlb_leadersB | League leaders for one or more categories (homeRuns, battingAverage, era, strikeouts, wins, saves, ...). Returns: {leagueLeaders:[{leaderCategory, statGroup, season, leaders:[{rank, value, person, team}]}]} Auth: none needed. |
| mlb_draftA | MLB Rule 4 draft results for a year — picks with player, school/team, position and signing info. Filter by round. Returns: {drafts:{draftYear, rounds:[{round, picks:[{pickNumber, person, team, school, position}]}]}} Auth: none needed. |
| mlb_awards_listA | Award definitions catalogue — every awardId with name, description and sport (the id lookup for mlb_awards). Returns: {awards:[{id, name, description, sortOrder, sport, active}]} Auth: none needed. |
| mlb_awardsA | Recipients of an award — e.g. MLBHOF (Hall of Fame), ALMVP/NLMVP, ALCY/NLCY (Cy Young), ALROY/NLROY (Rookie of the Year). Discover awardIds with mlb_awards_list. Returns: {awards:[{id, name, season, player, team, votes}]} Auth: none needed. |
| mlb_attendanceA | Attendance figures for a team or league/season — per-game and aggregate home/away/total gate. Returns: {records:[{openings, attendanceTotal, attendanceAverage, team, season}], aggregateTotals} Auth: none needed. |
| mlb_teamA | Single team detail by id — name, league/division, venue, colours, founding. Returns: {teams:[{id, name, abbreviation, league, division, venue, locationName, firstYearOfPlay}]} Auth: none needed. |
| mlb_team_coachesB | A team's coaching staff — manager, hitting/pitching/bench coaches, etc. Returns: {roster:[{person, jobId, job, title}], teamId} Auth: none needed. Also answers this: espn_core_call. |
| mlb_team_personnelA | A team's front-office / non-uniformed personnel. Returns: {roster:[{person, job, title}], teamId} Auth: none needed. |
| mlb_team_alumniA | Former players (alumni) for a team in a season + group (hitting/pitching/fielding). Returns: {people:[{id, fullName, primaryPosition, mlbDebutDate}]} Auth: none needed. |
| mlb_teams_historyA | Franchise history (name/league/division changes over time) for one or more teams. Returns: {teams:[{id, name, season, league, division, locationName, active}]} Auth: none needed. |
| mlb_teams_affiliatesA | A club's affiliated teams across the minor-league levels. Returns: {teams:[{id, name, sport, league, parentOrgId, parentOrgName}]} Auth: none needed. |
| mlb_team_uniformsA | Uniform assets / descriptions for one or more teams. Returns: {uniforms:[{teamId, uniformAssets:[{uniformAssetText, uniformAssetType, ...}]}]} Auth: none needed. |
| mlb_conferencesB | Conference catalogue (used by some leagues / amateur levels). Returns: {conferences:[{id, name, abbreviation, league, hasWildcard}]} Auth: none needed. |
| mlb_peopleA | Batch player profiles for a list of personIds (the multi-id form of mlb_player). Returns: {people:[{id, fullName, primaryNumber, birthDate, primaryPosition, batSide, pitchHand, currentTeam}]} Auth: none needed. |
| mlb_people_changesA | Player records changed since a timestamp — a polling/sync helper (the people-side sibling of mlb_game_changes). Returns: {people:[{id, fullName, currentAge, birthDate, active, primaryPosition, batSide, pitchHand}]} (can be large for a wide window) Auth: none needed. |
| mlb_sports_playersA | All players in a sport for a season — the full player catalogue (name → id resolution). sportId=1 for MLB. Returns: {people:[{id, fullName, firstName, lastName, primaryNumber, birthDate, currentAge}]} (large) Auth: none needed. |
| mlb_seasonA | Single season detail by seasonId — key dates and game-count info. Returns: {seasons:[{seasonId, regularSeasonStartDate, regularSeasonEndDate, postSeasonStartDate, postSeasonEndDate}]} Auth: none needed. |
| mlb_schedule_postseasonA | Postseason schedule — all playoff games (optionally a single season / series type). Returns: {totalGames, dates:[{date, games:[{gamePk, seriesDescription, teams, status}]}]} Auth: none needed. |
| mlb_schedule_postseason_seriesA | Postseason series view — games grouped by series (e.g. ALDS, NLCS, World Series). Returns: {series:[{series:{id, gameType}, totalItems, games:[...]}]} Auth: none needed. |
| mlb_schedule_postseason_tuneinA | Postseason broadcast 'tune-in' info (where/when to watch playoff games). Returns: {dates:[{games:[{gamePk, broadcasts:[...]}]}]} Auth: none needed. |
| mlb_schedule_tiedB | Tie-breaker / tied games for a season. Returns: {totalGames, dates:[{games:[...]}]} Auth: none needed. |
| mlb_game_win_probabilityA | Win-probability time series for a game — WP after each play, with leverage index. Returns: [{atBatIndex, homeTeamWinProbability, awayTeamWinProbability, leverageIndex, homeTeamWinProbabilityAdded}] (top-level array) Auth: none needed. Also answers this: espn_core_call. |
| mlb_game_context_metricsA | Context metrics for a game — leverage, win-probability and run-expectancy context for the current/most-recent state. Returns: {game, leverageIndex, homeWinProbability, awayWinProbability} Auth: none needed. |
| mlb_game_contentA | Editorial / media content for a game — highlights, recap, media, and (when present) the box-score-and-storylines bundle. Returns: {editorial, media, highlights, summary, gameNotes} Auth: none needed. |
| mlb_player_game_statsA | One player's stat line for one specific game (batting/pitching/fielding for that gamePk). Returns: {stats:[{group, splits:[{stat:{...}, game}]}]} Auth: none needed. |
| mlb_game_changesA | Games changed since a timestamp — a polling helper to detect updated games. Returns: {totalItems, dates:[{games:[{gamePk, gameDate}]}]} Auth: none needed. |
| mlb_game_uniformsA | Uniforms worn in one or more games. Returns: {uniforms:[{gamePk, home:{...}, away:{...}}]} Auth: none needed. |
| mlb_team_statsA | One team's aggregate stats — by season + group (hitting/pitching/fielding) and stat type. Returns: {stats:[{type, group, splits:[{season, team, stat:{...}}]}]} Auth: none needed. |
| mlb_teams_statsA | Aggregate stats across all teams — league-wide team leaderboard by season + group. Sort + limit for top-N. Returns: {stats:[{type, group, splits:[{team, stat:{...}}]}]} Auth: none needed. |
| mlb_team_leadersA | A team's statistical leaders for given categories (e.g. homeRuns, era) in a season. Returns: {teamLeaders:[{leaderCategory, season, leaders:[{rank, value, person}]}]} Auth: none needed. |
| mlb_game_paceA | Game-pace / tempo metrics for a season (pitches per game, time of game, etc.), optionally by team. Returns: {sports:[{...pace}], teams:[{team, ...pace}], leagues:[...]} Auth: none needed. |
| mlb_high_lowA | High / low stat records for an org level — top and bottom performances for a sortStat in a season. Returns: {highLow:[{statType, splits:[{stat, player|team}]}]} Auth: none needed. |
| mlb_transactionsA | Roster transactions — signings, trades, call-ups, IL moves, DFA, etc. Filter by team, player, single date or date range. Returns: {transactions:[{id, person, fromTeam, toTeam, date, typeCode, typeDesc, description]}]} Auth: none needed. |
| mlb_free_agentsA | Free agents for a season — players and their from/to-team signing info. Returns: {freeAgents:[{player, originalTeam, newTeam, dateSigned, dateDeclared, position]}]} Auth: none needed. |
| mlb_draft_prospectsB | Draft prospects for a year (the pre-draft prospect board). Returns: {prospects:[{id, rank, person, school, position}]} Auth: none needed. |
| mlb_jobsA | People holding a job type for a season — jobType e.g. UMPR (umpires), SCORER, DATACASTER, BROADCASTER, COACH. Returns: {roster:[{person, jobType, job}]} Auth: none needed. |
| mlb_umpiresB | Current umpire crew list. Returns: {roster:[{person, jobType, job}]} Auth: none needed. |
| mlb_datacastersB | Datacaster (official scorer-adjacent stringer) assignments. Returns: {roster:[{person, job}]} Auth: none needed. |
| mlb_official_scorersB | Official scorer assignments. Returns: {roster:[{person, job}]} Auth: none needed. |
| mlb_home_run_derbyA | Home Run Derby bracket + results for a derby gamePk. Returns: {info, status, rounds:[{matchups:[{topSeed, bottomSeed, ...}]}]} Auth: none needed. |
| mlb_allstar_ballotA | All-Star Game ballot candidates for a league + season. Returns: {league, candidates:[{position, players:[{person, team}]}]} Auth: none needed. |
| mlb_allstar_writeinsA | All-Star write-in candidates for a league + season. Returns: {league, writeIns:[{person, team, position}]} Auth: none needed. |
| mlb_allstar_final_voteA | All-Star 'Final Vote' candidates for a league + season. Returns: {league, candidates:[{person, team, position}]} Auth: none needed. |
| mlb_metaA | Meta lookup — fetch the valid values for a parameter used elsewhere (stat types, positions, game types, pitch codes, etc.). One tool over the API's /{type} endpoint. Returns: [{...lookup rows}] (shape depends on type; e.g. positions → [{code, name, type, abbrev}]) Auth: none needed. |
| motogp_seasonsA | Every MotoGP season (1949 →) with its uuid — the entry point to everything else. Returns: [{id (uuid), year, current}] (top-level array, newest first) — Example: All seasons Auth: none needed. |
| motogp_eventsA | The Grand Prix weekends in a season, with circuit, country and dates. Returns: [{id (uuid), name, short_name:'QAT', sponsored_name, date_start, date_end, circuit:{id, name, nation}, country:{iso, name}, season, event_files}] Example: Completed rounds of a season {"seasonUuid": "dd12382e-1d9f-46ee-a5f7-c5104db28e43", "isFinished": true} Auth: none needed. |
| motogp_categoriesA | The classes running at one event — MotoGP, Moto2, Moto3, MotoE. Returns: [{id (uuid), name:'MotoGP™', legacy_id}] — Example: Classes at one Grand Prix {"eventUuid": "0f4c9f38-3e30-40f4-8a4a-9e05ba0d0daa"} Auth: none needed. |
| motogp_sessionsA | The sessions for one class at one event — practice, qualifying, sprint and race. Returns: [{id (uuid), type:'RAC'|'SPR'|'Q1'|'Q2'|'FP1'|'PR', number, date, condition:{track, air, humidity, ground, weather}}] — pick type 'RAC' for the race Example: Sessions for MotoGP at one round {"eventUuid": "0f4c9f38-3e30-40f4-8a4a-9e05ba0d0daa", "categoryUuid": "e8c110ad-64aa-4e8e-8a86-f2f152f6a942"} Auth: none needed. |
| motogp_session_classificationA | The result of one session: finishing order, rider, team, bike, time/gap and points. Returns: {classification:[{position, points, total_laps, time, gap:{first, lap}, rider:{id, full_name, number, country}, team:{name}, constructor:{name}, average_speed, top_speed, status}], records, file} Example: A race result {"sessionUuid": "5b0827b6-7faf-4a1b-a4c2-de630ba1941a"} Auth: none needed. |
| motogp_standingsA | Championship standings for one class in one season. Returns: {classification:[{position, points, rider:{id, full_name, number, country}, team:{name}, constructor:{name}}], file} Example: MotoGP riders' championship {"seasonUuid": "dd12382e-1d9f-46ee-a5f7-c5104db28e43", "categoryUuid": "e8c110ad-64aa-4e8e-8a86-f2f152f6a942"} Auth: none needed. |
| mysportsfeeds_gamesA | Games for a season in one league, with scores and venue. Returns: {lastUpdatedOn, games:[{schedule:{id, week, startTime, awayTeam:{id, abbreviation}, homeTeam:{…}, venue, playedStatus}, score:{awayScoreTotal, homeScoreTotal, quarters|periods|innings:[…], currentQuarter, currentIntermission}}]} — SHAPE FROM VENDOR DOCS. NOTE identity lives under NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: This NFL season's games {"league": "nfl", "season": "current"} Auth: needs your own key in MYSPORTSFEEDS_API_KEY. |
| mysportsfeeds_boxscoreA | Full box score for one game, team and player level. Returns: {game:{…}, scoring:{…}, stats:{away:{teamStats:[…], players:[{player:{id, firstName, lastName, position}, playerStats:[…]}]}, home:{…}}} — SHAPE FROM VENDOR DOCS. The NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One game's box score {"league": "nba", "season": "current", "game": "20240115-LAL-BOS"} Auth: needs your own key in MYSPORTSFEEDS_API_KEY. |
| mysportsfeeds_player_gamelogsA | Per-game statistics for players across a season — the cleanest surface this API has. Returns: {gamelogs:[{game:{id, startTime, awayTeamAbbreviation, homeTeamAbbreviation}, player:{id, firstName, lastName, position, jerseyNumber}, team:{id, abbreviation}, stats:{…sport-specific groups…}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: A team's player game logs {"league": "nba", "season": "current", "team": ["LAL"]} Auth: needs your own key in MYSPORTSFEEDS_API_KEY. |
| mysportsfeeds_standingsA | Standings for a league and season. Returns: {teams:[{team:{id, abbreviation, city, name}, stats:{standings:{wins, losses, winPct, gamesBack}}, divisionRank:{rank, gamesBack}, conferenceRank:{…}, overallRank:{…}}]} — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: This season's standings {"league": "nba", "season": "current"} Auth: needs your own key in MYSPORTSFEEDS_API_KEY. |
| mysportsfeeds_injuriesA | Current injury list for a league. Returns: {players:[{id, firstName, lastName, position, currentTeam:{abbreviation}, currentInjury:{description, playingProbability}}]} — SHAPE FROM VENDOR DOCS. Note there is NO season segment on this path — injuries are always 'now'. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: NBA injuries {"league": "nba"} Auth: needs your own key in MYSPORTSFEEDS_API_KEY. Also answers this: espn_site_call, espnfantasy_player_info, sportsdataio_nfl_injuries. |
| nascar_race_listA | Every race in a season across all three series, with winner, track, distance, cautions and lead changes. LARGE (~430 KB). Returns: {series_1:[{race_id, series_id, race_season, race_name, track_name, track_id, date_scheduled, scheduled_distance, actual_laps, number_of_cautions, number_of_lead_changes, average_speed, margin_of_victory, pole_winner_driver_id, winner_driver_id, attendance}], series_2:[…], series_3:[…]} — series 1=Cup, 2=Xfinity, 3=Truck Example: 2024 season across all series {"season": 2024} Auth: none needed. |
| nascar_weekend_feedA | One race weekend in full: the finishing order with laps led, points and status, plus every practice and qualifying run. Returns: {weekend_race:[{race_id, race_name, track_name, results:[{finishing_position, starting_position, car_number, driver_fullname, team_name, laps_completed, laps_led, points_earned, status, delta_leader}], caution_segments, race_comments}], weekend_runs:[{run_type, run_name, results:[{finishing_position, driver_name, best_lap_time, best_lap_speed}]}]} — Example: One Cup race weekend {"season": 2024, "series": 1, "raceId": 5376} Auth: none needed. |
| nba_scoreboard_todayA | Today's games from the live CDN scoreboard: matchups, period/clock state, live scores and game ids. The fastest way to get today's gameId values for nba_boxscore / nba_playbyplay. Returns: {scoreboard:{gameDate, games:[{gameId, gameStatus, gameStatusText, period, gameClock, homeTeam, awayTeam}]}} Example: Today's NBA scoreboard. Auth: none needed. |
| nba_scheduleA | Full league schedule for the current season (every game, date, broadcasters, arena). Large payload (~8 MB) — prefer nba_scoreboard_today for just today. Returns: {leagueSchedule:{seasonYear, gameDates:[{gameDate, games:[{gameId, homeTeam, awayTeam, ...}]}]}} Example: Whole-season schedule. Auth: none needed. |
| nba_boxscoreA | Live/final box score for one game from the CDN: per-player and per-team stat lines, by period. gameId comes from nba_scoreboard_today or nba_schedule. Returns: {game:{gameId, homeTeam:{teamId, players:[{name, statistics}]}, awayTeam:{...}}} Example: Box score for one game. {"gameId": "0022300001"} Auth: none needed. |
| nba_playbyplayA | Event-level play-by-play log for one game from the CDN: every action with clock, score, player and description. gameId from nba_scoreboard_today / nba_schedule. Returns: {game:{gameId, actions:[{actionNumber, period, clock, scoreHome, scoreAway, description}]}} Example: Play-by-play for one game. {"gameId": "0022300001"} Auth: none needed. |
| nba_odds_todayA | Sportsbook odds for today's games from the live CDN odds feed (spread, money line, total per game and book). Returns: {games:[{gameId, markets:[{name, books:[{name, outcomes:[...]}]}]}]} Example: Today's game odds. Auth: none needed. |
| nba_daily_lineupsA | Projected/confirmed starting lineups for a date's games, from the stats.nba.com JS data feed. date is YYYYMMDD. Returns: {games:[{gameId, homeTeam, awayTeam, lineups}]} (feed shape varies) Example: Daily lineups for a date. {"date": "20260101"} Auth: none needed. |
| nba_stats_callA | Gateway to the stats.nba.com /stats/ analytics API (138 operations). Supply an
Returns: (JSON object) Auth: none needed. |
| nbl_seasonsA | Every NBL season (~73: NBL27, NBL26, blitz/preseason/tournament variants…), each with id (UUID), name, year (season start year), season_type, the Genius external_id, and start/end dates. The discovery entry point — take a season's Returns: {type, count, source, data:[{id, name, year, season_type, external_id, start_date, end_date, competition}]} Auth: none needed. |
| nbl_season_currentA | The current season(s). Convenience shortcut over nbl_seasons; may return empty in the deep off-season (the call still resolves). Use Returns: {type, count, data:[{id, name, year, season_type, external_id, start_date, end_date}]} Auth: none needed. |
| nbl_teamsA | The NBL club catalogue (~78 incl. historical/relocated franchises) — each with id (UUID), name, team_code, team_nickname, logos and brand colours. Join team_id from nbl_players / nbl_schedule back to here. Returns: {type, count, data:[{id, external_id, name, team_code, team_nickname, team_logo, color_primary, color_secondary}]} Auth: none needed. |
| nbl_ladderA | The NBL ladder (standings) for one season — 10 clubs with position, played/won/lost, points_percentage, win_percentage, points_for/against, last_5 and current streak. Returns: {type, count, data:[{id, position, played, won, lost, points_percentage, win_percentage, points_for, points_against, last_5, streak, team}]} Example: Current-season ladder {"year": 2025, "seasonType": "regular"} Auth: none needed. |
| nbl_scheduleA | Every match for one season — each with start_time, round, match_status (complete/upcoming/live), home/away scores, attendance, match_slug/title, a play_by_play flag, the Genius external_id, and full home_team/away_team objects (name, team_code, logos, colours). Returns: {type, count, data:[{id, external_id, start_time, round, match_status, home_score, away_score, attendance, match_slug, match_title, play_by_play, home_team:{id, name, team_code, team_logo, color_primary}, away_team:{…}}]} Example: Full NBL26 schedule + results {"year": 2025, "seasonType": "all"} Auth: none needed. |
| nbl_match_outcomesA | Per-team match outcomes (results) for a season — win/loss rows by team, for head-to-head and form analysis. Returns: {type, count, data:[{team, …per-match outcome rows}]} Auth: none needed. |
| nbl_next_matchesA | Upcoming matches across all NBL teams for a season (empty in the deep off-season). For the full fixture incl. completed games use nbl_schedule. Returns: {type, count, data:[{id, start_time, round, home_team, away_team}]} Auth: none needed. |
| nbl_playersA | All players for one season (~165) — each with jersey_number, playing_position and embedded player {id, first_name, last_name, …}, team and season objects. The player Returns: {type, count, data:[{jersey_number, playing_position, player:{id, first_name, last_name}, team:{id, name, team_code}, season}]} Example: All NBL26 players {"year": 2025} Auth: none needed. |
| nbl_team_rosterA | One team's roster for a season. teamId comes from the team objects in nbl_players / nbl_schedule / nbl_ladder. Returns: {type, count, data:[{jersey_number, playing_position, player:{id, first_name, last_name}, team}]} Auth: none needed. |
| nbl_player_statsA | Season statistics for one player — points/rebounds/assists/blocks/steals/turnovers and their per-game averages, shooting splits (field goals / three-pointers / free throws made-attempted-percentage), fouls, minutes. playerId is the player UUID from nbl_players. Returns: {type, count, data:[{points_average, rebounds_total_average, assists_average, blocks_average, steals_average, turnovers_average, field_goals_percentage, three_pointers_percentage, free_throws_percentage, fouls_average, minutes}]} Auth: none needed. |
| nbl_player_boxscoresA | Game-by-game box scores for one player across a season — per match the points/rebounds/assists/blocks/steals/turnovers and playing position. The score-series / game-log source. Returns: {type, count, data:[{period, playing_position, points, rebounds, assists, blocks, steals, turnovers}]} Auth: none needed. |
| nbl_team_statsA | Team statistics for a season — totals and per-game averages across assists, rebounds (offensive/defensive), blocks, steals, turnovers, and shooting (field goals / three-pointers / free throws made-attempted-percentage). Returns: {type, count, data:[{team, assists, assists_average, defensive_rebounds, blocks, steals, turnovers, field_goals_made, field_goals_attempted, field_goals_percentage, three_pointers_percentage}]} Example: Team stats, current season {"year": 2025, "seasonType": "regular"} Auth: none needed. |
| nbl_stat_leadersA | Season statistical leaders (points/rebounds/assists/etc. averages, per player) for one season — pass the season UUID ( Returns: {type, count, data:[{player, team, points_average, rebounds_total_average, assists_average, field_goals_percentage, three_pointers_made_average, …}]} Example: Top 50 scorers for NBL26 {"seasonId": "1f8e4a79-e98b-457b-85a5-e4b898c6c0bd", "limit": 50, "sort": "-points_average"} Auth: none needed. |
| nbl_newsA | NBL news articles (latest ~200) — each with title, slug, body (HTML), excerpt, sub_headline, byline, published_date, categories/tags, a related_player and match_slug link, and featured_image_url. NOTE: this feed returns a RAW ARRAY (not the {type,count,data} envelope). Use Returns: array of {id, status, title, slug, body, excerpt, sub_headline, byline, published_date, categories, tags, related_player, match_slug, featured_image_url, likes} (RAW ARRAY, not enveloped) Example: Latest 10 NBL articles {"limit": 10} Auth: none needed. |
| ncaa_scoreboardA | Current scoreboard for one college sport and division — games with scores, state and clock. Returns: {updated_at, games:[{game:{gameID, startDate, startTime, gameState, currentPeriod, contestClock, home:{names:{short, full}, score, winner, conferences}, away:{…}, url, network}}]} — note each entry is a one-key object wrapping Example: FBS football scoreboard {"sport": "football", "division": "fbs"} Auth: none needed. |
| ncaa_standingsA | Conference standings for a college sport and division. Returns: {sport, title, updated, page, pages, data:[{conference:'ACC', standings:[{School, 'Conference W', 'Conference L', 'Overall W', 'Overall L', 'Overall PF', 'Overall PA', 'Overall HOME', 'Overall AWAY', 'Overall STREAK'}]}]} — GROUPED BY CONFERENCE: data[] is one entry per conference, each holding its own Example: FBS football standings {"sport": "football", "division": "fbs"} Auth: none needed. |
| ncaa_rankingsA | Poll rankings — AP, coaches and others — for a college sport and division. Returns: {sport, title, updated, page, pages, data:[{RANK, SCHOOL, POINTS, PREVIOUS, RECORD}]} — keys here are UPPERCASE, unlike standings Example: AP football poll {"sport": "football", "division": "fbs", "poll": "associated-press"} Auth: none needed. |
| nhl_seasonsA | Every season the standings API covers, with its start/end dates and which rules applied — call this to get valid season ids. Returns: {currentDate, seasons:[{id:20242025, standingsStart, standingsEnd, conferencesInUse, divisionsInUse, tiesInUse, wildcardInUse, pointForOTlossInUse}]} — Example: All seasons Auth: none needed. |
| nhl_rosterA | A club's full roster for one season, split into forwards / defensemen / goalies with bio, height/weight, shoots-catches and birthplace. Returns: {forwards:[…], defensemen:[…], goalies:[{id, firstName, lastName, sweaterNumber, positionCode, shootsCatches, heightInInches, weightInPounds, birthDate, birthCity, birthCountry, headshot}]} — three parallel arrays, NOT one Example: Toronto's 2024-25 roster {"team": "TOR", "season": "20242025"} Auth: none needed. |
| nhl_playerA | One player's landing page: bio, draft details, current season splits, career totals and awards. Returns: {playerId, firstName, lastName, position, sweaterNumber, currentTeamAbbrev, birthDate, birthCity, birthCountry, draftDetails:{year, round, overallPick, teamAbbrev}, featuredStats, careerTotals:{regularSeason, playoffs}, seasonTotals:[…], awards:[{trophy, seasons}]} Example: Connor McDavid {"playerId": 8478402} Auth: none needed. |
| nhl_scheduleA | League schedule for the current week (or a given date's week), grouped by day. Returns: {gameWeek:[{date, dayAbbrev, numberOfGames, games:[{id, startTimeUTC, gameState, gameType, homeTeam:{abbrev, score}, awayTeam:{…}, venue}]}], regularSeasonStartDate, regularSeasonEndDate, playoffEndDate, nextStartDate, previousStartDate} Example: This week's games {"date": "now"} Auth: none needed. |
| nhl_club_scheduleA | One club's entire season schedule with results — the team game log. Returns: {games:[{id, gameDate, gameType, gameState, homeTeam:{abbrev, score}, awayTeam:{abbrev, score}, gameOutcome:{lastPeriodType}, venue, neutralSite}], currentSeason, previousSeason, nextSeason, clubTimezone} (~200 KB for a full season) Example: Toronto's full 2024-25 season {"team": "TOR", "season": "20242025"} Auth: none needed. |
| nhl_scoresA | Live scoreboard: every game on a date with current score, clock and period. Returns: {currentDate, prevDate, nextDate, games:[{id, gameState, gameScheduleState, startTimeUTC, homeTeam:{abbrev, score, sog}, awayTeam:{…}, clock:{timeRemaining, running, inIntermission}, periodDescriptor:{number, periodType}, goals:[…]}], gameWeek:[…]} Example: Today's scores {"date": "now"} Auth: none needed. |
| nhl_boxscoreA | Full box score for one game: both lineups with goals, assists, plus-minus, shots, hits, blocks and time on ice. Returns: {id, gameDate, gameState, gameOutcome, homeTeam:{abbrev, score, sog}, awayTeam:{…}, playerByGameStats:{homeTeam:{forwards:[{playerId, name, goals, assists, points, plusMinus, sog, hits, blockedShots, toi}], defense:[…], goalies:[…]}, awayTeam:{…}}, clock, periodDescriptor} Example: One completed game {"gameId": 2024020500} Auth: none needed. |
| nhl_game_landingA | Game landing page: scoring summary by period, three stars, penalties and team game stats. Returns: {id, gameDate, gameState, homeTeam, awayTeam, summary:{scoring:[{periodDescriptor, goals:[{timeInPeriod, firstName, lastName, assists, strength}]}], penalties:[…], threeStars:[…], teamGameStats:[…]}, clock} Example: One completed game {"gameId": 2024020500} Auth: none needed. |
| nhl_standingsA | League standings with division/conference/wildcard sequencing and clinch indicators. Returns: {standings:[{teamName:{default}, teamAbbrev:{default}, conferenceName, divisionName, gamesPlayed, wins, losses, otLosses, points, pointPctg, goalFor, goalAgainst, goalDifferential, divisionSequence, conferenceSequence, wildcardSequence, l10Wins, streakCode, streakCount, clinchIndicator}], wildCardIndicator, standingsDateTimeUtc} Example: Current standings {"date": "now"} Auth: none needed. |
| nhl_skater_leadersA | League leaders among skaters — goals, assists, points, plus-minus, power-play and short-handed goals, penalty minutes, ice time. Returns: {goals:[{id, firstName:{default}, lastName:{default}, teamAbbrev, position, value, headshot}], assists:[…], points:[…], plusMinus:[…], goalsPp:[…], goalsSh:[…], penaltyMins:[…], toi:[…]} — one array per category Example: Current season leaders {"season_or_current": "current", "limit": 10} Auth: none needed. |
| nhl_goalie_leadersA | League leaders among goalies — wins, save percentage, goals-against average and shutouts. Returns: {wins:[{id, firstName:{default}, lastName:{default}, teamAbbrev, value, headshot}], savePctg:[…], goalsAgainstAverage:[…], shutouts:[…]} Example: Current goalie leaders {"season_or_current": "current", "limit": 10} Auth: none needed. |
| nrl_competitionsA | Global Champion Data competition catalogue. Returns every competition id (NRL, State of Origin, plus other Champion Data sports) with its season and round count. Find the NRL competitionId here (e.g. 12999 = 2026 NRL Premiership, 13009 = 2026 State of Origin) to pass to nrl_fixture / nrl_match. Returns: {competitionDetails:{competition:[{id, name, season, rounds, regulationPeriods, regulationPeriodLength}]}} Example: All Champion Data competitions (filter client-side for NRL by name/season). Auth: none needed. |
| nrl_application_settingsA | NRL match-centre application config: the current-season competition list (competitionList), stat-grid column layouts (dataGrids), UI components and team/competition image paths. Handy for discovering the active competitionIds and which statistics the official site surfaces. Returns: {applicationInfo, userInfo, competitionList, components, dataGrids, shellGroups} Example: Current NRL competition list + stat-grid config. Auth: none needed. |
| nrl_fixtureA | Full fixture + results for one competition. One entry per match with round, status, kickoff times (local + UTC), home/away squad ids/names/scores and venue. Use it to list a round's games and to resolve the matchId for nrl_match. Returns: {fixture:{match:[{matchId, roundNumber, matchStatus, utcStartTime, localStartTime, homeSquadId, homeSquadName, homeSquadScore, awaySquadId, awaySquadName, awaySquadScore, venueId, venueName}]}} Example: Every 2026 NRL Premiership match (round + result). {"competitionId": 12999} Auth: none needed. |
| nrl_matchA | Full match file: per-player match statistics (tries, tackles, runMetres, lineBreaks, tryAssists, offloads, handlingErrors, metresGained, …), per-period player stats, team/player rosters, period durations, sin bins and on-report records. This is the per-player, per-match stat source. Decode stat codes via the nrl://stats/definitions resource. Returns: {matchStats:{matchInfo, teamInfo:{team[]}, playerInfo:{player[]}, periodInfo:{qtr[]}, playerStats:{player[]}, playerPeriodStats:{player[]}, sinBins:{binned[]}, reports:{onReport[]}, created}, jobId} Example: Knights v Cowboys, round 1 2026 — full player stat lines. {"competitionId": 12999, "matchId": 129990101} Auth: none needed. |
| oddsapiio_sportsA | The 34 sports covered, with the slug every other tool needs. VERIFIED live — works without a key. Returns: [{name:'Football', slug:'football'}] — VERIFIED live: 34 entries, slugs include football, basketball, tennis, baseball, american-football, ice-hockey, esports, darts, mixed-martial-arts, boxing, handball, volleyball, snooker, table-tennis, rugby, cricket, aussie-rules, gaelic-football, padel, bandy, golf, cycling. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Every sport Auth: needs your own key in ODDS_API_IO_KEY. |
| oddsapiio_bookmakersB | The 274 bookmakers indexed, and whether each is currently active. VERIFIED live — works without a key. Returns: [{name:'10BET', active:true}] — VERIFIED live: 274 entries, 263 active. Names are the vendor's own spelling and are what the odds calls filter on. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Every bookmaker Auth: needs your own key in ODDS_API_IO_KEY. |
| oddsapiio_leaguesA | Leagues within a sport. NEEDS A KEY. Returns: [{id, name, country, sport}] — SHAPE FROM VENDOR DOCS, not probed. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Football leagues {"sport": "football"} Auth: needs your own key in ODDS_API_IO_KEY. |
| oddsapiio_eventsA | Upcoming events for a sport or league, without prices. NEEDS A KEY. Returns: [{id, sport, league, home, away, starts, status}] — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: Upcoming football {"sport": "football"} Auth: needs your own key in ODDS_API_IO_KEY. |
| oddsapiio_oddsA | Odds for one event across the indexed bookmakers. NEEDS A KEY. Returns: {id, home, away, starts, bookmakers:{'':{markets…}}} — SHAPE FROM VENDOR DOCS. Reported to key bookmakers by NAME rather than as a list; inspect what you receive before indexing. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: One event's odds {"eventId": ""} Auth: needs your own key in ODDS_API_IO_KEY. |
| opendota_heroesA | The hero catalogue — id, name, primary attribute, attack type and roles. Returns: [{id, name:'npc_dota_hero_antimage', localized_name:'Anti-Mage', primary_attr:'agi', attack_type:'Melee', roles:[str], legs}] (top-level array, ~127 heroes) Example: All heroes Auth: none needed. |
| opendota_hero_statsA | Per-hero win and pick counts broken down by skill bracket — the hero meta. Returns: [{id, localized_name, pro_pick, pro_win, pro_ban, 1_pick, 1_win, …, 8_pick, 8_win}] — the numeric prefixes are skill brackets (1=lowest … 8=highest); win rate is _win / _pick, NOT a percentage field Example: Hero meta across brackets Auth: none needed. |
| opendota_teamsA | Professional teams ranked by rating, with win/loss records. Returns: [{team_id, name, tag, rating, wins, losses, last_match_time, logo_url}] (~250 KB, ordered by rating) Example: Pro teams by rating Auth: none needed. |
| opendota_leaguesA | Every Dota 2 league/tournament OpenDota knows. LARGE (~1 MB) — includes years of historical events. Returns: [{leagueid, name, tier:'premium'|'professional'|'amateur', ticket, banner}] (~1 MB — filter client-side by tier) Example: All leagues Auth: none needed. |
| opendota_pro_matchesA | Recent professional matches with teams, league, duration and result. Returns: [{match_id, duration, start_time, radiant_team_id, radiant_name, dire_team_id, dire_name, leagueid, league_name, series_id, series_type, radiant_score, dire_score, radiant_win}] — Dota sides are RADIANT and DIRE, not home/away; Example: Latest pro matches Auth: none needed. |
| opendota_matchA | Full detail for one match: every player's hero, items, KDA, gold/XP curves and objectives. LARGE (~250 KB). Returns: {match_id, duration, radiant_win, radiant_score, dire_score, league, players:[{account_id, hero_id, player_slot, kills, deaths, assists, gold_per_min, xp_per_min, last_hits, hero_damage, items, gold_t:[…], xp_t:[…]}], objectives, picks_bans, teamfights} — player_slot < 128 means Radiant Example: One professional match {"match_id": 8937822821} Auth: none needed. |
| opendota_public_matchesA | A sample of recent public (non-professional) matches — the ladder meta rather than the pro scene. Returns: [{match_id, start_time, duration, avg_rank_tier, radiant_win, radiant_team:[hero_id], dire_team:[hero_id]}] — hero ids only, no player identity Example: Recent public matches Auth: none needed. |
| opendota_playerA | A player's profile with rank tier and estimated MMR. Returns: {profile:{account_id, personaname, name, avatarfull, steamid, country_code, is_pro}, rank_tier, leaderboard_rank, competitive_rank} — rank_tier is two digits: tens=medal (1 Herald … 8 Immortal), units=star Example: One player's profile {"account_id": 88367253} Auth: none needed. |
| opendota_player_matchesA | A player's recent matches with hero, result and KDA. Returns: [{match_id, player_slot, radiant_win, duration, hero_id, kills, deaths, assists, start_time, lane_role}] — you won a match when (player_slot < 128) == radiant_win Example: Last 20 matches {"account_id": 88367253, "limit": 20} Auth: none needed. |
| opendota_player_winlossA | A player's win/loss totals, with the same filters as their match list. Returns: {win, lose} — two integers Example: Career win/loss {"account_id": 88367253} Auth: none needed. |
| opendota_player_heroesA | Which heroes a player uses and how they perform on each. Returns: [{hero_id, games, win, with_games, with_win, against_games, against_win, last_played}] — ordered by games played; join hero_id via opendota_heroes Example: Hero pool {"account_id": 88367253} Auth: none needed. |
| openf1_meetingsA | Grand Prix weekends (meetings). Filter by year/country, or pass meeting_key=latest for the current event. Returns: [{meeting_key, meeting_name, meeting_official_name, country_name, country_code, circuit_short_name, location, year, date_start}] (top-level array) Auth: none needed. |
| openf1_sessionsA | F1 sessions (Practice / Qualifying / Sprint / Race). This is the fixtures feed — filter by year, country or session_name to find a session_key. Returns: [{session_key, session_name, session_type, date_start, date_end, meeting_key, circuit_short_name, country_name, year}] (top-level array) Auth: none needed. |
| openf1_driversA | Drivers entered in a session — number, name, acronym, team and colours. Pass session_key (or 'latest'). Returns: [{driver_number, full_name, name_acronym, broadcast_name, team_name, team_colour, headshot_url, session_key, meeting_key}] (top-level array) Auth: none needed. |
| openf1_session_resultA | Final classification of a session — per-driver position, laps, points, gap, DNF/DNS/DSQ flags. Returns: [{position, driver_number, number_of_laps, points, dnf, dns, dsq, duration, gap_to_leader, session_key}] (top-level array) Auth: none needed. |
| openf1_starting_gridA | Race starting grid — per-driver grid position and lap time. (Sparse feed: OpenF1 returns a 404 'No results found' for sessions where no grid is published, which is currently most of them.) Returns: [{position, driver_number, lap_duration, session_key, meeting_key}] (top-level array) Auth: none needed. |
| openf1_championship_driversA | Drivers' championship standings around a race — points and position before/after the session. Returns: [{driver_number, position_start, position_current, points_start, points_current, session_key}] (top-level array) Auth: none needed. |
| openf1_championship_teamsA | Constructors' championship standings around a race — points and position before/after the session. Returns: [{team_name, position_start, position_current, points_start, points_current, session_key}] (top-level array) Auth: none needed. |
| openf1_overtakesA | Overtake events in a race — who passed whom, when, and for which position. Returns: [{date, overtaking_driver_number, overtaken_driver_number, position, session_key}] (top-level array) Auth: none needed. |
| openf1_lapsA | Per-lap timing for a driver — lap + sector durations, speed-trap (i1/i2/st) speeds, mini-sector segment colours, pit-out flag. Returns: [{driver_number, lap_number, lap_duration, duration_sector_1/2/3, i1_speed, i2_speed, st_speed, is_pit_out_lap, segments_sector_1/2/3, date_start}] (top-level array) Auth: none needed. |
| openf1_pitA | Pit stops — lap, total time in pit lane and stationary stop duration per driver. Returns: [{date, driver_number, lap_number, pit_duration, lane_duration, stop_duration, session_key}] (top-level array) Auth: none needed. |
| openf1_stintsA | Tyre stints — compound and tyre age per driving period (lap_start → lap_end). Returns: [{stint_number, driver_number, lap_start, lap_end, compound, tyre_age_at_start, session_key}] (top-level array) Auth: none needed. |
| openf1_intervalsA | Live gap data during a race — each driver's gap to the leader and interval to the car ahead, sampled over time. Returns: [{date, driver_number, gap_to_leader, interval, session_key}] (top-level array) Auth: none needed. |
| openf1_positionA | Driver track position over time — position changes throughout a session. Returns: [{date, driver_number, position, session_key, meeting_key}] (top-level array) Auth: none needed. |
| openf1_car_dataA | Car telemetry at ~3.7 Hz — speed, throttle, brake, gear, RPM, DRS. HIGH VOLUME: always pass session_key + driver_number. Returns: [{date, driver_number, speed, throttle, brake, n_gear, rpm, drs, session_key}] (top-level array; large — use date>=/date<= operators on the raw API to window it) Auth: none needed. |
| openf1_locationA | Car (x, y, z) track position at ~3.7 Hz. HIGH VOLUME: always pass session_key + driver_number (and ideally a date window on the raw API). Returns: [{date, driver_number, x, y, z, session_key}] (top-level array; large) Auth: none needed. |
| openf1_race_controlA | Race-control messages — flags, safety cars, incidents, investigations, penalties — the official message feed. Returns: [{date, category, flag, scope, sector, lap_number, driver_number, message, session_key}] (top-level array) Auth: none needed. |
| openf1_team_radioB | Team-radio clips — recording URLs of driver/pit-wall radio exchanges during a session. Returns: [{date, driver_number, recording_url, session_key, meeting_key}] (top-level array) Auth: none needed. Also answers this: afl_live_audio. |
| openf1_weatherA | Track weather, updated ~once a minute — air/track temperature, humidity, pressure, wind, rainfall. Returns: [{date, air_temperature, track_temperature, humidity, pressure, wind_speed, wind_direction, rainfall, session_key}] (top-level array) Auth: none needed. |
| openligadb_leaguesA | Every competition + season OpenLigaDB carries — call this to find the league shortcut and season year the other tools need. Returns: [{leagueId, leagueName, leagueShortcut:'bl1', leagueSeason:'2024', sport:{sportId, sportName}}] (~819 entries, ~120 KB) Example: All competitions Auth: none needed. |
| openligadb_teamsA | The clubs contesting one league season. Returns: [{teamId, teamName, shortName, teamIconUrl, teamGroupName}] Example: 2024/25 Bundesliga clubs {"league": "bl1", "season": "2024"} Auth: none needed. |
| openligadb_matchdaysA | The matchdays ('groups') in a season — OpenLigaDB calls a Spieltag a 'group'. Returns: [{groupID, groupName:'1. Spieltag', groupOrderID}] — groupOrderID is the matchday number the match tools take Example: Bundesliga matchdays {"league": "bl1", "season": "2024"} Auth: none needed. |
| openligadb_current_matchdayA | Which matchday a league is currently on — resolve 'this week' without guessing. Returns: {groupID, groupName:'1. Spieltag', groupOrderID} — a single object, not a list Example: Current Bundesliga matchday {"league": "bl1"} Auth: none needed. |
| openligadb_season_matchesA | Every match in a league season with results. LARGE (~550 KB for a Bundesliga season) — prefer the matchday tool. Returns: [{matchID, matchDateTime, matchDateTimeUTC, timeZoneID, leagueName, leagueSeason, group:{groupName, groupOrderID}, team1:{teamId, teamName}, team2:{…}, matchIsFinished, matchResults:[{resultName:'Endergebnis'|'Halbzeit', pointsTeam1, pointsTeam2}], goals:[…], location}] Example: Whole 2024/25 Bundesliga season {"league": "bl1", "season": "2024"} Auth: none needed. |
| openligadb_matchday_matchesA | One matchday's fixtures and results — the everyday call. Returns: Same shape as openligadb_season_matches, restricted to one matchday (~9 matches for the Bundesliga) Example: Matchday 1 of 2024/25 {"league": "bl1", "season": "2024", "matchday": 1} Auth: none needed. |
| openligadb_matchA | One match by id, with goals and scorers. Returns: {matchID, matchDateTime, team1, team2, matchIsFinished, matchResults:[…], goals:[{goalID, scoreTeam1, scoreTeam2, matchMinute, goalGetterName, isPenalty, isOwnGoal}], location} Example: A single match {"matchId": 66222} Auth: none needed. |
| openligadb_tableA | The league table for a season. Returns: [{teamInfoId, teamName, shortName, points, opponentGoals, goals, matches, won, lost, draw, goalDiff, teamIconUrl}] — ordered top to bottom; Example: Bundesliga table {"league": "bl1", "season": "2024"} Auth: none needed. |
| pandascore_videogamesA | The titles PandaScore covers, with the slug every other tool needs. Call this first rather than guessing a slug. Returns: [{id, name:'Counter-Strike', slug:'cs-go', current_version}] (top-level array) — SHAPE FROM VENDOR DOCS. NOTE: this shape is from the vendor's documentation and has NOT been verified against a live response (we hold no key for this provider). Treat it as approximate — inspect the actual payload before relying on a field name. Example: All titles Auth: needs your own key in PANDASCORE_TOKEN. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| compare-odds | Compare prices for one event across every enabled bookmaker and report the spread. |
| arb-scan | Measure enabled bookmakers against a de-vigged sharp line (exchange / prediction market). |
| racing-next-to-go | The next races to jump, with prices across the enabled books. |
| whats-on-today | What's on today across the enabled sports feeds. |
| team-deep-dive | Form, ladder position and recent results for one team, from official feeds. |
| fantasy-waiver-wire | Waiver-wire candidates for a fantasy league, ranked with the reasoning shown. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| _catalog | |
| _catalog | |
| _ref | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _ref | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _catalog | |
| _capabilities |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DanielTomaro13/sportsdata-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server