Skip to content

SofaScore Sport API - Complete Tutorial

Table of Contents

  1. Introduction
  2. Getting Started
  3. Authentication
  4. API Reference
  5. Common Workflows
  6. Response Examples
  7. Reference Tables
  8. FAQ

Introduction

Sport API provides comprehensive sports data, from simple live scores to deep statistics and detailed player analysis. The API covers 20+ sports, more than 5000 leagues, tournaments and special events.

Supported Sports

Football (Soccer), Tennis, Basketball, Ice Hockey, Handball, Volleyball, Table Tennis, Baseball, American Football, MMA, Motorsport, Cricket, Rugby, Darts, Snooker, Futsal, Badminton, Aussie Rules, Beach Volleyball, Waterpolo, Cycling, Floorball, Bandy, Esports.

Data Similar To

  • Opta Sports (statsperform.com)
  • SofaScore.com
  • AIScore.com

Support


Getting Started

Base URL

https://sofasport.p.rapidapi.com

or

https://sofascores-api.hgapi.top

API Reference

Sports

GET Sport List

Get a list of all available sports.

MethodEndpoint
GET/v1/sports

Response:

json
{
  "data": [
    {"name": "Football", "slug": "football", "id": 1},
    {"name": "Basketball", "slug": "basketball", "id": 2},
    {"name": "Ice Hockey", "slug": "ice-hockey", "id": 4},
    {"name": "Tennis", "slug": "tennis", "id": 5}
    // ... more sports
  ]
}

GET Number of Live Events

Get the number of live events across all sports.

MethodEndpoint
GET/v1/sports/number-live

Parameters: None


Categories

GET Categories List

Get a list of categories (countries/regions) by sport.

MethodEndpoint
GET/v1/categories
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1

GET Categories Number Live

Get the number of live events in each category by sport.

MethodEndpoint
GET/v1/categories/number-live
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1

Calendar

GET Actual Categories

Get actual categories by date and sport (categories with events on a specific date).

MethodEndpoint
GET/v1/calendar/categories
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1
datestringYesDate (YYYY-MM-DD)2022-05-06
timezoneintegerYesTimezone offset (-11 to 13)6

GET Daily Unique Tournaments

Get daily unique tournaments by month and sport.

MethodEndpoint
GET/v1/calendar/daily-unique-tournaments
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1
monthstringYesMonth (YYYY-MM)2022-05
timezoneintegerYesTimezone offset (-11 to 13)6

Tournaments

GET Unique Tournaments List

Get a list of unique tournaments by category.

MethodEndpoint
GET/v1/unique-tournaments
ParameterTypeRequiredDescriptionExample
category_idintegerYesCategory ID20

GET Unique Tournaments Top

Get top tournaments list.

MethodEndpoint
GET/v1/unique-tournaments-top
ParameterTypeRequiredDescriptionExample
localestringYesLocale codeen

GET Unique Tournament Data

Get detailed data about a unique tournament.

MethodEndpoint
GET/v1/unique-tournaments/data
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17

GET Unique Tournament Seasons

Get all seasons of a unique tournament.

MethodEndpoint
GET/v1/unique-tournaments/seasons
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17

Get featured events of a unique tournament.

MethodEndpoint
GET/v1/unique-tournaments/featured-events
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17

GET Unique Tournament Media

Get media content of a unique tournament.

MethodEndpoint
GET/v1/unique-tournaments/media
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17

Get tournament logo.

MethodEndpoint
GET/v1/unique-tournaments/logo
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
sport_idintegerNoSport ID1

GET Tournament Data

Get tournament data by tournament ID.

MethodEndpoint
GET/v1/tournaments/data
ParameterTypeRequiredDescriptionExample
tournament_idintegerYesTournament ID1

GET Tournament Seasons

Get seasons of a tournament.

MethodEndpoint
GET/v1/tournaments/seasons
ParameterTypeRequiredDescriptionExample
tournament_idintegerYesTournament ID1

GET Tournament Events

Get events of a tournament.

MethodEndpoint
GET/v1/tournaments/events
ParameterTypeRequiredDescriptionExample
tournament_idintegerYesTournament ID95741
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

Seasons

GET Season Data

Get detailed data about a season.

MethodEndpoint
GET/v1/seasons/data
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036

GET Season Details

Get season statistics summary (goals, wins, etc.).

MethodEndpoint
GET/v1/seasons/details
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036

GET Season Standings

Get league standings/table.

MethodEndpoint
GET/v1/seasons/standings
ParameterTypeRequiredDescriptionExample
seasons_idintegerYesSeason ID37036
unique_tournament_idintegerNoUnique Tournament ID17
tournament_idintegerNoTournament ID-
standing_typestringYesType of standingstotal

Standing Types: total, home, away

GET Season Cup Trees

Get cup/knockout tournament bracket.

MethodEndpoint
GET/v1/seasons/cup-trees
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID7
seasons_idintegerYesSeason ID36886

GET Season Rounds

Get all rounds of a season.

MethodEndpoint
GET/v1/seasons/rounds
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID7
seasons_idintegerYesSeason ID52561

GET Season Events

Get all events of a season.

MethodEndpoint
GET/v1/seasons/events
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

GET Season Team Events

Get team events of a season.

MethodEndpoint
GET/v1/seasons/team-events
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036

GET Season Players Statistics

Get player statistics for a season.

