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.

How to build your tab list from these

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 & PREMIUM

Check 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 & PREMIUM

Matches 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 ONLY

Live 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 & PREMIUM

Core match data including venue (with address, surface and capacity), referee, coaches and streaming sources.

This is the endpoint to embed from. Each entry in sources carries embedUrl, ready to drop into an iframe src - no token to build and no stream URL to handle. How to embed a stream
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 & PREMIUM

List 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 ONLY

Line-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 ONLY

Match 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 ONLY

Match 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 ONLY

Head-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 ONLY

League 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 ONLY

Betting 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 ONLY

Match 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 ONLY

Season-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 ONLY

Last 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.