API Reference
Welcome to SportSRC V3. Per-match endpoints serve fixtures that have a stream; scores, standing and odds cover every fixture of the day. Version v3.0. Base URL https://api.sportsrc.org/v3/
Authentication
API Key — required for every endpoint except
docs and sports.
X-API-KEY: YOUR_LICENSE_KEY (recommended)
?api_key=YOUR_LICENSE_KEY (alternative) Rate limiting
Rate limits are applied per API Key and reset at 00:00 UTC. Free plans are counted per customer, so extra free keys do not increase the allowance.
| X-RateLimit-Limit | Total requests allowed per day. |
| X-RateLimit-Remaining | Requests left for today. |
| X-Plan | Your current plan. |
Status values
status is a fixed vocabulary. Switch on these exact strings.
| notstarted | Not started yet. timer is an empty string. |
| inprogress | Being played. is_live is true and timer carries the minute, HT or BT. |
| suspended | Temporarily halted and may resume. is_live is false. |
| interrupted | Interrupted. is_live is false. |
| finished | Over. timer is FT. |
| postponed | Moved to another date. |
| canceled | Will not be played. |
status_display. The human-readable form of the same state, for example 'Not started', '1st half', 'Halftime', 'Ended', 'Canceled'.
Filtering. matches accepts ?status=. notstarted, scheduled, not_started and upcoming all select upcoming fixtures; live is accepted for inprogress and ended for finished.
Availability flags
Data availability differs per competition. Check these flags before requesting, so you never render an empty tab.
| has_stream | Per match. Whether a stream exists. Only these fixtures can be queried on per-match endpoints. |
| has_stats | Per match. True only when the match has a stream AND its league supplies statistics. |
| has_standings | Per league. Whether a table exists for this competition. |
| has_odds | Per league. Whether betting odds are published for this competition. |
What v3 does not carry
Fields with no upstream equivalent are no longer emitted at all, rather than sent as permanent nulls. Removed in v3: venue coordinates (API-Football publishes no geographic data; venue.address and venue.surface are supplied instead), the h1/h2/et/pen breakdown on stats (only the 'all' period exists upstream), and the player statistics touches, crosses, long_balls, clearances, recoveries, aerial_won, punches, high_claims and saved_box. Referee card statistics and manager_duel are still absent.
Fields kept only for compatibility
has_highlights is always false and league priority is always 0. Both are kept so existing clients keep working; there is no video data upstream, and leagues are returned in kickoff order rather than by popularity.
Coming from v2? The migration guide lists the removed endpoints alongside this.
account
FREE & PREMIUMCheck your plan, daily limit, usage and reset countdown. Does not consume quota. Not available to RapidAPI subscribers: your plan and usage are managed by RapidAPI, so check your RapidAPI dashboard instead.
GET https://api.sportsrc.org/v3/?type=account - type
- account
Example response
{
"success": true,
"data": {
"license_status": "active",
"plan": "Pro",
"limit_daily": 25000,
"usage_today": 1842,
"remaining": 23158,
"reset_time": "2026-10-27T00:00:00Z",
"reset_in": "7h 12m"
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
matches
FREE & PREMIUMMatches that have a stream available, grouped by league. For the full daily fixture list use scores.
GET https://api.sportsrc.org/v3/?type=matches&sport=football&status=inprogress&date={YYYY-MM-DD} - type
- matches
- sport
- football
- status
- inprogress
- date
- {YYYY-MM-DD}
Example response
{
"success": true,
"filters": { "sport": "football", "status": "", "date": "" },
"total_leagues": 24,
"total_matches": 140,
"data": [
{
"league": {
"name": "Premier League", "country": "England",
"flag": "...", "logo": "...",
"has_standings": true, "has_odds": true
},
"matches": [
{
"id": "arsenal-chelsea-ZjoxNTU2MTAx...",
"title": "Arsenal vs Chelsea",
"timestamp": 1792746000,
"status": "inprogress",
"status_detail": "2nd half",
"round": "Round 9",
"has_stats": true,
"has_highlights": false,
"teams": {
"home": { "name": "Arsenal", "code": "ARS", "color": "#EF0107", "badge": "..." },
"away": { "name": "Chelsea", "code": "CHE", "color": "#034694", "badge": "..." }
},
"score": { "home": 2, "away": 1, "display": "2 - 1" }
}
]
}
]
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
scores
PREMIUM ONLYLive scoreboard covering ALL fixtures for the day. Each match carries has_stream and has_stats; each league carries has_standings and has_odds. red_cards is populated for matches that are currently live.
GET https://api.sportsrc.org/v3/?type=scores&date={YYYY-MM-DD} - type
- scores
- date
- {YYYY-MM-DD}
Example response
{
"success": true,
"date": "2026-10-26",
"updated_at": 1792746000,
"stats": { "total": 412, "live": 38, "finished": 210, "scheduled": 164 },
"data": [
{
"league": {
"id": 39, "name": "Premier League", "country": "England",
"flag": "...", "logo": "...",
"has_standings": true, "has_odds": true, "priority": 1
},
"matches": [
{
"id": "arsenal-chelsea-ZjoxNTU2MTAx...",
"timestamp": 1792746000,
"status": "inprogress",
"status_display": "2H",
"timer": "67'",
"period_start": 1792748700,
"is_live": true,
"has_stream": true,
"has_stats": true,
"has_highlights": false,
"home": { "id": 42, "name": "Arsenal", "short_name": "ARS", "score": 2, "red_cards": 0, "badge": "..." },
"away": { "id": 49, "name": "Chelsea", "short_name": "CHE", "score": 1, "red_cards": 0, "badge": "..." },
"agg_score": null
}
]
}
]
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
detail
FREE & PREMIUMCore match data including venue (with address, surface and capacity), referee, coaches and streaming sources.
GET https://api.sportsrc.org/v3/?type=detail&id={match_id} - type
- detail
- id
- {match_id}
Example response
{
"success": true,
"data": {
"id": "arsenal-chelsea-ZjoxNTU2MTAx...",
"title": "Arsenal vs Chelsea",
"timestamp": 1792746000,
"status": "inprogress",
"status_detail": "2nd half",
"has_stats": true,
"has_highlights": false,
"league": {
"name": "Premier League", "season": "2026/2027", "round": "Round 9",
"country": "England", "flag": "...", "logo": "...",
"has_standings": true, "has_odds": true
},
"teams": { "home": { "name": "Arsenal", "code": "ARS", "badge": "..." },
"away": { "name": "Chelsea", "code": "CHE", "badge": "..." } },
"score": { "home": 2, "away": 1 },
"venue": {
"stadium": "Emirates Stadium", "address": "Hornsey Rd", "city": "London",
"country": "England", "image": "...", "capacity": 60383, "surface": "grass"
},
"referee": {
"name": "Michael Oliver", "country": "England", "photo": "...",
"games_recorded": 18, "yellow_cards": 61, "red_cards": 2, "yellow_red_cards": 1
},
"managers": {
"home": { "name": "Mikel Arteta", "country": "Spain", "photo": "..." },
"away": { "name": "Enzo Maresca", "country": "Italy", "photo": "..." }
},
"sources": [
{
"id": "stream-1",
"streamNo": 1,
"embedUrl": "https://embed.example.com/?id=arsenal-chelsea-ZjoxNTU2MTAx...&source=lola",
"source": "lola",
"hd": true,
"language": "Unknown"
}
]
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
sports
FREE & PREMIUMList available sports categories.
GET https://api.sportsrc.org/v3/?type=sports - type
- sports
Example response
{
"success": true,
"count": 1,
"data": [
{ "id": "football", "name": "Football", "total": 140 }
]
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
lineups
PREMIUM ONLYLine-ups, formations, coaches and per-player statistics including dribbles, duels, cards and penalties.
GET https://api.sportsrc.org/v3/?type=lineups&id={match_id} - type
- lineups
- id
- {match_id}
Example response
{
"success": true,
"confirmed": true,
"data": {
"home": {
"formation": "4-3-3",
"avg_rating": 7.1,
"kit_colors": { "player": "#EF0107", "goalkeeper": "#1D9E4B" },
"coach": { "name": "Mikel Arteta", "country": "Spain", "photo": "..." },
"start_xi": [
{
"name": "David Raya", "number": 22, "position": "G",
"is_captain": false, "photo": "...", "rating": 7.3, "minutes": 90,
"stats": {
"general": { "goals": 0, "assists": 0, "fouls": 1, "offsides": 0,
"yellow_cards": 0, "red_cards": 0 },
"passing": { "total": 38, "accurate": 31, "key_pass": 0 },
"defense": { "tackles": 0, "interceptions": 0, "blocks": 0, "saves": 4, "conceded": 1 },
"duels": { "total": 2, "won": 1 },
"dribbles":{ "attempts": 0, "past": 0, "won": 0 },
"penalty": { "committed": 0, "scored": 0, "missed": 0, "saved": 0 }
}
}
],
"subs": [],
"missing": [ { "name": "Gabriel Jesus", "reason": "Injury", "photo": "..." } ]
},
"away": { "formation": "4-2-3-1" }
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
stats
PREMIUM ONLYMatch statistics under a single 'all' period, which is the only breakdown API-Football supplies. Check has_stats before requesting.
GET https://api.sportsrc.org/v3/?type=stats&id={match_id} - type
- stats
- id
- {match_id}
Example response
{
"success": true,
"data": {
"all": {
"overview": {
"ball_possession": {
"name": "Ball possession",
"home": 58, "away": 42,
"home_display": "58%", "away_display": "42%",
"compare_code": 1,
"type": "positive"
}
},
"shots": {
"total_shots": {
"name": "Total shots",
"home": 14, "away": 7,
"home_display": "14", "away_display": "7",
"compare_code": 1,
"type": "positive"
}
}
}
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
incidents
PREMIUM ONLYMatch timeline: goals, cards, substitutions and VAR decisions.
GET https://api.sportsrc.org/v3/?type=incidents&id={match_id} - type
- incidents
- id
- {match_id}
Example response
{
"success": true,
"data": [
{
"type": "goal", "time": 23, "time_display": "23'", "is_home": true,
"reversed": false,
"detail": {
"player": { "name": "Bukayo Saka", "photo": "..." },
"assist": { "name": "Martin Odegaard", "photo": "..." },
"goal_type": "normal",
"score": { "home": 1, "away": 0 }
}
},
{
"type": "card", "time": 41, "time_display": "41'", "is_home": false,
"detail": { "player": { "name": "Moises Caicedo" }, "card_type": "yellow", "reason": "Foul" }
}
]
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
h2h
PREMIUM ONLYHead-to-head record between the two teams.
GET https://api.sportsrc.org/v3/?type=h2h&id={match_id} - type
- h2h
- id
- {match_id}
Example response
{
"success": true,
"data": {
"total": 12,
"home_wins": 5, "away_wins": 4, "draws": 3,
"rate": { "home": 42, "draw": 25, "away": 33 },
"team_duel": { "home": 5, "away": 4, "draw": 3 },
"manager_duel": { "home": 2, "away": 1, "draw": 1 }
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
standing
PREMIUM ONLYLeague table with form and rank movement. Each row also carries stats_home and stats_away. Multi-group competitions return a groups array. Can be queried by Match ID OR league_id (+ optional season_id).
By match
GET https://api.sportsrc.org/v3/?type=standing&id={match_id} By competition
GET https://api.sportsrc.org/v3/?type=standing&league_id={league_id}&season_id={season_id} - type
- standing
- id optional
- {match_id}
- league_id optional
- {league_id}
Example response
{
"success": true,
"data": {
"league": {
"name": "Premier League", "season": "2026/2027", "format": "league",
"has_groups": false, "country": "England", "flag": "...", "logo": "...",
"color": "#38003c", "text_color": "#ffffff"
},
"table": [
{
"position": 1,
"team": { "name": "Arsenal", "short_name": "ARS", "badge": "..." },
"stats": { "played": 9, "wins": 7, "draws": 1, "losses": 1,
"goals_for": 20, "goals_against": 7, "goal_diff": "+13", "points": 22 },
"stats_home": { "played": 5, "wins": 4 },
"stats_away": { "played": 4, "wins": 3 },
"promotion": { "text": "Champions League", "id": 2 },
"form": "WWDWL",
"status": "up"
}
]
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
odds
PREMIUM ONLYBetting odds in decimal and fractional format. Switches to in-play odds automatically while a match is live (is_live=true).
GET https://api.sportsrc.org/v3/?type=odds&id={match_id} - type
- odds
- id
- {match_id}
Example response
{
"success": true,
"data": [
{
"bookmaker_id": 8,
"bookmaker_name": "Bet365",
"markets": [
{
"market_id": 1, "market_name": "Match Winner",
"is_live": false, "suspended": false,
"choices": [
{ "name": "Home", "fraction": "4/5", "decimal": 1.80, "trend": "neutral" },
{ "name": "Draw", "fraction": "7/2", "decimal": 4.50, "trend": "neutral" },
{ "name": "Away", "fraction": "15/4", "decimal": 4.75, "trend": "neutral" }
]
}
]
}
]
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
votes
PREMIUM ONLYMatch outcome probabilities. These are model predictions (source="prediction"), not community votes; count values are percentage points out of 100. Includes advice, team form and a seven-way comparison.
GET https://api.sportsrc.org/v3/?type=votes&id={match_id} - type
- votes
- id
- {match_id}
Example response
{
"success": true,
"data": {
"source": "prediction",
"match_winner": {
"home": { "count": 5120, "percent": 54 },
"draw": { "count": 2180, "percent": 23 },
"away": { "count": 2180, "percent": 23 },
"total": 9480
},
"form": { "home": 72, "away": 58 },
"attack": { "home": 68, "away": 51 },
"defense": { "home": 64, "away": 60 },
"poisson": { "home": 1.8, "away": 1.1 },
"goals": { "total": 2.9 }
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
team_stats
PREMIUM ONLYSeason-long form and statistics for both teams: fixtures won/drawn/lost split home and away, goals by minute interval and over/under line, clean sheets, longest streaks, cards by interval, penalties and most-used formation.
GET https://api.sportsrc.org/v3/?type=team_stats&id={match_id} - type
- team_stats
- id
- {match_id}
Example response
{
"success": true,
"data": {
"home": {
"team": { "name": "Arsenal", "badge": "..." },
"form": "WWDWL",
"last_5": { "attack": "67%", "defense": "75%" },
"fixtures": {
"played": { "home": 5, "away": 4, "total": 9 },
"wins": { "home": 4, "away": 3, "total": 7 },
"draws": { "home": 1, "away": 0, "total": 1 },
"losses": { "home": 0, "away": 1, "total": 1 }
},
"goals": {
"for": { "total": { "home": 12, "away": 8, "total": 20 },
"average": { "total": "2.2" } },
"against": { "total": { "home": 3, "away": 4, "total": 7 } }
},
"clean_sheet": { "home": 3, "away": 2, "total": 5 },
"failed_to_score": { "home": 1, "away": 0, "total": 1 },
"biggest": { "wins": { "home": "4-0", "away": "0-3" } },
"penalty": { "scored": { "total": 2, "percentage": "100.00%" } },
"cards": { "yellow": { "0-15": { "total": 2, "percentage": "14.28%" } } },
"lineups": [ { "formation": "4-3-3", "played": 7 } ]
},
"away": { "team": { "name": "Chelsea" } }
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.
last_matches
PREMIUM ONLYLast 5 matches for both home and away teams.
GET https://api.sportsrc.org/v3/?type=last_matches&id={match_id} - type
- last_matches
- id
- {match_id}
Example response
{
"success": true,
"data": {
"home": [
{
"id": "arsenal-brighton-ZjoxNTU1OTk5...",
"tournament": { "name": "Premier League", "badge": "..." },
"home_team": "Arsenal", "away_team": "Brighton",
"home_score": 3, "away_score": 0,
"status": "finished",
"timestamp": 1792141200,
"winner_code": 1
}
],
"away": []
}
} Field names come from the service's own response structs. Values are illustrative and arrays are trimmed to one or two entries.