Krok Odds

Insights API endpoints

Ranked leaderboards built on top of the stat feeds — per-sport player leaders for a chosen stat, season and view.

1 of 1 endpoints · all categories · get a free API key

GET/api/v1/insights/leadersFree tier

Player stat leaders for one sport and season — a ranked board for a single stat, or a multi-column advanced board for the sports that have one.

Bills 1 credit, and unlike most of the family it sends **no** `x-credits-cost` header — the charge only shows up in `/me/usage` (measured: two `/me/usage` reads a credit apart, then one `limit=2` call, moved the total by exactly 1). A failed read is not an empty board: if the only table the request needed is unreadable you get **503** with `Retry-After` and `meta.failed_sources`, and the credit is refunded; a genuinely empty board is still a plain 200. That degraded answer is never cached — the read result is what the cache stores, so a thin board would otherwise be served for the full TTL after the read recovered. `Cache-Control: private, no-store` with `X-Cache-Age` 600 on the `api` tier (3600 on `free`), `Access-Control-Allow-Origin: *`, `X-Krok-Version: 1`. `view=advanced` currently answers `available` with **`count: 0`** for both `basketball_nba` and `soccer_epl` — an empty advanced board is a 200, not an error, and it returns `columns`/`flavors`/`group_label` with no `players`. `total_players` is the size of the whole board (2000 for `basketball_nba`), not the number of rows you were served, and `truncated` is a length test rather than a real 'more rows exist' flag. The example is the live, unmodified response to `?sport=basketball_nba&limit=1`; it names no data source.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
sportstringYes–Sport key, lowercased before matching. One of 13: `aussierules_afl`, `rugbyleague_nrl`, `basketball_nba`, `americanfootball_nfl`, `baseball_mlb`, `icehockey_nhl`, `soccer_epl`, `soccer_uefa_champs_league`, `soccer_spain_la_liga`, `soccer_germany_bundesliga`, `soccer_italy_serie_a`, `soccer_france_ligue_one`, `soccer_australia_aleague`. Missing or unknown is a 400 (`Invalid sport. Supported: ...`) that echoes the whole list.
statstringNopointsStat to rank by. An unknown value is **not** an error — it silently falls back to the sport's first stat (`points`) and the response echoes the stat it actually used in `data.stat`. Read `data.available_stats` for the valid values on the sport you asked for (18 for `basketball_nba`, including `points`, `rebounds`, `totReb`, `assists`, `threes`, `steals`, `blocks`, `turnovers`, `minutes`, `plus_minus` and the made/attempted shooting splits).
seasonstringNo–Season to rank. Omitted, or a value not in `data.available_seasons`, silently falls back to the sport's default season, echoed in `data.season`. Unlike `stat`, this one **does** change the board: `basketball_nba` defaults to `2026` (17 players) while `season=2025` returns 28. Seasons are strings and include split-year forms (`2025-26`); `basketball_nba` currently offers `2026`, `2025-26`, `2025`, `2024-25`, `2024`, `2023-24`, `2023`, `2022-23`.
viewstringNostandard`standard` (one stat, ranked) or `advanced` (multi-column board). `advanced` only takes effect for the sports that have one; for any other sport it is ignored and you get the standard board back. The advanced payload has no `stat` — read `data.columns` for the column keys, labels, formats and descriptions, and each player's `values` object instead of `value`.
flavorstringNo–Advanced view only — picks a flavour within the board; the options come back in `data.flavors`.
limitintegerNo100Rows returned. Defaults to 100 and is capped at 5000 on the `api` tier (100 on `free`); `limit=99999` returns `meta.limit: 5000` with `meta.requested_limit: 99999`. `data.truncated` is `players.length === limit`, so it is `true` whenever the board is exactly as long as the limit — including when that limit is the whole board.
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/insights/leaders?X-API-Key=value&sport=aussierules_afl"
Example response
{
  "success": true,
  "data": {
    "sport": "basketball_nba",
    "view": "standard",
    "stat": "points",
    "season": "2026",
    "available_stats": [
      "points",
      "rebounds",
      "totReb",
      "assists",
      "threes",
      "threes_attempted",
      "steals",
      "blocks",
      "turnovers",
      "minutes",
      "fouls",
      "plus_minus",
      "field_goals_made",
      "field_goals_attempted",
      "free_throws_made",
      "free_throws_attempted",
      "offensive_rebounds",
      "defensive_rebounds"
    ],
    "available_seasons": [
      "2026",
      "2025-26",
      "2025",
      "2024-25",
      "2024",
      "2023-24",
      "2023",
      "2022-23"
    ],
    "players": [
      {
        "rank": 1,
        "name": "Joel Embiid",
        "slug": "joel_embiid",
        "team": "Philadelphia 76ers",
        "value": 28.24137931034483,
        "games_played": 515
      }
    ],
    "count": 1,
    "truncated": true,
    "total_players": 2000
  },
  "meta": {
    "tier": "api",
    "limit": 1,
    "requested_limit": 1,
    "timestamp": "2026-10-22T06:58:24.223Z",
    "rate_limit": {
      "limit": 500,
      "remaining": 438814
    }
  }
}

Other categories

Gameday8 endpoints

Per-event head-to-head odds, alternate lines, best prices across books, player props, live state and AI-generated summaries.

Opportunities7 endpoints

Krok's built-in scanners — arbitrage, positive EV, middles, low-holds, player props and same-game multi (SGM) picks, already devigged against a blended sharp baseline.

Racing23 endpoints

The full Australian racing stack — thoroughbred, harness and greyhound. Meetings and runner fields, form, sectionals, ratings, market movers, exchange arbs, tote pools and results.

Odds Feed16 endpoints

Raw per-bookmaker prices as scraped, before any analysis layer. `/scraped-odds/*` paths are aliases of the equivalent `/odds-feed/*` route.

Sports8 endpoints

Sport reference data, team form guides, league standings, injury reports and weather-impact analysis.

Tips & Predictions4 endpoints

AI-generated betting tips with confidence scores and historical accuracy tracking.

Tennis5 endpoints

ATP/WTA rankings, upcoming fixtures, match results, Elo ratings and surface-specific stats.

Historical7 endpoints

Deep archives — player and team game logs, shot charts, AFL/NRL historical data. Paid API plan only.

Reference7 endpoints

Static lookup data for building your own UI — players, venues, headshots, team logos and sport/league metadata.

Other Sports22 endpoints

Cricket, cycling, esports, Formula 1, golf, MMA, boxing, NFL and soccer coverage beyond the AU staples.

Infrastructure15 endpoints

Account and billing endpoints, bulk export, SSE streaming, webhook management and API health.

Additional Data19 endpoints

Odds history, steam-move detection, player prop stats/results, injuries, weather and other supporting feeds.

Prediction Markets3 endpoints

Polymarket and Kalshi sentiment plus a universal prediction-market catalogue and resolutions feed.