Known issues
Places where the API behaves differently from its older documentation, or in surprising ways. All were measured on 5 Oct 2026.
Limits
- v2 "Limit" values aren't the real limits.
- Every v2 lookup is documented with "Limit: 1", but list-like lookups return many records:
lookup/player_statsreturned 315,lookup/event_lineup22. filter/tv/day(287) andfilter/tv/sport(189) returned more than their documented 100.search/teamreturned 12 against a documented 10.schedule/next/leagueandschedule/previous/leaguereturned 20 against 10.- Some free-key results are lower than documented:
all_leagues.phpreturned 5 (documented 10),search_all_leagues.php5 (10),eventsseason.php5 (15). - The free keys get fewer fields from
all_leagues.php:strLeagueAlternateis missing.
Keys
- A second free key,
3, still works, with the same limits as123. - Wrong keys get HTTP 400, with a "premium" message even on v1. The old example keys
1and2no longer work.
Responses
- Record keys don't always match their content:
eventslast.phpreturns events underresults;search_all_leagues.phpreturns leagues undercountries. - "No results" has three forms (
null, an empty body,{"Message":"No data found"}), all with HTTP 200. - Rejected parameters come back with HTTP 200 and the error text where the records belong:
{"seasons":"Invalid League ID passed"}. - v2 search sends ids as numbers. Every other endpoint sends text.
Endpoints
eventstv.phpwitha=(country) but nos=(sport) returns an empty body.eventstv.php?id=takes a channel id, not an event id.- v2
search/eventneeds the exact stored event name. v1searchevents.phpmatches looser input such asArsenal_vs_Chelsea. livescore.php(v1) is undocumented but works. The free keys get the full live feed (51 games, the same as premium), andl=is ignored.
The official OpenAPI files
TheSportsDB publishes v1 and v2 OpenAPI files. Compared with the API:
- Missing endpoints that work and are documented in HTML: v1 searchfilename.php, playerresults.php and lookupplayerstats.php; v2 lookup/player_results, lookup/player_stats and filter/tv/channelid.
- Missing parameters: eventstv.php c= and id=; search_all_seasons.php description=1.
- Only there: v2 list/seasonposters/{idLeague}, which isn't in the HTML documentation.
- Fields that are no longer sent: idSoccerXML, intStadiumCapacity, strTweet2, strTweet3, intEventScore, intEventScoreTotal.
The reference on this site covers all of these.
Data
- An event's
strLeaguecan be an old name for itsidLeague(e.g.Colombia Categoría Primera Afor the league now calledColombian Liga DIMAYOR). Match leagues by id. strWeatheris rarely filled in (1 of 901 events on 4 Oct 2026).
Legacy endpoints
These aren't in the current documentation. They answer the free keys but return HTTP 404 (an HTML page) to premium keys, so an app built on the free key can break when it upgrades.
| Endpoint | Free keys | Premium | Use instead |
|---|---|---|---|
eventsround.php?id=&r=&s= |
the whole round | 404 | v2 schedule/league/{id}/{season}, filtered by intRound |
lookup_all_teams.php?id= |
wrong league: id 4328 (Premier League) returned 24 League One clubs | 404 | search_all_teams.php?l={league name}, or v2 list/teams/{id} |
searchloves.php?u= |
works | 404 | — |
Removed endpoints that return 404 to every key: lookuplineups.php (use lookuplineup.php) and eventsvs.php. These searches no longer answer: searchteams.php?sname= (short code) and searchplayers.php?t= (by team) both return an empty body. Use lookup_all_players.php?id={teamId} for a squad.