Developer reference

Cricket API for live scores, scorecards and ball-by-ball data

A cricket data API is a REST service that returns match state as JSON: who is batting, the score, the last ball, the full card, and the players in the squad. CricLive is that API. You call HTTPS endpoints with an API token and render the response in a website, app, or bot.

What you can request

Most cricket products need the same handful of objects. A live score widget needs the current innings. A match page needs the scorecard. A fantasy app needs players, roles, and points. A calendar needs the schedule and the series. CricLive splits those into separate endpoints so you do not download a full card just to show “187/3”.

  • Live matches — matches currently in play, with status and score.
  • Scorecard — innings, batters, bowlers, extras, fall of wickets.
  • Commentary — ball-by-ball lines for a match id.
  • Squads and players — playing XI, bench, and player profiles.
  • Series, schedule, rankings — fixtures grouped by series, plus ICC tables.

If you only need a free key and a small request quota, start on the free cricket API. If the product is a running score line, read the cricket live line API. Fantasy points live on the fantasy cricket API.

Authentication

Create an account, copy the API token from the dashboard, and send it on every request. The public cricket routes sit under /api/v1/cricket and expect a Bearer token.

GET /api/v1/cricket/matches/live HTTP/1.1
Host: cricketliveapi.com
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json

Do not put the token in frontend JavaScript that ships to browsers. Call the API from your server, or from a backend-for-frontend, and cache the response for a few seconds. Live scores change quickly, but a 2–5 second cache is enough for most score widgets and protects your quota.

Live scores request

The first call in almost every integration is the live match list. Use it to discover match ids, then request the scorecard or commentary for the match the user opened.

curl -H "Authorization: Bearer YOUR_API_TOKEN" \
  https://cricketliveapi.com/api/v1/cricket/matches/live

A successful payload uses a status field and a data object. Shape your UI against these keys, not against a single flattened string:

{
  "status": "success",
  "data": {
    "matches": [
      {
        "match_id": 92411,
        "teams": "India vs Australia",
        "format": "T20",
        "status": "live",
        "score": "187/3 (18.4 ov)",
        "venue": "Wankhede Stadium"
      }
    ]
  }
}

Store match_id. Every detail endpoint — scorecard, commentary, squads, overs — takes that id in the path.

Scorecard and commentary

A scorecard is the batting and bowling table. Commentary is the event log. They update on different cadences, so keep them as two requests.

GET /api/v1/cricket/scorecard/92411
GET /api/v1/cricket/commentary/92411

Render batters with runs, balls, fours, sixes, and strike rate. Render bowlers with overs, maidens, runs, and wickets. Commentary entries should keep over number, ball outcome, and the text line. If a field is missing for a player who has not batted, show a dash rather than failing the page.

Signed-in API reference pages document each parameter: API docs. Fantasy-specific routes are listed separately in fantasy docs.

Errors you should handle

Treat any non-success status as a failed call. Do not parse data until status is success.

{
  "status": "error",
  "message": "Unauthenticated."
}
  • 401 — missing or revoked token. Send the user back to the dashboard to copy a new key.
  • 404 — match id does not exist, or the match has no scorecard yet.
  • 429 — quota exceeded. Back off, serve the last cached payload, and link the user to pricing.
  • 5xx — retry once with jitter, then show the last good score with a “delayed” label.

A small PHP call

This is the smallest server-side client that is safe to ship. It refuses to decode a body that is not JSON and it checks status before reading matches.

$ch = curl_init('https://cricketliveapi.com/api/v1/cricket/matches/live');
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token, 'Accept: application/json'],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 8,
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$json = json_decode($body, true);
if ($code !== 200 || !is_array($json) || ($json['status'] ?? '') !== 'success') {
    throw new RuntimeException('Cricket API request failed');
}
$matches = $json['data']['matches'] ?? [];

How to choose a plan

Use the free tier while you wire the live list, one scorecard, and one commentary feed. Move up when you poll many matches, store historical cards, or serve a public website. Prices change, so do not hard-code them in your app. Always read the current numbers on the pricing page.

Coverage includes international cricket plus league and domestic competitions used by Indian products: IPL, Ranji Trophy, Vijay Hazare, Syed Mushtaq Ali, women’s cricket, and overseas leagues such as BBL, PSL, CPL, SA20, and ILT20 when those competitions are in season.

Questions developers ask

Is this a live cricket score API or only fixtures?

Both. /matches/live is the live list. Schedule and series endpoints cover fixtures that have not started.

Can I call it from Python or Node?

Yes. Any HTTP client works. Send the same Bearer header and parse status and data.

Where do fantasy points come from?

They are a separate set of routes. See the fantasy cricket points API rather than inventing points from the scorecard.

Try this API

Register, copy the token, and request /api/v1/cricket/matches/live. If you need a guided path, start with how it works or the feature list.

Start building