Krok Odds

Other Sports — Golf, soccer & US sports

The golf, soccer & us sports half of the Other Sports reference — every route with its parameters, credit cost and a worked example.

9 of 22 endpoints · all categories · get a free API key

GET/api/v1/golf/rankingsAPI plan

Golf world/tour rankings by player.

Tier detail: Live but unpopulated: the route responds 200 with an empty list because no data flows into it yet (verified 2026-10-08). Treat as unavailable until rows appear.

No tour/date param — single collection covers all rankings snapshots, latest by fetchedAt.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
playerstringNo–Exact player name filter.
limitintegerNo100Max rows. Capped at 50 (free) / 200 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/golf/rankings?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "player": "Ludvig Karlberg",
      "rank": 4,
      "points": 8.42,
      "events_played": 19,
      "tour": "PGA Tour",
      "fetchedAt": "2026-09-01T12:00:00.000Z"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "api",
    "limit": 50,
    "requested_limit": 100,
    "player": "Ludvig Karlberg",
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 50,
      "remaining": 1991,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/golf/skillsAPI plan

Golf strokes-gained / approach-shot skill ratings by player.

`source=approach` switches to a different underlying collection (golf_approach_skills) with an approach-shot-specific shape — document both variants.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
sourcestringNoskillsWhich dataset: 'skills' (golf_player_skills) or 'approach' (golf_approach_skills). 400 if any other value.
playerstringNo–Exact player name filter.
limitintegerNo100Max rows. Capped at 50 (free) / 200 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/golf/skills?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "player": "Ludvig Karlberg",
      "sg_total": 2.14,
      "sg_off_tee": 0.61,
      "sg_approach": 0.88,
      "sg_around_green": 0.34,
      "sg_putting": 0.31,
      "fetchedAt": "2026-08-30T09:00:00.000Z"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "api",
    "limit": 50,
    "requested_limit": 100,
    "source": "skills",
    "player": "Ludvig Karlberg",
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 50,
      "remaining": 1990,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/golf/statsAPI plan

Golf player statistical projections (most recent snapshot).

No query filters at all besides limit — collection is 'the golf projections store' despite the route name 'stats'; there is no player/event filter param.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
limitintegerNo100Max rows. Capped at 50 (free) / 200 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/golf/stats?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "player": "Ludvig Karlberg",
      "event": "BMW Championship",
      "projected_finish": 6,
      "win_prob": 0.041,
      "top10_prob": 0.32,
      "made_cut_prob": 0.91,
      "fetchedAt": "2026-08-29T15:00:00.000Z"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "api",
    "limit": 50,
    "requested_limit": 100,
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 50,
      "remaining": 1989,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/leaderboards/soccerFree tier

Soccer league top-scorers or top-assists leaderboard for a league+season.