MethodEndpoint
GET/v1/seasons/players-statistics/result
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036
seasons_statistics_typestringYesStatistics typeoverall

Statistics Types: overall, home, away

GET Season Teams Statistics

Get team statistics for a season.

MethodEndpoint
GET/v1/seasons/teams-statistics/result
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036
seasons_statistics_typestringYesStatistics typeoverall

GET Season Team Week Rounds

Get team of the week rounds.

MethodEndpoint
GET/v1/seasons/team-week/rounds
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036

GET Season Team Week Players

Get team of the week players for a specific round.

MethodEndpoint
GET/v1/seasons/team-week/result
ParameterTypeRequiredDescriptionExample
unique_tournament_idintegerYesUnique Tournament ID17
seasons_idintegerYesSeason ID37036
round_idintegerYesRound ID7177

Events

GET Event Data

Get complete event/match data.

MethodEndpoint
GET/v1/events/data
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405

GET Schedule by Category

Get event schedule by category and date.

MethodEndpoint
GET/v1/events/schedule/category
ParameterTypeRequiredDescriptionExample
category_idintegerYesCategory ID26
datestringYesDate (YYYY-MM-DD)2022-05-11

GET Schedule by Date

Get event schedule by sport and date (±12 hours for all timezones).

MethodEndpoint
GET/v1/events/schedule/date
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1
datestringYesDate (YYYY-MM-DD)2024-02-29
inversebooleanNoInverse orderfalse

Note: This endpoint is deprecated. Use Schedule by Category instead.

GET Live Schedule

Get all live events by sport.

MethodEndpoint
GET/v1/events/schedule/live
ParameterTypeRequiredDescriptionExample
sport_idintegerYesSport ID1

Get today's popular events.

MethodEndpoint
GET/v1/events/schedule/popular
ParameterTypeRequiredDescriptionExample
localestringYesLocale codeen

GET Event Statistics

Get match statistics.

MethodEndpoint
GET/v1/events/statistics
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405

GET Event Lineups

Get team lineups.

MethodEndpoint
GET/v1/events/lineups
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405

GET Event Incidents

Get match incidents (goals, cards, substitutions).

MethodEndpoint
GET/v1/events/incidents
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405

GET Event H2H Stats

Get head-to-head statistics.

MethodEndpoint
GET/v1/events/h2h-stats
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event H2H Events

Get head-to-head events history.

MethodEndpoint
GET/v1/events/h2h-events
ParameterTypeRequiredDescriptionExample
event_idintegerNoEvent ID11930405
custom_event_idstringNoCustom Event IDpcWcsWDfd

GET Event Heatmap

Get team heatmap during the match.

MethodEndpoint
GET/v1/events/heatmap
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769
team_idintegerYesTeam ID2819

GET Event Player Heatmap

Get individual player heatmap.

MethodEndpoint
GET/v1/events/player-heatmap
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10023294
player_idintegerYesPlayer ID839410

GET Event Player Statistics

Get individual player statistics.

MethodEndpoint
GET/v1/events/player-statistics
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10023294
player_idintegerYesPlayer ID839410

GET Event Best Players

Get best players of the match.

MethodEndpoint
GET/v1/events/best-players
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Form

Get pregame team form.

MethodEndpoint
GET/v1/events/form
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10236820

GET Event Streaks

Get team streaks.

MethodEndpoint
GET/v1/events/streaks
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID9576298

GET Event Predict

Get match prediction.

MethodEndpoint
GET/v1/events/predict
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Media

Get media content (videos, highlights).

MethodEndpoint
GET/v1/events/media
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Tweets

Get related tweets.

MethodEndpoint
GET/v1/events/tweets
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Comments

Get user comments.

MethodEndpoint
GET/v1/events/comments
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10230638

GET Event Graph Points

Get graph points data.

MethodEndpoint
GET/v1/events/graph-points
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Shotmap

Get shotmap data.

MethodEndpoint
GET/v1/events/shotmap
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10230638

GET Event Fan Rating

Get fan ratings.

MethodEndpoint
GET/v1/events/fan-rating
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769

GET Event Managers

Get team managers.

MethodEndpoint
GET/v1/events/managers
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10236820

GET Event Odds All

Get all betting odds.

MethodEndpoint
GET/v1/events/odds/all
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405
odds_formatstringYesOdds formatdecimal
provider_idintegerNoProvider ID (1 = Bet365)1

GET Event Odds Winning

Get winning odds.

MethodEndpoint
GET/v1/events/odds/winning
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769
odds_formatstringYesOdds formatdecimal
provider_idintegerNoProvider ID1

GET Event Point by Point

Get point-by-point data (tennis).

MethodEndpoint
GET/v1/events/point-by-point
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10290654

GET Event Innings

Get innings data (cricket).

MethodEndpoint
GET/v1/events/innings
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10188874

GET Event Sub Events

Get sub events.

MethodEndpoint
GET/v1/events/sub-events
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10277254

GET Newly Added Events

Get newly added events.

MethodEndpoint
GET/v1/events/newly-added-events

Parameters: None


Esports Events

GET Esports Statistics

Get esports match statistics.

MethodEndpoint
GET/v1/events/esports-statistics
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10289011

GET Esports Lineups

Get esports lineups.

MethodEndpoint
GET/v1/events/esports-lineups
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10289011

GET Esports Bans

Get esports bans.

MethodEndpoint
GET/v1/events/esports-bans
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10289011

