Indian Super League API: Build ISL Fixtures, Standings & Match Pages
Build with the Indian Super League API: ISL fixtures, results, standings, lineups and match stats. Real endpoints and copy-paste code from GOAL API.
GOAL API

The Indian Super League runs through the Indian football season and pulls a big, mobile-first audience — exactly the kind of fan base that fills app stores with ISL trackers, match-centres, and fantasy tools. If you're building one, this guide shows precisely what Indian Super League (ISL) data you can pull from GOAL API, with real endpoints and copy-paste requests.
Everything here reflects what GOAL API actually holds for the ISL today — no overclaiming. For the live data spec and current match counts, the ISL coverage page is the source of truth; this post is the how-to that builds on it.
Free tier, no credit card — get a key and make your first request in a couple of minutes: goal-api.com/signup
What ISL Data Is Actually Available
Not every league carries every data type — it depends on what the upstream sources publish. For the Indian Super League (2021–2026 seasons, 16 teams in the data), here's what GOAL API holds:
| Data type | Available? |
|---|---|
| Fixtures & results | Yes — 625 matches |
| League standings | Yes — 14 rows |
| Match lineups | Yes — 625 matches |
| Match statistics | Yes — 615 matches |
| Goals, cards & substitutions | Yes — 436 matches |
| Top scorers | Not available for this league |
| Odds | Not available for this league |
| Predictions | Not available for this league |