Data shape differs from every other endpoint here: `data` is a single object (not an array) containing a `players` array. Backing docs are chunked (>1MB document size limit split into `{docId}_c{i}` chunk docs) and reassembled server-side; the primary store path falls back to the secondary store on any read error. If the doc doesn't exist, returns success:true with data:null and count:0 (not a 404).

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
kindstringNotopscorers'topscorers' or 'topassists'. Any other value returns 400.
league_idstringYes–League id, e.g. '39' (Premier League). Required — 400 if missing.
seasonstringYes–Season year, e.g. '2026'. Required — 400 if missing.
limitintegerNo100Max players returned. Capped at 100 (free) / 5000 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/leaderboards/soccer?X-API-Key=value&league_id=abc123&season=value"
Example response
{
  "success": true,
  "data": {
    "league_id": "39",
    "league": "Premier League",
    "season": "2026",
    "kind": "topscorers",
    "players": [
      {
        "rank": 1,
        "player": "Erling Haaland",
        "team": "Manchester City",
        "goals": 9,
        "appearances": 4
      },
      {
        "rank": 2,
        "player": "Alexander Isak",
        "team": "Liverpool",
        "goals": 7,
        "appearances": 4
      }
    ],
    "count": 2,
    "updated_at": "2026-09-02T22:00:00.000Z"
  },
  "meta": {
    "count": 2,
    "tier": "free",
    "limit": 100,
    "requested_limit": 100,
    "kind": "topscorers",
    "league_id": "39",
    "season": "2026",
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 100,
      "remaining": 946,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/mma/fightsFree tier

MMA fight card entries/results by fight id or recently-updated window.

Same hand-rolled auth preamble pattern as boxing/fight-results and gated on 'gameday' rather than 'multisport'.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
fight_idstringNo–Exact fight id; does a direct single-document lookup, ignoring since/limit.
sincestring (ISO date)No–Only fights updated on/after this date. Clamped to the key's historical-window entitlement.
limitintegerNo50Max rows. Capped at 50 (free) / 2000 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/mma/fights?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "fight_id": "ufc-306-fontaine-vs-reyes",
      "date": "2026-09-06",
      "time": "22:00",
      "slug": "ufc-306",
      "status": "scheduled",
      "is_main": true,
      "category": "Welterweight",
      "fighters": [
        {
          "name": "Diego Fontaine",
          "record": "19-3-0"
        },
        {
          "name": "Marcus Reyes",
          "record": "17-2-0"
        }
      ],
      "league": "UFC",
      "country": "USA",
      "updated_at": "2026-09-02T20:00:00.000Z"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "free",
    "limit": 50,
    "requested_limit": 50,
    "fight_id": null,
    "since": null,
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 50,
      "remaining": 938,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/nfl/scheduleFree tier

NFL full-season schedule with teams, venues, kickoff times, and starting QBs.

The only endpoint in this batch built on the newer the standard auth guard/v1Success helper (adds X-Krok-Data-Source: derived header and license:'krokodds-derived' in meta). Explicit the credit cost=1 passed to the standard auth guard. Sorted by gameday then gametime.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
seasonintegerNocurrent calendar yearSeason year. 400 if non-numeric when provided.
weekintegerNo–Week number filter. 400 if non-numeric when provided.
teamstringNo–Case-insensitive team name substring OR exact abbreviation match, checked against both home and away.
limitintegerNo100Max rows, 1-500.
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/nfl/schedule?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "id": "2026-w1-kc-bal",
      "game_id": "2026090400",
      "season": 2026,
      "season_type": "REG",
      "week": 1,
      "gameday": "2026-09-04",
      "weekday": "Thursday",
      "gametime": "20:20",
      "away_team": "Kansas City Chiefs",
      "away_abbr": "KC",
      "home_team": "Baltimore Ravens",
      "home_abbr": "BAL",
      "stadium": "M&T Bank Stadium",
      "location": "Baltimore, MD",
      "result": null,
      "overtime": false,
      "away_qb": "Patrick Mahomes",
      "home_qb": "Lamar Jackson"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "free",
    "license": "krokodds-derived",
    "season": 2026,
    "week": 1,
    "team": null,
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 100,
      "remaining": 950,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/soccer/bundesligaAPI plan

OpenLigaDB Bundesliga / 2.Bundesliga / DFB-Pokal match results — fallback settlement source for German-football props.

the credit cost=5 (archive-tier weight) despite the endpoint label being a plain fixtures list. `league` is mandatory. season/matchday applied in-memory after an 8x over-fetch when combined with league.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
leaguestringYes–One of 'bl1' (Bundesliga), 'bl2' (2. Bundesliga), 'dfb' (DFB-Pokal). Required — 400 if missing or invalid.
seasonintegerNo–Start-year of the season, e.g. 2025 for 2025/26.
matchdayintegerNo–Matchday/round number within the season.
limitintegerNo100Max rows. Capped at 100 (free) / 500 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/soccer/bundesliga?X-API-Key=value&league=value"
Example response
{
  "success": true,
  "data": [
    {
      "matchId": 68321,
      "date": "2026-08-30T13:30:00.000Z",
      "matchday": "3. Spieltag",
      "homeTeam": "Bayer 04 Leverkusen",
      "awayTeam": "Borussia Dortmund",
      "homeGoals": 2,
      "awayGoals": 2,
      "homeGoalsHT": 1,
      "awayGoalsHT": 1,
      "finished": true,
      "location": "BayArena, Leverkusen"
    }
  ],
  "meta": {
    "count": 1,
    "tier": "api",
    "limit": 100,
    "requested_limit": 100,
    "league": "bl1",
    "season": 2025,
    "matchday": 3,
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 100,
      "remaining": 1985,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/soccer/closing-oddsAPI plan

a public results feed settled soccer matches with a licensed bookmaker + a licensed bookmaker opening AND closing prices (Asian handicap, O/U 2.5) — the CLV reference dataset.

Tier detail: api (paid) — 'closing_lines' is NOT in the free-tier feature set

the credit cost=5 on the API plan ('closing_lines' is paid-only) — free-tier callers are refused before the credits are spent. 400 if neither league/league_code nor season is provided. from/to are plain string comparisons against a YYYY-MM-DD date field, not true date-range queries at the DB layer.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
leaguestringYes–League code (e.g. 'E0' for EPL). Also accepted as league_code.
league_codestringYes–Alias for league.
seasonstringYes–Season label, e.g. '2025-2026'.
fromstring (YYYY-MM-DD)No–Inclusive start date filter (in-memory, string comparison on date).
tostring (YYYY-MM-DD)No–Inclusive end date filter (in-memory, string comparison on date).
limitintegerNo100Max rows. Capped at 100 (free) / 500 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/soccer/closing-odds?X-API-Key=value&league=value&league_code=value"
Example response
{
  "success": true,
  "data": [
    {
      "id": "fdcouk-e0-2025-2026-020",
      "date": "2026-08-30",
      "time": "17:30",
      "league_code": "E0",
      "season": "2025-2026",
      "home_team": "Arsenal",
      "away_team": "Tottenham",
      "ftr": "H",
      "htr": "D",
      "ft_home_goals": 2,
      "ft_away_goals": 1,
      "b365_open": {
        "home": 1.65,
        "draw": 4,
        "away": 5.5
      },
      "b365_close": {
        "home": 1.58,
        "draw": 4.1,
        "away": 6
      },
      "pinnacle_open": {
        "home": 1.68,
        "draw": 3.95,
        "away": 5.3
      },
      "pinnacle_close": {
        "home": 1.6,
        "draw": 4.05,
        "away": 5.8
      },
      "asian_handicap": {
        "line": -0.75,
        "home_close": 1.95,
        "away_close": 1.97
      },
      "over_under_25": {
        "over_close": 1.85,
        "under_close": 2
      }
    }
  ],
  "meta": {
    "count": 1,
    "tier": "free",
    "limit": 100,
    "requested_limit": 100,
    "league_code": "E0",
    "season": null,
    "from": "2026-08-01",
    "to": null,
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 100,
      "remaining": 944,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}
GET/api/v1/soccer/fixturesAPI plan

Soccer fixtures/results by sport key and status, ordered by kickoff time ascending.

Ordered by $.utcDate ASC (upcoming-first), like esports/matches, unlike the DESC-by-fetchedAt convention used by most other collection routes.

Query parameters
NameTypeRequiredDefaultDescription
X-API-KeystringYes–API key.
sportKeystringNo–Filter by sport/competition key, e.g. 'soccer_epl'.
statusstringNo–Match status filter, e.g. 'SCHEDULED', 'IN_PLAY', 'FINISHED'.
limitintegerNo100Max rows. Capped at 50 (free) / 200 (api).
Example request
curl \
  -H "X-API-Key: YOUR_KEY" \
  "https://krokodds.com.au/api/v1/soccer/fixtures?X-API-Key=value"
Example response
{
  "success": true,
  "data": [
    {
      "sportKey": "soccer_epl",
      "matchId": "epl-2026-gw4-avl-che",
      "status": "SCHEDULED",
      "utcDate": "2026-09-06T14:00:00.000Z",
      "homeTeam": "Aston Villa",
      "awayTeam": "Chelsea",
      "venue": "Villa Park",
      "matchday": 4
    }
  ],
  "meta": {
    "count": 1,
    "tier": "api",
    "limit": 50,
    "requested_limit": 100,
    "sportKey": "soccer_epl",
    "status": "SCHEDULED",
    "timestamp": "2026-09-03T04:00:00.000Z",
    "rate_limit": {
      "limit": 50,
      "remaining": 1980,
      "reset": "2026-10-01T00:00:00.000Z"
    }
  }
}

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.

Insights1 endpoint

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

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.

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.