GET Esports Games

Get esports games.

MethodEndpoint
GET/v1/events/esports-games
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10289011

GET Esports Rounds

Get esports rounds.

MethodEndpoint
GET/v1/events/esports-rounds
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID323668

Teams

GET Team Data

Get team information.

MethodEndpoint
GET/v1/teams/data
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Players

Get team roster.

MethodEndpoint
GET/v1/teams/players
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Events

Get team's match history.

MethodEndpoint
GET/v1/teams/events
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

GET Team Near Events

Get team's upcoming/recent events.

MethodEndpoint
GET/v1/teams/near-events
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817

GET Team Current Tournaments

Get team's current tournaments.

MethodEndpoint
GET/v1/teams/current-tournaments
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817

GET Team Recent Form

Get team's recent form.

MethodEndpoint
GET/v1/teams/recent-form
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817

GET Team Rankings

Get team rankings.

MethodEndpoint
GET/v1/teams/rankings
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817

Get team logo.

MethodEndpoint
GET/v1/teams/logo
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44
sport_idintegerNoSport ID1

GET Team Transfers

Get team transfers.

MethodEndpoint
GET/v1/teams/transfers
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID2817

GET Team News Feed

Get team news feed.

MethodEndpoint
GET/v1/teams/news-feed
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Statistics Seasons

Get available seasons for team statistics.

MethodEndpoint
GET/v1/teams/statistics/seasons
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Statistics Result

Get team statistics.

MethodEndpoint
GET/v1/teams/statistics/result
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44
unique_tournament_idintegerYesUnique Tournament ID17
season_idintegerYesSeason ID37036
team_stat_typestringNoStatistics typeoverall

GET Team Player Statistics Seasons

Get available seasons for player statistics.

MethodEndpoint
GET/v1/teams/player-statistics/seasons
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Player Statistics Result

Get player statistics by team.

MethodEndpoint
GET/v1/teams/player-statistics/result
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44
unique_tournament_idintegerYesUnique Tournament ID17
season_idintegerYesSeason ID37036
player_stat_typestringNoStatistics typeoverall

GET Team Standings Seasons

Get seasons for standings.

MethodEndpoint
GET/v1/teams/standings/seasons
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID44

GET Team Recent Unique Tournaments

Get recent unique tournaments.

MethodEndpoint
GET/v1/teams/recent-unique-tournaments
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID14486

Players

GET Player Data

Get player information.

MethodEndpoint
GET/v1/players/data
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Photo

Get player photo.

MethodEndpoint
GET/v1/players/photo
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Characteristics

Get player characteristics.

MethodEndpoint
GET/v1/players/characteristics
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Attribute Overviews

Get player attribute overviews.

MethodEndpoint
GET/v1/players/attribute-overviews
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Events

Get player's match history.

MethodEndpoint
GET/v1/players/events
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

GET Player Statistics Seasons

Get available seasons for player statistics.

MethodEndpoint
GET/v1/players/statistics/seasons
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Statistics Result

Get player statistics.

MethodEndpoint
GET/v1/players/statistics/result
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994
unique_tournament_idintegerYesUnique Tournament ID34
seasons_idintegerYesSeason ID37167
player_stat_typestringYesStatistics typeoverall

Note: Use regularSeason for hockey statistics.

GET Player Heatmap

Get player's heatmap for a season.

MethodEndpoint
GET/v1/players/heatmap
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994
unique_tournament_idintegerYesUnique Tournament ID34
seasons_idintegerYesSeason ID37167

GET Player Last Ratings

Get player's latest ratings.

MethodEndpoint
GET/v1/players/last-ratings
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994
unique_tournament_idintegerYesUnique Tournament ID34
seasons_idintegerYesSeason ID37167

GET Player Transfer History

Get player's transfer history.

MethodEndpoint
GET/v1/players/transfer-history
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player National Team Statistics

Get player's national team statistics.

MethodEndpoint
GET/v1/players/national-team-statistics
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

GET Player Last Year Summary

Get player's last year summary.

MethodEndpoint
GET/v1/players/last-year-summary
ParameterTypeRequiredDescriptionExample
player_idintegerYesPlayer ID12994

Managers

GET Manager Data

Get manager information.

MethodEndpoint
GET/v1/managers/data
ParameterTypeRequiredDescriptionExample
manager_idintegerYesManager ID52829

GET Manager Photo

Get manager photo.

MethodEndpoint
GET/v1/managers/photo
ParameterTypeRequiredDescriptionExample
manager_idintegerYesManager ID52829

GET Manager Career History

Get manager's career history.

MethodEndpoint
GET/v1/managers/career-history
ParameterTypeRequiredDescriptionExample
manager_idintegerYesManager ID52829

GET Manager Events

Get manager's match history.

MethodEndpoint
GET/v1/managers/events
ParameterTypeRequiredDescriptionExample
manager_idintegerYesManager ID52829
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

Referees

GET Referee Data

Get referee information.

MethodEndpoint
GET/v1/referees/data
ParameterTypeRequiredDescriptionExample
referee_idintegerYesReferee ID72792

GET Referee Statistics

Get referee statistics.

MethodEndpoint
GET/v1/referees/statistics
ParameterTypeRequiredDescriptionExample
referee_idintegerYesReferee ID72792

GET Referee Events

Get referee's match history.