Being upfront about what isn't there matters: some competing ISL API pages advertise odds for this competition. Check the coverage page before you design a feature around any data type — it reports what is actually held today, league by league, and the numbers come straight from the database.
Quick Start: Your First ISL Request
The Indian Super League uses league ID cmr77dvry008arx06q35z3h2m (find any competition's ID with GET /leagues?search=). That one ID is the key to every ISL call. Here's the fastest path to data:
curl "https://api.goal-api.com/v1/leagues/cmr77dvry008arx06q35z3h2m/fixtures" \
-H "Authorization: Bearer YOUR_API_KEY"Authentication & the league ID
Send your API key in an Authorization: Bearer header — grab it from the dashboard after signing up. Full auth details and every endpoint are in the GOAL API documentation. Cache the league ID; it's stable, so there's no need to look it up on each request.
// JavaScript
const ISL = 'cmr77dvry008arx06q35z3h2m';
const res = await fetch(
`https://api.goal-api.com/v1/leagues/${ISL}/fixtures`,
{ headers: { Authorization: `Bearer ${process.env.GOAL_API_KEY}` } }
);
const { data } = await res.json();ISL Fixtures & Results
Fixtures and results are the backbone of any ISL app — the full schedule plus finished-match scores. With 625 matches across the covered seasons, you have both the current campaign and the history to work with.
# All ISL fixtures (league ID cmr77dvry008arx06q35z3h2m)
curl "https://api.goal-api.com/v1/leagues/cmr77dvry008arx06q35z3h2m/fixtures" \
-H "Authorization: Bearer YOUR_API_KEY"Results come 50 per page: follow pagination.hasMore and pass ?offset= for the next page. Each fixture carries the two teams, kickoff time in UTC, status, and — for finished matches — the score. Because the ISL audience is overwhelmingly in India, convert kickoffUtc to IST (UTC+5:30) on the client so kickoff times read correctly for your users.
The ISL Table (League Standings)
The standings endpoint returns the ISL table already ordered — position, played, won/drawn/lost, goals for and against, and points (goal difference is goals for minus against). One ISL-specific thing worth getting right in your UI: the team that finishes top of the league stage wins the League Winners Shield, while the ISL Cup is decided by the end-of-season playoffs. They're two different trophies — label them accordingly.
curl "https://api.goal-api.com/v1/leagues/cmr77dvry008arx06q35z3h2m/standings" \
-H "Authorization: Bearer YOUR_API_KEY"The generic pattern — find the competition, pull the table, render it — is covered step by step in the fixtures & standings page tutorial; here you already know the ID is cmr77dvry008arx06q35z3h2m.
Lineups & Match Statistics
Lineups are available for all 625 matches, and match statistics for 615 — enough to build a proper match-centre. Pull the starting XI, formation, and bench for a fixture, plus stats like possession and shots.
# Lineups for a specific fixture
curl "https://api.goal-api.com/v1/fixtures/{fixtureId}/lineups" \
-H "Authorization: Bearer YOUR_API_KEY"
# Match statistics
curl "https://api.goal-api.com/v1/fixtures/{fixtureId}/statistics" \
-H "Authorization: Bearer YOUR_API_KEY"Rendering a formation pitch and a stats panel is exactly what the build a match page tutorial walks through — the ISL data slots straight into it.
Goals, Cards & Substitutions
Event data — goals, cards, and substitutions — is held for 436 matches, which powers a match timeline or an event feed.
# Goals
curl "https://api.goal-api.com/v1/fixtures/{fixtureId}/events" \
-H "Authorization: Bearer YOUR_API_KEY"
# Cards and substitutions
curl "https://api.goal-api.com/v1/fixtures/{fixtureId}/cards" \
-H "Authorization: Bearer YOUR_API_KEY"
curl "https://api.goal-api.com/v1/fixtures/{fixtureId}/substitutions" \
-H "Authorization: Bearer YOUR_API_KEY"Event coverage (436) is lower than fixture coverage (625), so build your timeline to degrade gracefully: when a match has no events, fall back to the final score and stats rather than showing an empty feed.
Handling the League Stage vs Playoffs
The ISL season has two phases: a round-robin league stage, then playoffs among the top teams leading to the final. Practically, for your app:
- League stage → render the standings table from the /standings call.
- Playoffs → there's no single table for the knockout; build the bracket from the fixtures and their results.
Don't hard-code team counts or fixture totals as permanent constants — they shift between editions. Read them from the data each season. Other competitions follow the same league-stage-plus-knockout shape; browse the all leagues coverage to reuse the same code elsewhere.
What This League Does NOT Include
Worth stating plainly so you don't build a feature on data that isn't there for the ISL:
- Top scorers — not available for the ISL specifically (available for many other leagues; check the coverage page per competition).
- Odds — not available for this competition.
- Predictions — not available for this competition.
If your product needs those, you can compute your own top-scorer list from event data where present, design around a competition that carries them, or contact the team to ask about coverage. The coverage page tells you, per league, before you write any code.
Endpoints You'll Use
| Endpoint | Returns |
|---|---|
| /v1/leagues/cmr77dvry008arx06q35z3h2m/fixtures | All ISL fixtures & results |
| /v1/leagues/cmr77dvry008arx06q35z3h2m/standings | ISL table (league stage) |
| /v1/fixtures/{id}/lineups | Starting XI, formation, bench |
| /v1/fixtures/{id}/statistics | Possession, shots, match stats |
| /v1/fixtures/{id}/events | Goals (scorer, assist, minute) |
| /v1/fixtures/{id}/cards | Yellow and red cards |
| /v1/fixtures/{id}/substitutions | Substitutions |
Auth on every request: Authorization: Bearer YOUR_API_KEY. Full reference in the GOAL API documentation.
What to Build Next
An ISL match-centre app — fixtures, live-updating scores, lineups, and a stats panel. Given the ISL's mobile-first audience, a React Native live score app is a natural fit for iOS and Android from one codebase.
A standings & form widget — an embeddable ISL table, refreshed after each matchday.
A playoff bracket — render the knockout from fixtures and results as the season reaches its climax.
Size your plan for match nights — ISL fixtures cluster on weekends and evenings. The pricing per match guide shows how to size for those spikes without overpaying. For another single-competition build, the UEFA Nations League API guide follows the same pattern.
Start building free → | No credit card | ISL data on the free tier


