Getting started
The API is available through two base URLs. Pick one, add your key, and every endpoint works the same way.
Base URLs
| Where you subscribe | Base URL | Best for |
|---|---|---|
| RapidAPI | https:// | Teams that already use RapidAPI billing and its key management |
| NosyAPI direct | | Direct contract and invoicing with the provider |
Append an endpoint path to the base URL, for example /sports-tv/matches. Responses are identical on both.
Authentication
RapidAPI
Send two headers with every request. Your key is on the RapidAPI endpoint page after you subscribe.
X-RapidAPI-Key: YOUR_RAPIDAPI_KEY
X-RapidAPI-Host: sports-tv-guide-api.p.rapidapi.comNosyAPI direct
Send the key from your NosyAPI account panel with each request, as shown in the code examples when you choose "NosyAPI direct".
Keep your key on your server. If a browser or mobile app needs the data, call the API from your backend and pass the result on, so the key never reaches the client.
First request
Today's matches on UK television, with times in London:
Conventions
| Topic | Rule |
|---|---|
| Times | startUtc is always UTC (ISO 8601). date and time use the timezone you send; the default is Europe/Istanbul. |
| Days | date sets the first day and days (1 to 8) how many days to return. |
| Status | scheduled, live or finished. |
| Scores | Only for finished matches; otherwise null. |
| Country codes | Channel countries are three uppercase letters, such as GBR. Parameters are case-insensitive. |
| League country vs broadcast country | country=England filters by the league's country. channelCountry=GBR filters by where the match is shown. |
| Logos and links | May be null. |
| Language | lang=en (default) or lang=tr for team and sport names. |
Pagination
List endpoints return pagination and data. Use page and perPage (default 50, maximum 100).
{
"pagination": { "total": 214, "per_page": 50, "current_page": 1, "last_page": 5, "from": 1, "to": 50 },
"data": [ ... ]
}Errors
An invalid parameter returns a failure status with a message that names the parameter. Errors and empty results are not charged.
| Cause | Message |
|---|---|
Unknown lang | Invalid lang parameter (en, tr). |
Unknown timezone | Invalid timezone (e.g. Europe/Istanbul). |
Malformed date | Invalid date (YYYY-MM-DD). |
days outside 1 to 8 | days must be between 1 and 8. |
Unknown status | Invalid status (scheduled, live, finished). |
| Non-numeric ID | Invalid leagueID / teamID / channelID / detailsID. |
Short or missing search | Search must be at least 2 characters. |
FAQ
How often is the data refreshed?
Today's matches are refreshed several times an hour. Later days are refreshed less often, since their schedules change less.
Why does a match have no channels for my country?
It is not broadcast there, or no broadcaster has been announced yet. Listings are added as match day approaches.
How do I get a team's or league's ID?
Search with /sports-tv/teams?search= or /sports-tv/leagues?search=, then pass the ID to /sports-tv/matches.
Which timezone should I send?
Your users' timezone, such as Europe/London or America/New_York. It decides which matches count as today.
Can I call the API from a browser?
Call it from your server instead, so your key stays private. Cache responses for a minute or two to save requests.