MethodEndpoint
GET/v1/referees/events
ParameterTypeRequiredDescriptionExample
referee_idintegerYesReferee ID72792
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

Rankings

GET Current Rankings

Get current rankings.

MethodEndpoint
GET/v1/rankings/current
ParameterTypeRequiredDescriptionExample
rankingstringYesRanking typeatp

GET Season Rankings

Get rankings by season/year.

MethodEndpoint
GET/v1/rankings/season
ParameterTypeRequiredDescriptionExample
rankingstringYesRanking typeatp
yearintegerYesYear2022

Transfers

GET Search Transfers

Search transfers with filters.

MethodEndpoint
GET/v1/transfers/search
ParameterTypeRequiredDescriptionExample
pageintegerYesPage number (0-indexed)0
nationalitystringNoCountry codeENG
min_ageintegerNoMinimum age15
max_ageintegerNoMaximum age50
position_typestringNoPosition (G, D, M, F)G
popularityintegerNoPopularity filter10
joinedbooleanNoJoined filtertrue
sort_typestringNoSort typetransfer_fee_max
unique_tournament_idintegerNoUnique Tournament ID-

TV

GET TV Channels

Get list of TV channels by country.

MethodEndpoint
GET/v1/tv/channels
ParameterTypeRequiredDescriptionExample
localestringYesLocale codeen

GET TV Country Channels

Get TV channels for an event.

MethodEndpoint
GET/v1/tv/country-channels
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID11930405

GET TV Channel Data

Get channel data.

MethodEndpoint
GET/v1/tv/channel-data
ParameterTypeRequiredDescriptionExample
event_idintegerYesEvent ID10253769
channel_idintegerYesChannel ID2707

Stages (Motorsport)

GET Unique Stages

Get list of unique stages by category.

MethodEndpoint
GET/v1/unique-stages
ParameterTypeRequiredDescriptionExample
category_idintegerYesCategory ID84

GET Unique Stages Seasons

Get seasons for a unique stage.

MethodEndpoint
GET/v1/unique-stages/seasons
ParameterTypeRequiredDescriptionExample
unique_stage_idintegerYesUnique Stage ID28

GET Stage Data

Get stage data.

MethodEndpoint
GET/v1/stages/data
ParameterTypeRequiredDescriptionExample
stage_idintegerYesStage ID190582

GET Stage Substages

Get substages of a stage.

MethodEndpoint
GET/v1/stages/substages
ParameterTypeRequiredDescriptionExample
stage_idintegerYesStage ID190582

GET Stage Standings Competitor

Get competitor standings.

MethodEndpoint
GET/v1/stages/standings/competitor
ParameterTypeRequiredDescriptionExample
stage_idintegerYesStage ID188803

GET Stage Standings Teams

Get team standings.

MethodEndpoint
GET/v1/stages/standings/teams
ParameterTypeRequiredDescriptionExample
stage_idintegerYesStage ID188803

GET Team Races (Motorsport)

Get team races.

MethodEndpoint
GET/v1/teams/races
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID226818
pageintegerYesPage number (0-indexed)0
course_eventsstringYesEvent course typelast

GET Team Career History (Motorsport)

Get team career history.

MethodEndpoint
GET/v1/teams/career-history
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID226818

GET Team Stage Seasons (Motorsport)

Get team stage seasons.

MethodEndpoint
GET/v1/teams/stage-seasons
ParameterTypeRequiredDescriptionExample
team_idintegerYesTeam ID226818

Common Workflows

Workflow 1: Get Today's Football Matches

1. GET /v1/sports → Get sport_id for Football (1)
2. GET /v1/calendar/categories?sport_id=1&date=2024-03-15&timezone=0 → Get categories with events
3. GET /v1/events/schedule/category?category_id=1&date=2024-03-15 → Get events for each category

Workflow 2: Get Match Details

1. GET /v1/events/data?event_id=11930405 → Get basic match info
2. GET /v1/events/statistics?event_id=11930405 → Get match statistics
3. GET /v1/events/lineups?event_id=11930405 → Get lineups
4. GET /v1/events/incidents?event_id=11930405 → Get incidents (goals, cards)

Workflow 3: Get League Standings

1. GET /v1/categories?sport_id=1 → Get categories
2. GET /v1/unique-tournaments?category_id=1 → Get tournaments for category
3. GET /v1/unique-tournaments/seasons?unique_tournament_id=17 → Get seasons
4. GET /v1/seasons/standings?unique_tournament_id=17&seasons_id=37036&standing_type=total → Get standings

Workflow 4: Get Player Statistics

1. GET /v1/teams/players?team_id=44 → Get team players
2. GET /v1/players/statistics/seasons?player_id=12994 → Get available seasons
3. GET /v1/players/statistics/result?player_id=12994&unique_tournament_id=34&seasons_id=37167&player_stat_type=overall → Get stats

Workflow 5: Get Live Events

1. GET /v1/sports/number-live → Get number of live events per sport
2. GET /v1/events/schedule/live?sport_id=1 → Get all live football matches

Response Examples

Sport List Response

json
{
  "data": [
    {"name": "Football", "slug": "football", "id": 1},
    {"name": "Basketball", "slug": "basketball", "id": 2},
    {"name": "Ice Hockey", "slug": "ice-hockey", "id": 4},
    {"name": "Tennis", "slug": "tennis", "id": 5},
    {"name": "Handball", "slug": "handball", "id": 6},
    {"name": "Volleyball", "slug": "volleyball", "id": 23},
    {"name": "Cricket", "slug": "cricket", "id": 62},
    {"name": "American Football", "slug": "american-football", "id": 63},
    {"name": "Baseball", "slug": "baseball", "id": 64},
    {"name": "eSports", "slug": "esports", "id": 72}
  ]
}

