Sports Data API
The Sports Data API returns live scores, fixtures and standings as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary scores endpoint returns events with teams, score, status and competition, and you can pull fixtures, standings, a team, its roster, a match summary and odds. It is built for sports apps, betting tools and fan products that need live sports data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/sports-data/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "Arsenal",
"type": "team"
}
}{
"ok": true,
"meta": {
"api": "sports-data",
"endpoint": "search",
"mode": "live",
"latency_ms": 288.5,
"record_count": 1,
"bytes": 17171,
"cache_hit": false,
"completeness_pct": 100,
"source": "espn",
"engine": "sports-data"
},
"data": {
"type": "team",
"query": "Arsenal",
"results": [
{
"source_id": "133604",
"name": "Arsenal",
"league": "English Premier League",
"sport": "Soccer",
"country": "England",
"formed_year": "1892",
"stadium": "Emirates Stadium",
"badge": "https://r2.thesportsdb.com/images/media/team/badge/uyhbfe[redacted-phone].png",
"website": "www.arsenal.com"
}
],
"count": 1
}
}What the Sports Data API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| scores | Live and final scores for a league — pass a date (YYYYMMDD) or range to get scores for any day; omit it for today/in-play games. | Content platforms call scores to get live and final scores for a league. | sport, league, date, dates |
| fixtures | Upcoming fixtures and the match schedule for a league, by date or date range (same event shape as scores). | Research tools call fixtures to get upcoming fixtures and the match schedule for a league, by date or date range (same event shap…. | sport, league, date, dates |
| standings | Full league table / standings with wins, losses, points and per-team stats (soccer leagues accept a season year). | Community analysts call standings to get full league table / standings with wins, losses, points and per-team stats (soccer leagues ac…. | sport, league, season |
| team | Every team in a league, or one team's detail (record, next game, logo) when you pass a team_id. | Media monitors call team to get every team in a league, or one team's detail (record, next game, logo) when you pass a team_id.. | sport, league, team_id |
| roster | A team's full roster / squad with jersey, position, age, height, weight and nationality for each player. | Content platforms call roster to get a team's full roster / squad with jersey, position, age, height, weight and nationality for e…. | sport, league, team_id |
| summary | Full match summary: boxscore, per-player stats, lineups, play-by-play count, head-to-head, win probability and odds. | Research tools call summary to get full match summary. | sport, league, event_id |
| odds | Betting odds (moneyline, spread, over/under) — for one game by event_id, or every scheduled game in the league that has odds. | Community analysts call odds to get betting odds (moneyline, spread, over/under). | sport, league, event_id, dates |
| news | Latest news headlines and articles for a league. | Media monitors call news to get latest news headlines and articles for a league.. | sport, league |
| search | Look up a team or player by name across all sports (returns ids, badges, league, country) — start here when you only have a name. | Content platforms call search to look up a team or player by name across all sports (returns ids, badges, league, country). | query, type |
| injuries | Current injury report for a league, grouped by team, with each player's status and detail. | Research tools call injuries to get current injury report for a league, grouped by team, with each player's status and detail.. | sport, league |
| team_schedule | One team's full season schedule and results (every game the team plays, unlike league-wide fixtures). | Community analysts call team_schedule to get one team's full season schedule and results (every game the team plays, unlike league-wide fi…. | sport, league, team_id, season |
| conferences | A league's conference / division structure (the directory of groups and sub-groups, e.g. college conferences). | Media monitors call conferences to get a league's conference / division structure (the directory of groups and sub-groups, e.g. | sport, league |
| leagues | Directory of every supported league/competition (key, name, sport) — call this first to discover the league keys the other actions take. | Content platforms call leagues to get directory of every supported league/competition (key, name, sport). | sport |
| entity_search | search players/teams/tournaments/managers/referees → SofaScore ids | Research tools call entity_search to search players/teams/tournaments/managers/referees → SofaScore ids. | query |
| live_events | all in-play events for a sport | Community analysts call live_events to get all in-play events for a sport. | sport |
| scheduled_events | all scheduled events for a sport on a date | Media monitors call scheduled_events to get all scheduled events for a sport on a date. | sport, date |
| tournament_seasons | Every season available for a competition (season id + year) — use the id to scope season-specific calls. | Content platforms call tournament_seasons to get every season available for a competition (season id + year). | league |
| match_statistics | detailed match stats (possession/shots/xG) | Research tools call match_statistics to get detailed match stats (possession/shots/xG). | event_id |
| match_lineups | lineups + per-player ratings & stats | Community analysts call match_lineups to get lineups + per-player ratings & stats. | event_id |
| match_momentum | attack-momentum graph | Media monitors call match_momentum to get attack-momentum graph. | event_id |
| match_incidents | goal/card/sub timeline | Content platforms call match_incidents to get goal/card/sub timeline. | event_id |
| match_best_players | best player per team | Research tools call match_best_players to get best player per team. | event_id |
| match_h2h | head-to-head duel record | Community analysts call match_h2h to get head-to-head duel record. | event_id |
| match_managers | both managers for a match | Media monitors call match_managers to get both managers for a match. | event_id |
| match_odds | multi-market odds for a match | Content platforms call match_odds to get multi-market odds for a match. | event_id |
| match_player_heatmap | a player's touch heatmap in a match | Research tools call match_player_heatmap to get a player's touch heatmap in a match. | event_id, player_id |
| match_player_shotmap | a player's shotmap in a match | Community analysts call match_player_shotmap to get a player's shotmap in a match. | event_id, player_id |
| match_average_positions | average player positions on the pitch | Media monitors call match_average_positions to get average player positions on the pitch. | event_id |
| player | Player profile: current team, position, market value, preferred foot, height, date of birth and contract — by SofaScore player id. | Content platforms call player to get player profile. | player_id |
| player_season_stats | player's season statistics in a league | Research tools call player_season_stats to get player's season statistics in a league. | player_id, league, season, type |
| player_heatmap | player's season heatmap | Community analysts call player_heatmap to get player's season heatmap. | player_id, league, season |
| player_attributes | player attribute radar (att/tech/tac/def/cre) | Media monitors call player_attributes to get player attribute radar (att/tech/tac/def/cre). | player_id |
| player_transfers | A player's full transfer history (from/to club, fee, date) by SofaScore player id. | Content platforms call player_transfers to get a player's full transfer history (from/to club, fee, date) by SofaScore player id.. | player_id |
| player_recent | player's recent matches | Research tools call player_recent to get player's recent matches. | player_id |
| team_details | Team profile: manager, venue, founding year and recent pregame form — by SofaScore team id. | Community analysts call team_details to get team profile. | team_id |
| team_squad | A club's full current squad (every player with id, position, value) by SofaScore team id. | Media monitors call team_squad to get a club's full current squad (every player with id, position, value) by SofaScore team id.. | team_id |
| team_transfers | A club's transfers in and out (player, club, fee, date) by SofaScore team id. | Content platforms call team_transfers to get a club's transfers in and out (player, club, fee, date) by SofaScore team id.. | team_id |
| team_season_stats | team's season statistics in a league | Research tools call team_season_stats to get team's season statistics in a league. | team_id, league, season, type |
| team_form | team recent form + next/prev event | Community analysts call team_form to get team recent form + next/prev event. | team_id |
| team_goal_distributions | goals scored/conceded by match period | Media monitors call team_goal_distributions to get goals scored/conceded by match period. | team_id, league, season |
| season_standings | SofaScore league table for a competition (overall / home / away splits) with goals for/against and goal difference. | Content platforms call season_standings to get sofaScore league table for a competition (overall / home / away splits) with goals for/agains…. | league, season, type |
| season_top_players | season leaders by category | Research tools call season_top_players to get season leaders by category. | league, season, type |
| season_top_teams | season top teams by category | Community analysts call season_top_teams to get season top teams by category. | league, season, type |
| team_of_week | team of the week (round or rounds list) | Media monitors call team_of_week to get team of the week (round or rounds list). | league, season, round_id |
| power_rankings | season power rankings | Content platforms call power_rankings to get season power rankings. | league, season, round_id |
| cup_tree | knockout bracket / cup tree | Research tools call cup_tree to get knockout bracket / cup tree. | league, season |
| tournament_details | Competition metadata: country, tier, and the clubs with the most titles — by league key. | Community analysts call tournament_details to get competition metadata. | league |
| manager | Manager profile and full club-by-club career history (matches, wins, points) by SofaScore manager id. | Media monitors call manager to get manager profile and full club-by-club career history (matches, wins, points) by SofaScore man…. | manager_id |
| referee | referee details + per-tournament stats | Content platforms call referee to get referee details + per-tournament stats. | referee_id |
| rankings | World rankings — FIFA men's football, or ATP / WTA tennis (set type; defaults to FIFA). | Research tools call rankings to get world rankings. | type |
Call search from your stack
curl -X POST https://api.reefapi.com/sports-data/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"Arsenal","type":"team"}'import requests
r = requests.post(
"https://api.reefapi.com/sports-data/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "Arsenal",
"type": "team"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/sports-data/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "Arsenal",
"type": "team"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.sports-data.search with {"query":"Arsenal","type":"team"}.Who uses this API and why
- Sports apps call scores and standings to show live results and league tables.
- Betting tools use odds and fixtures to price and schedule markets.
- Fan products use team and roster to build club and player pages.
Questions developers ask before integrating
What is the Sports Data API?
Sports Data API is a ReefAPI endpoint group for scores, schedules, teams and standings. It returns live JSON through POST requests under /sports-data/v1.
Is the Sports Data API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Sports Data calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Sports Data login or account?
No login to Sports Data is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Sports Data data?
The page example is captured from a live scores call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Sports Data API use?
Sports Data actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Sports Data from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call sports-data actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Sports Data API a Sports Data scraper?
It is the managed alternative to a DIY Sports Data scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same scores, schedules, teams and standings back as clean JSON.
Why does my Sports Data scraper keep getting blocked?
Most Sports Data scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.