Parameter conventions
Which filters an endpoint accepts depends on the sport you are calling. Each prefix follows one of two conventions, and the convention decides the filter names you put in the query string.
Which convention your prefix follows
| Convention | Prefixes |
|---|---|
| Country and league |
|
| Single league |
|
A country and league prefix covers many leagues across many countries, so a query narrows by country and then by league. A single league prefix covers one professional league alongside its NCAA competitions, so there is no country to narrow by.
The filter names
| To filter by | Country and league | Single league |
|---|---|---|
| Competition on matches | leagueId and leagueName |
league |
| Competition on highlights and odds | leagueId and leagueName |
leagueName |
| Country on matches and highlights | countryCode and countryName |
Not available |
| A team on matches | homeTeamId, homeTeamName |
Those plus homeTeamAbbreviation and homeTeamDisplayName
|
| A team on the teams list | name, plus type on /football/teams |
name, abbreviation, displayName,
league
|
/countries, /countries/{countryCode},
/leagues and /leagues/{id} exist on the country and league
prefixes only.
Standings
| To filter by | Country and league | Single league |
|---|---|---|
| Season | season, required |
year, optional |
| Competition | leagueId, required |
leagueName, abbreviation and leagueType,
optional
|
| Paging parameters | None | limit and offset |
/football/standings requires leagueId and season.
Every parameter on /nba/standings is optional.
Cricket
Cricket follows the country and league convention and adds filters of its own.
/cricket/teams takes abbreviation,
/cricket/matches and /cricket/highlights take
homeTeamAbbreviation and awayTeamAbbreviation, and
/cricket/players takes teamId.
Paging
limit and offset are accepted on the endpoints that paginate,
and which those are depends on the prefix. Both are set out in
Pagination and limits.
Writing a client for several sports
Keep a small map from prefix to convention and build the query string from that map. The alternative is to integrate one sport at a time and treat each as its own client, which costs more code.
Build the query string from the prefix you are calling, not from the filters you used on the last one. Each sport's own documentation sets out the response shape for its endpoints.