Event Data Response

json
{
  "data": {
    "tournament": {
      "name": "Premier League",
      "category": {"name": "England", "alpha2": "EN"},
      "uniqueTournament": {"id": 17, "name": "Premier League"}
    },
    "season": {"name": "Premier League 25/26", "year": "25/26", "id": 76986},
    "roundInfo": {"round": 26},
    "status": {"code": 100, "description": "Ended", "type": "finished"},
    "winnerCode": 3,
    "homeTeam": {"name": "Chelsea", "id": 38, "nameCode": "CHE"},
    "awayTeam": {"name": "Leeds United", "id": 34, "nameCode": "LEE"},
    "homeScore": {"current": 2, "period1": 1, "period2": 1},
    "awayScore": {"current": 2, "period1": 0, "period2": 2},
    "venue": {"name": "Stamford Bridge", "city": {"name": "London"}},
    "referee": {"name": "Robert Jones"},
    "startTimestamp": 1770751800
  }
}

Categories Response

json
{
  "data": [
    {
      "category": {
        "name": "England",
        "slug": "england",
        "sport": {"name": "Football", "id": 1},
        "id": 1,
        "flag": "england",
        "alpha2": "EN"
      },
      "totalEvents": 7,
      "totalVideos": 5,
      "uniqueTournamentIds": [1044, 17, 18, 25]
    }
  ]
}

Reference Tables

Event Status Types

StatusDescription
notstartedMatch has not started
liveMatch is currently live
finishedMatch has ended
canceledMatch was canceled
postponedMatch was postponed
delayedMatch start delayed
interruptedMatch was interrupted
conditionalConditional status
will continueMatch will continue

Player Positions

Football

CodePosition
GGoalkeeper
DDefender
MMidfielder
FForward
CCentral Forward

Basketball

CodePosition
CCenter
CFCenter Forward
FForward
FCHeavy Forward
FGShooting Guard
GPoint Guard
GFSmall Forward

Ice Hockey

CodePosition
CCentral Forward
DDefender
FForward
GGoalkeeper
LLeft Wing
RRight Wing

Incident Types

TypeDescription
periodPeriod start/end
injuryTimeInjury time announced
cardYellow/Red card
goalGoal scored
substitutionPlayer substitution

Winner Codes

CodeResult
1Home team won
2Away team won
3Draw

Sport IDs

IDSport
1Football
2Basketball
4Ice Hockey
5Tennis
6Handball
7Floorball
11Motorsport
12Rugby
13Aussie Rules
15Bandy
19Snooker
20Table Tennis
22Darts
23Volleyball
26Waterpolo
29Futsal
31Badminton
34Beach Volley
62Cricket
63American Football
64Baseball
72eSports
109Minifootball

FAQ

How do I get the current match time in soccer?

The API provides timing information in the time object:

json
"time": {
  "initial": 2700,
  "max": 5400,
  "extra": 540,
  "currentPeriodStartTimestamp": 1701068460
}

Or in statusTime:

json
"statusTime": {
  "prefix": "",
  "initial": 2700,
  "max": 5400,
  "timestamp": 1701068460,
  "extra": 540
}

Fields:

  • initial - Duration of the half (in seconds)
  • max - Duration of the match (in seconds)
  • currentPeriodStartTimestamp / timestamp - Unix timestamp when the half started
  • extra - Injury time (in seconds)

Calculate current time:

current_time = current_timestamp - currentPeriodStartTimestamp

Is this API free?

Yes, there is a free tier with monthly request limits. For higher limits or custom plans, contact tipsters@rapi.one or t.me/api_tipsters

How do I handle timezone?

The timezone parameter accepts values from -11 to 13. Use your local timezone offset. For example:

  • UTC+0 = 0
  • UTC+1 = 1
  • UTC-5 = -5

How do I paginate through results?

Many endpoints support pagination with page parameter (0-indexed):

  • Page 0 = First page
  • Page 1 = Second page
  • etc.

Python Code Examples

Setup & Configuration

python
import requests
import json
from datetime import datetime

# API Configuration
API_BASE_URL = "https://sofasport.p.rapidapi.com"
API_KEY = "YOUR_RAPIDAPI_KEY"  # Replace with your RapidAPI key

# Headers for all requests
HEADERS = {
    "X-RapidAPI-Key": API_KEY,
    "X-RapidAPI-Host": "sofasport.p.rapidapi.com"
}

def make_request(endpoint, params=None):
    """Make API request with error handling"""
    url = f"{API_BASE_URL}{endpoint}"
    response = requests.get(url, headers=HEADERS, params=params)

    if response.status_code == 200:
        return response.json()
    elif response.status_code == 401:
        raise Exception("Invalid API key")
    elif response.status_code == 403:
        raise Exception("Access forbidden - check subscription")
    elif response.status_code == 429:
        raise Exception("Rate limit exceeded")
    else:
        raise Exception(f"API Error: {response.status_code}")

Workflow 1: Get All Sports

python
def get_all_sports():
    """Get list of all available sports"""
    data = make_request("/v1/sports")
    return data.get('data', [])

