Blog · Announcement · 7 min read
Tanzania's Ligi Kuu Bara is now in Global-Football-API
The endpoints that already serve 58 club competitions now return Tanzania's top two divisions. Fixtures, results, league tables, club crests and goal events for the NBC Premier League and the NBC Championship are live on the free tier, with no extra key and no new schema to learn.
What is included
Two competitions, one league id each, 32 clubs between them:
| Competition | League id | Match records | Clubs | Leader today |
|---|---|---|---|---|
| NBC Premier League | tza.1 | 215 | 16 | Simba SC (24 pts) |
| NBC Championship | tza.2 | 240 | 16 | KMC FC (14 pts) |
Every match record carries a kickoff time in UTC, a status, both competitors with their crests, the venue when the source publishes one, and the score once the match is finished. Finished matches expose their goals with the minute and the scorer. The league table is computed from those results and returned in the same shape as every other competition, so a table you already render for England or Spain will render Tanzania with no code change.
The two leagues
NBC Premier League, league id tza.1, is the top division: 16 clubs, including Simba SC and Young Africans, and the fixtures that fill Dar es Salaam and Mwanza on a Saturday. NBC Championship, league id tza.2, is the second tier, with 16 more clubs and its own promotion race.
Both use the same data contract as every other league in the API. A fixture id is stable, so you can store it, link to it, and poll it. Team ids are stable too, which matters more than it sounds: it means crests, form and standings can be joined without fuzzy name matching.
What the data looks like
A fixtures call returns the league envelope, paging metadata and an events array. This is a trimmed response for the next Premier League fixture:
GET /get/soccer/tza.1/fixtures?status=scheduled&limit=2
{
"count": 152,
"pageIndex": 1,
"pageSize": 2,
"pageCount": 76,
"events": [
{
"id": "17363",
"date": "2026-10-23T13:00:00.000Z",
"name": "Polisi Tanzania vs Pamba Jiji",
"competitions": [{
"status": { "type": { "state": "pre", "shortDetail": "Scheduled" } },
"venue": { "fullName": "Ushirika Stadium, Kilimanjaro" },
"competitors": [
{ "homeAway": "home",
"team": { "name": "Polisi Tanzania" } },
{ "homeAway": "away",
"team": { "name": "Pamba Jiji" } }
]
}]
}
]
}
Standings return entries in rank order. Statistics are name/value pairs, which keeps the payload stable when a provider adds a column:
{
"rank": 1,
"team": { "id": "291", "name": "Simba SC" },
"stats": [
{ "name": "gamesPlayed", "displayValue": "8" },
{ "name": "wins", "displayValue": "8" },
{ "name": "ties", "displayValue": "0" },
{ "name": "losses", "displayValue": "0" },
{ "name": "goalDiff", "displayValue": "15" },
{ "name": "points", "displayValue": "24" }
]
}
Match detail returns goal events with a display minute you can print as-is. Here is Geita Gold 0-3 Dodoma Jiji on 16 October, where the away side scored three times inside the first seven minutes:
{
"text": "Khleffin Hamdoun goal for Dodoma Jiji",
"clock": { "value": 180, "displayValue": "3'" },
"team": { "name": "Dodoma Jiji", "side": "away" }
}
The table as it stands
Eight matches into the season, the top of the Premier League looks like this (23 October 2026):
| # | Club | P | W | D | L | GF | GA | GD | Pts |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Simba SC | 8 | 8 | 0 | 0 | 19 | 4 | +15 | 24 |
| 2 | Young Africans | 7 | 6 | 0 | 1 | 17 | 4 | +13 | 18 |
| 3 | Azam FC | 8 | 5 | 2 | 1 | 13 | 7 | +6 | 17 |
| 4 | Dodoma Jiji | 8 | 4 | 2 | 2 | 8 | 5 | +3 | 14 |
| 5 | JKT Tanzania | 8 | 4 | 1 | 3 | 11 | 12 | -1 | 13 |
Simba have won all eight and conceded four. Young Africans have played a game fewer and conceded the same four goals, which is the sort of detail a table widget should show rather than hide. Both numbers come straight from the standings endpoint, not from a hardcoded page.
Next fixtures in East Africa Time
Kickoffs are stored in UTC and converted here to EAT (UTC+3), which is how a Tanzanian audience reads them:
| Date | Kickoff | Match | Venue |
|---|---|---|---|
| Fri 23 Oct | 16:00 | Polisi Tanzania vs Pamba Jiji | Ushirika Stadium, Kilimanjaro |
| Sat 24 Oct | 16:00 | TRA United vs Young Africans | Sheikh Amri Abeid, Arusha |
| Sat 24 Oct | 18:00 | JKT Tanzania vs Kagera Sugar | Mej. Gen. Isamuhyo, Dar es Salaam |
| Sat 24 Oct | 20:30 | Namungo FC vs Coastal Union | Majaliwa Stadium, Lindi |
| Mon 26 Oct | 19:00 | Geita Gold vs Fountain Gate | Bukombe, Geita |
| Tue 27 Oct | 18:30 | Young Africans vs Mashujaa FC | KMC Complex, Dar es Salaam |
Quick start
Grab a key from the RapidAPI listing and call the host directly. The free tier allows 100 requests a day, which is enough to build and demo a matchday page:
curl -s "https://global-football-api1.p.rapidapi.com/get/soccer/tza.1/fixtures?status=scheduled&limit=5" \
-H "X-RapidAPI-Key: YOUR_KEY" \
-H "X-RapidAPI-Host: global-football-api1.p.rapidapi.com"
The endpoints you need for a full match centre:
GET /get/soccer/tza.1/fixtures
?status=all|scheduled|live|finished&page=1&limit=20
GET /get/soccer/tza.1/events/{eventId}
GET /get/soccer/tza.1/standings
GET /get/soccer/tza.1/clubs
GET /get/soccer/tza.1/scoreboard?dates=20261024
GET /get/soccer/meta
And the same thing in JavaScript, for a server route that renders the table:
const res = await fetch(
"https://global-football-api1.p.rapidapi.com/get/soccer/tza.1/standings",
{ headers: { "X-RapidAPI-Key": process.env.RAPIDAPI_KEY,
"X-RapidAPI-Host": "global-football-api1.p.rapidapi.com" } }
);
const data = await res.json();
const rows = data.children[0].standings.entries;
The Swahili walkthrough, with the same examples and a full explanation of the pricing, is at API ya Ligi Kuu Bara. Runnable curl, Node and Python examples live in the GitHub repository.
What is not in the data
Honesty is cheaper than a support ticket, so here is what these two leagues do not have yet:
- No play-by-play timeline. Goals are stored; cards, substitutions and commentary are not. The response says so at
meta.dataAvailability.timeline.available = falserather than returning an empty array that looks like a bug. - No possession, shots or xG. Our feed for these matches does not include them, and we do not invent them.
- No top-scorer table. Goal events name the scorer and the minute, but there is no season scorer endpoint for Tanzania yet.
- The table is computed, not official. We build it from stored results. If a result is corrected late, our table follows after the next sync; an official table published by the league is the authority.
- Current season only. The 2026 season is loaded. Historical seasons are not backfilled.
Each league document carries a lastSyncedAt timestamp, so your UI can show how fresh the data is instead of guessing.
What to build with it
The obvious projects are the ones people actually search for: a Ligi Kuu table embed for a news site, a matchday page that lists today's fixtures in EAT, or a Telegram bot that posts a goal the moment a match detail changes. Less obvious, and more useful: a promotion-race tracker for the Championship, where the second tier gets almost no coverage, or a widget that shows the next fixture for a club on its own site.
Crests are served as absolute URLs, so a card can be rendered without hosting images yourself. Venue names come through when the source has them, which is enough for a "matches near me" filter once you map the stadiums you care about.
Access and pricing
The free tier stays free: 100 requests a day, no card, full access to both Tanzanian leagues. Paid plans start at $9.99 for 20,000 requests a month, and the $19.99 plan covers 150,000 requests with 20 requests per second if you are serving a public site.
Start with the free key, call /get/soccer/tza.1/fixtures?status=scheduled, and see whether the data fits what you are building. If something is missing that your product needs, tell us in the RapidAPI discussion tab; Tanzania coverage will keep growing from here.
MatchGrind is independent and not affiliated with the NBC Premier League, the Tanzania Football Federation or any club. League and club names are used factually; their marks belong to their owners.