# Usage
sports = get_all_sports()
print("Available Sports:")
for sport in sports:
    print(f"  {sport['id']}: {sport['name']}")

# Output:
# Available Sports:
#   1: Football
#   2: Basketball
#   4: Ice Hockey
#   5: Tennis
#   ...

Workflow 2: Get Categories by Sport

python
def get_categories(sport_id):
    """Get categories (countries/leagues) for a sport"""
    data = make_request("/v1/categories", {"sport_id": sport_id})
    return data.get('data', [])

# Usage - Get football categories
categories = get_categories(1)  # 1 = Football
print("\nFootball Categories:")
for cat in categories[:10]:
    print(f"  {cat['id']}: {cat['name']} ({cat.get('alpha2', 'N/A')})")

# Output:
# Football Categories:
#   1: England (EN)
#   2: Spain (ES)
#   3: Italy (IT)
#   ...

Workflow 3: Get Today's Matches

python
def get_today_matches(sport_id=1, timezone_offset=0):
    """
    Get all matches for today

    Args:
        sport_id: Sport ID (default: 1 for Football)
        timezone_offset: Timezone offset (-11 to 13)
    """
    today = datetime.now().strftime('%Y-%m-%d')

    # Step 1: Get categories with events today
    data = make_request("/v1/calendar/categories", {
        "sport_id": sport_id,
        "date": today,
        "timezone": timezone_offset
    })

    categories = data.get('data', [])
    all_matches = []

    # Step 2: Get events for each category
    for cat in categories:
        category_id = cat['category']['id']
        events_data = make_request("/v1/events/schedule/category", {
            "category_id": category_id,
            "date": today
        })

        events = events_data.get('data', [])
        all_matches.extend(events)

    return all_matches

# Usage
matches = get_today_matches()
print(f"\nFound {len(matches)} matches today")

for match in matches[:5]:
    home = match['homeTeam']['name']
    away = match['awayTeam']['name']
    home_score = match.get('homeScore', {}).get('current', '-')
    away_score = match.get('awayScore', {}).get('current', '-')
    status = match['status']['description']
    tournament = match.get('tournament', {}).get('name', '')

    print(f"  {home} {home_score} - {away_score} {away} [{status}] ({tournament})")

Workflow 4: Get Live Matches

python
def get_live_matches(sport_id=1):
    """Get all live matches for a sport"""
    data = make_request("/v1/events/schedule/live", {"sport_id": sport_id})
    return data.get('data', [])

# Usage
live_matches = get_live_matches(1)
print(f"\nLive Matches: {len(live_matches)}")

for match in live_matches[:10]:
    home = match['homeTeam']['name']
    away = match['awayTeam']['name']
    home_score = match.get('homeScore', {}).get('current', 0)
    away_score = match.get('awayScore', {}).get('current', 0)
    status = match['status']['description']
    tournament = match.get('tournament', {}).get('name', '')

    print(f"  {home} {home_score} - {away_score} {away} [{status}] ({tournament})")

Workflow 5: Get Match Details

python
def get_event_data(event_id):
    """Get detailed event/match data"""
    data = make_request("/v1/events/data", {"event_id": event_id})
    return data.get('data', {})

def get_event_statistics(event_id):
    """Get match statistics"""
    data = make_request("/v1/events/statistics", {"event_id": event_id})
    return data.get('data', {})

def get_event_lineups(event_id):
    """Get team lineups"""
    data = make_request("/v1/events/lineups", {"event_id": event_id})
    return data.get('data', {})

def get_event_incidents(event_id):
    """Get match incidents (goals, cards, substitutions)"""
    data = make_request("/v1/events/incidents", {"event_id": event_id})
    return data.get('data', {})

# Usage
event_id = 13981507  # Example event ID

# Get event details
event = get_event_data(event_id)
print(f"\nMatch: {event['homeTeam']['name']} vs {event['awayTeam']['name']}")
print(f"Tournament: {event['tournament']['name']}")
print(f"Status: {event['status']['description']}")
print(f"Score: {event.get('homeScore', {}).get('current', 0)} - {event.get('awayScore', {}).get('current', 0)}")

# Get incidents
incidents = get_event_incidents(event_id)
if incidents:
    print("\nIncidents:")
    for incident in incidents:
        inc_type = incident.get('incidentType', 'Unknown')
        time = incident.get('time', 0)
        print(f"  {time}' - {inc_type}")

Workflow 6: Get League Standings

python
def get_unique_tournaments(category_id):
    """Get tournaments for a category"""
    data = make_request("/v1/unique-tournaments", {"category_id": category_id})
    return data.get('data', [])

def get_tournament_seasons(unique_tournament_id):
    """Get seasons for a tournament"""
    data = make_request("/v1/unique-tournaments/seasons", {
        "unique_tournament_id": unique_tournament_id
    })
    return data.get('data', [])

def get_standings(unique_tournament_id, season_id, standing_type="total"):
    """Get league standings"""
    data = make_request("/v1/seasons/standings", {
        "unique_tournament_id": unique_tournament_id,
        "seasons_id": season_id,
        "standing_type": standing_type
    })
    return data.get('data', {})

# Usage - Get Premier League standings
def display_premier_league_table():
    tournament_id = 17  # Premier League

    # Get current season
    seasons = get_tournament_seasons(tournament_id)
    if seasons:
        current_season = seasons[0]
        season_id = current_season['id']
        print(f"Season: {current_season['name']}\n")

        # Get standings
        standings_data = get_standings(tournament_id, season_id)

        if standings_data:
            table = standings_data['standings'][0]['rows']

            print(f"{'Pos':<4} {'Team':<25} {'P':<4} {'W':<4} {'D':<4} {'L':<4} {'GD':<5} {'Pts':<4}")
            print("-" * 60)

            for team in table:
                pos = team['position']
                name = team['team']['name'][:24]
                played = team['matches']
                won = team['wins']
                drawn = team['draws']
                lost = team['losses']
                gd = int(team['scoreDiffFormatted'])
                points = team['points']

                print(f"{pos:<4} {name:<25} {played:<4} {won:<4} {drawn:<4} {lost:<4} {gd:<+5} {points:<4}")

display_premier_league_table()

Workflow 7: Get Team Information

python
def get_team_data(team_id):
    """Get team information"""
    data = make_request("/v1/teams/data", {"team_id": team_id})
    return data.get('data', {})

def get_team_players(team_id):
    """Get team roster"""
    data = make_request("/v1/teams/players", {"team_id": team_id})
    return data.get('data', [])

def get_team_events(team_id, page=0):
    """Get team match history"""
    data = make_request("/v1/teams/events", {
        "team_id": team_id,
        "page": page,
        "course_events": "last"
    })
    return data.get('data', [])

# Usage - Get Chelsea FC info
team_id = 38  # Chelsea FC

team = get_team_data(team_id)
print(f"\nTeam: {team['name']}")
print(f"Country: {team.get('country', {}).get('name', 'N/A')}")
print(f"Founded: {datetime.fromtimestamp(team.get('foundationDateTimestamp', 0)).year if team.get('foundationDateTimestamp') else 'N/A'}")

# Get players
players = get_team_players(team_id)
print(f"\nPlayers ({len(players['players'])}):")
for player in players['players'][:10]:
    name = player['player']['name']
    position = player['player'].get('position', 'N/A')
    print(f"  {name} ({position})")

Workflow 8: Get Player Statistics

python
def get_player_data(player_id):
    """Get player information"""
    data = make_request("/v1/players/data", {"player_id": player_id})
    return data.get('data', {})

def get_player_statistics_seasons(player_id):
    """Get available seasons for player statistics"""
    data = make_request("/v1/players/statistics/seasons", {"player_id": player_id})
    return data.get('data', [])

def get_player_statistics(player_id, unique_tournament_id, season_id):
    """Get player statistics for a season"""
    data = make_request("/v1/players/statistics/result", {
        "player_id": player_id,
        "unique_tournament_id": unique_tournament_id,
        "seasons_id": season_id,
        "player_stat_type": "overall"
    })
    return data.get('data', {})

# Usage
player_id = 12994  # Example player ID

player = get_player_data(player_id)
print(f"\nPlayer: {player['name']}")
print(f"Position: {player.get('position', 'N/A')}")
print(f"Country: {player.get('country', {}).get('name', 'N/A')}")

# Get statistics
seasons = get_player_statistics_seasons(player_id)
if seasons:
    recent_season = seasons['uniqueTournamentSeasons'][9]
    season_id = recent_season['seasons'][0]['id']
    tournament_id = recent_season['uniqueTournament']['id']

    stats = get_player_statistics(player_id, tournament_id, season_id)

    if stats and 'statistics' in stats:
        stat = stats['statistics']
        print(f"\nStatistics ({recent_season['seasons'][0]['name']}):")
        print(f"  Matches: {stat.get('matchesStarted', 0)}")
        print(f"  Goals: {stat.get('goals', 0)}")
        print(f"  Assists: {stat.get('assists', 0)}")
        print(f"  Minutes: {stat.get('minutesPlayed', 0)}")
        
"""
Player: Lionel Messi
Position: F
Country: Argentina

Statistics (UEFA Champions League 22/23):
  Matches: 7
  Goals: 4
  Assists: 4
  Minutes: 615
"""

Workflow 9: Live Score Monitor

python
import time
from collections import deque

class LiveScoreMonitor:
    def __init__(self, sport_id=1, refresh_interval=60):
        self.sport_id = sport_id
        self.refresh_interval = refresh_interval
        self.tracked_matches = {}

    def get_live_matches(self):
        """Get current live matches"""
        data = make_request("/v1/events/schedule/live", {"sport_id": self.sport_id})
        return data.get('data', [])

    def check_score_changes(self, matches):
        """Check for score changes"""
        changes = []

        for match in matches:
            match_id = match['id']
            home_score = match.get('homeScore', {}).get('current', 0)
            away_score = match.get('awayScore', {}).get('current', 0)
            current_score = (home_score, away_score)

            if match_id in self.tracked_matches:
                previous_score = self.tracked_matches[match_id]

                if current_score != previous_score:
                    changes.append({
                        'match': match,
                        'previous': previous_score,
                        'current': current_score
                    })

            self.tracked_matches[match_id] = current_score

        return changes

    def monitor(self, duration_minutes=5):
        """Monitor live matches for changes"""
        print(f"Starting live score monitor for {duration_minutes} minutes...")
        print(f"Refresh interval: {self.refresh_interval} seconds\n")

        end_time = time.time() + (duration_minutes * 60)

        while time.time() < end_time:
            timestamp = datetime.now().strftime('%H:%M:%S')
            print(f"[{timestamp}] Checking for updates...")

            try:
                matches = self.get_live_matches()
                print(f"Live matches: {len(matches)}")

                changes = self.check_score_changes(matches)

                if changes:
                    print("\n*** SCORE CHANGES DETECTED! ***")
                    for change in changes:
                        match = change['match']
                        home = match['homeTeam']['name']
                        away = match['awayTeam']['name']
                        prev = change['previous']
                        curr = change['current']

                        print(f"  {home} {prev[0]} -> {curr[0]} - {curr[1]} <- {prev[1]} {away}")
                else:
                    for match in matches[:5]:
                        home = match['homeTeam']['name']
                        away = match['awayTeam']['name']
                        h_score = match.get('homeScore', {}).get('current', 0)
                        a_score = match.get('awayScore', {}).get('current', 0)
                        status = match['status']['description']
                        print(f"  {home} {h_score} - {a_score} {away} [{status}]")

            except Exception as e:
                print(f"Error: {e}")

            time.sleep(self.refresh_interval)

        print("\nMonitoring ended.")

# Usage
monitor = LiveScoreMonitor(sport_id=1, refresh_interval=30)
monitor.monitor(duration_minutes=10)

Workflow 10: Get Match Odds

python
def get_match_odds(event_id, provider_id=1):
    """
    Get betting odds for a match

    Args:
        event_id: Event ID
        provider_id: Odds provider (1 = Bet365)
    """
    data = make_request("/v1/events/odds/all", {
        "event_id": event_id,
        "provider_id": provider_id,
        "odds_format": "decimal"
    })
    return data.get('data', {})

# Usage
event_id = 14442358

# Get event info first
event = get_event_data(event_id)
print(f"\n{event['homeTeam']['name']} vs {event['awayTeam']['name']}")
print("=" * 40)

# Get odds
odds_data = get_match_odds(event_id)

if odds_data:
    for market in odds_data:
        market_name = market.get('marketName', 'Unknown')
        print(f"\n{market_name}:")

        for choice in market.get('choices', []):
            name = choice.get('name', '')
            odds = choice.get('fractionalValue', 0)
            print(f"  {name}: {odds}")
else:
    print("No odds available for this match")

Complete Example: Football Dashboard

python
#!/usr/bin/env python3
"""
Football Dashboard - Complete Example
Displays live scores, standings, and upcoming matches
"""

import requests
from datetime import datetime

class FootballDashboard:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "https://sofasport.p.rapidapi.com"
        self.headers = {
            "X-RapidAPI-Key": api_key,
            "X-RapidAPI-Host": "sofasport.p.rapidapi.com"
        }

    def request(self, endpoint, params=None):
        url = f"{self.base_url}{endpoint}"
        response = requests.get(url, headers=self.headers, params=params)
        return response.json() if response.status_code == 200 else None

    def get_live_matches(self):
        data = self.request("/v1/events/schedule/live", {"sport_id": 1})
        return data.get('data', []) if data else []

    def get_standings(self, tournament_id=17):
        # Get current season
        seasons_data = self.request("/v1/unique-tournaments/seasons", {
            "unique_tournament_id": tournament_id
        })

        if not seasons_data or not seasons_data.get('data'):
            return None

        season_id = seasons_data['data'][0]['id']

        # Get standings
        standings_data = self.request("/v1/seasons/standings", {
            "unique_tournament_id": tournament_id,
            "seasons_id": season_id,
            "standing_type": "total"
        })

        return standings_data.get('data') if standings_data else None

    def display_dashboard(self):
        print("\n" + "=" * 60)
        print(f"  FOOTBALL DASHBOARD - {datetime.now().strftime('%Y-%m-%d %H:%M')}")
        print("=" * 60)

        # Live Matches
        print("\n  LIVE MATCHES")
        print("  " + "-" * 56)

        live_matches = self.get_live_matches()

        if live_matches:
            for match in live_matches[:8]:
                home = match['homeTeam']['name'][:12]
                away = match['awayTeam']['name'][:12]
                h_score = match.get('homeScore', {}).get('current', 0)
                a_score = match.get('awayScore', {}).get('current', 0)
                status = match['status']['description']
                tournament = match.get('tournament', {}).get('name', '')[:15]

                print(f"  {home:<12} {h_score} - {a_score} {away:<12} [{status:<8}] {tournament}")
        else:
            print("  No live matches at the moment")

        # Standings (Top 5)
        print("\n  PREMIER LEAGUE STANDINGS (Top 5)")
        print("  " + "-" * 56)

        standings = self.get_standings(17)  # Premier League

        if standings:
            table = standings[0]['rows'][:5]

            print(f"  {'#':<3} {'Team':<20} {'P':<3} {'GD':<4} {'Pts':<3}")
            print("  " + "-" * 36)

            for team in table:
                pos = team['position']
                name = team['team']['name'][:18]
                played = team['matches']
                gd = int(team['scoreDiffFormatted'])
                points = team['points']

                print(f"  {pos:<3} {name:<20} {played:<3} {gd:<+4} {points:<3}")

        print("\n" + "=" * 60)

# Usage
if __name__ == "__main__":
    API_KEY = "YOUR_RAPIDAPI_KEY"
    dashboard = FootballDashboard(API_KEY)
    dashboard.display_dashboard()

Support

We’re dedicated to providing the best API products.