Gameday API endpoints
Per-event head-to-head odds, alternate lines, best prices across books, player props, live state and AI-generated summaries.
8 of 8 endpoints · all categories · get a free API key
GET/api/v1/gameday/alt-linesFree tier
Alternate-line (non-standard spread/total) odds for events, best price per line plus the full raw line list.
No the credit cost concept in this route — auth is monthly-usage based (meta.rate_limit), not per-request credits. event_id does a direct the primary store doc lookup instead of a query. No results returns data: [] (HTTP 200), not 404. Response cached via unstable_cache 150s (free) / 60s (api). CORS open (Access-Control-Allow-Origin: *).
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`), e.g. `basketball_nba`. Lowercased. |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Return alt-lines for a single event only (direct doc lookup). |
| market | string | No | – | Filter lines/best-by-line to a single market key, e.g. `spreads`. Lowercased. |
| limit | number | No | 50 | Max events returned. Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/alt-lines?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"sport_title": "NBA",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"best_by_line": [
{
"key": "spreads|-4.5",
"market_key": "spreads",
"selection": "Boston Celtics -4.5",
"point": -4.5,
"bookmaker": "sportsbet",
"odds": 1.9,
"bet_link": "https://www.sportsbet.com.au/..."
}
],
"all_lines": [
{
"market_key": "spreads",
"selection": "Boston Celtics -4.5",
"point": -4.5,
"bookmaker": "ladbrokes",
"odds": 1.87,
"bet_link": "https://www.ladbrokes.com.au/..."
}
],
"line_count": 12,
"updated_at": "2026-09-03T10:05:00Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"sport_key": "basketball_nba",
"event_id": null,
"market": null,
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/best-pricesFree tier
Best available price per market/selection per event, aggregated across bookmakers.
Cache 120s (free) / 60s (api) — tighter than most gameday routes since best prices move fastest. `bookmaker_count` reflects how many books were quoting that exact price, not total books on the market.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`). |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Filter to a single event via query (not a direct doc get, unlike alt-lines). |
| market | string | No | – | Filter the prices array to a single market. Lowercased. |
| limit | number | No | 50 | Max events returned. Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/best-prices?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"id": "basketball_nba_20260903_lal_bos",
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"prices": [
{
"market": "h2h",
"selection": "Boston Celtics",
"point": null,
"price": 1.65,
"bookmaker": "sportsbet",
"bookmaker_title": "Sportsbet",
"bookmaker_count": 9,
"bet_link": "https://www.sportsbet.com.au/..."
}
],
"updated_at": "2026-09-03T10:04:30Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"markets_filter": null,
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/event/{id}Free tier
Bundled single-event fetch — pulls summary, h2h, best_prices, alt_lines, odds_history, live and props in one call, selectable via `parts`.
400 error if sport_key is missing while parts includes h2h or live. Each requested part is read via Promise.allSettled: a part whose read THREW is named in `meta.failed_sources` with `degraded: true` (the parts that did read are still served), and when every requested part failed the answer is **503** + `Retry-After: 30` + `Cache-Control: no-store` — never a 200 full of nulls. A part that read fine but has no stored doc is a genuine `null` and is not flagged. `parts` output shapes vary per sub-collection (not normalized to a common schema) — summary/h2h/best_prices/alt_lines/odds_history/live are single objects (or null), props is an array.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | – | Gameday event id (path segment), e.g. `basketball_nba_20260903_lal_bos`. |
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Required only if `parts` includes h2h or live (they key off `${sportKey}_${eventId}`); also accepts `sport`. |
| sport | string | No | – | Alias for sport_key. |
| parts | string (comma-separated enum) | No | all of: summary,h2h,best_prices,alt_lines,props,odds_history,live | Comma-separated subset of parts to fetch; invalid values are silently dropped. |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/event/abc123?sport_key=aussierules_afl"{
"success": true,
"data": {
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"summary": {
"headline": "Celtics look to cover at home against shorthanded Lakers",
"summary": "Boston is 8-2 ATS in its last 10 home games...",
"key_storylines": [
"Lakers missing starting PG",
"Celtics on a 5-game win streak"
],
"generated_at": "2026-09-03T08:00:00Z"
},
"h2h": {
"summary": {
"total_meetings": 12,
"home_wins": 7,
"away_wins": 5
},
"last_meetings": [
{
"date": "2026-02-14",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"home_score": 118,
"away_score": 109
}
]
},
"best_prices": {
"id": "basketball_nba_20260903_lal_bos",
"prices": []
},
"alt_lines": {
"bestByLine": {},
"allLines": []
},
"odds_history": null,
"live": null,
"props": [
{
"id": "prop123",
"playerName": "Jayson Tatum",
"marketKey": "player_points",
"line": 27.5,
"odds": 1.9,
"bookmaker": "sportsbet",
"bet_link": "https://..."
}
]
},
"meta": {
"tier": "free",
"parts": [
"summary",
"h2h",
"best_prices",
"alt_lines",
"props",
"odds_history",
"live"
],
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/h2hFree tier
Head-to-head historical matchup summaries and recent meeting results between the two teams in an event.
`team` filter is applied client-side after fetching up to limit*2 rows from the primary store, then sliced to `limit` — so a narrow team filter combined with a high limit can under-return relative to what actually exists. Draws is always 0 for sports without draws.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`). |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Filter to a single event. |
| team | string | No | – | Substring match (case-insensitive) against either home_team or away_team. |
| limit | number | No | 50 | Max rows returned. Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/h2h?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"id": "basketball_nba_20260903_lal_bos",
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"sport_title": "NBA",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"summary": {
"total_meetings": 12,
"home_wins": 7,
"away_wins": 5,
"draws": 0,
"home_win_pct": 58.3,
"away_win_pct": 41.7
},
"last_meetings": [
{
"date": "2026-02-14",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"home_score": 118,
"away_score": 109,
"venue": "TD Garden"
}
],
"updated_at": "2026-09-03T09:00:00Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/liveFree tier
Live/in-progress and recently-finished game states — scores, status (pre/live/final), completion flag.
Shortest cache window of the gameday group: 60s both tiers, reflecting the need for near-real-time scores. Ordered commence_time descending (most recently started first) unlike other gameday routes which order ascending.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`). |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Filter to a single event. |
| status | enum(pre|live|final) | No | – | Filter to a specific game status; other values are ignored (no filter applied). |
| limit | number | No | 50 | Max rows returned. Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/live?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"home_score": 54,
"away_score": 49,
"completed": false,
"status": "live",
"last_update": "2026-09-03T23:45:12Z",
"updated_at": "2026-09-03T23:45:12Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"sport_key": "basketball_nba",
"event_id": null,
"status": "live",
"timestamp": "2026-09-03T23:45:20Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/propsFree tier
Player prop best-odds, aggregated across bookmakers and grouped by event; underlying storage is one row per (bookmaker, market, outcome) quote.
`limit` counts events, but rows are per-prop-quote, so the route over-fetches up to limit*40 (max 2000) prop rows to try to cover ~limit events after grouping — high-volume slates can still under-return events. Each prop is a best-odds aggregate across books (bet_link points to the best-odds book only, other books in book_count have no exposed URL). Cache floor enforced at >=60s regardless of declared tier value.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`). |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Filter to a single event. |
| market | string | No | – | Filter to a single prop market key, e.g. `player_points`. Lowercased. |
| player_slug | string | No | – | Filter to a single player by slugified name (lowercase, hyphenated). |
| limit | number | No | 50 | Max EVENTS returned (not prop rows). Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/props?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"sport_title": "NBA",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"props": [
{
"market_key": "player_points",
"player_name": "Jayson Tatum",
"player_slug": "jayson-tatum",
"line": 27.5,
"side": "over",
"best_odds": 1.95,
"best_bookmaker": "sportsbet",
"book_count": 6,
"bet_link": "https://www.sportsbet.com.au/..."
}
],
"prop_count": 1,
"updated_at": "2026-09-03T10:00:00Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"sport_key": "basketball_nba",
"event_id": null,
"market": null,
"player_slug": null,
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/gameday/summariesFree tier
AI-generated pre-game summaries/headlines/storylines and best-market snapshot per event.
Longest cache window of the gameday group: 300s free / 120s api (summaries change slowly, tied to the engineering notes secondary-store read-cost 600s-window rule for gameday-data.ts). event_id does a direct doc get; otherwise a sport-filtered query ordered by commence_time ascending.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport_key | string | No | – | Filter by sport key (also accepts `sport`). |
| sport | string | No | – | Alias for sport_key. |
| event_id | string | No | – | Direct doc lookup for a single event's summary. |
| limit | number | No | 50 | Max rows returned. Clamped to 50 (free) / 2000 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/gameday/summaries?sport_key=aussierules_afl"{
"success": true,
"data": [
{
"event_id": "basketball_nba_20260903_lal_bos",
"sport_key": "basketball_nba",
"sport_title": "NBA",
"home_team": "Boston Celtics",
"away_team": "Los Angeles Lakers",
"commence_time": "2026-09-03T23:10:00Z",
"summary": "Boston enters as 4.5-point favorites off a five-game win streak...",
"headline": "Celtics eye sixth straight win as Lakers battle injuries",
"key_storylines": [
"Lakers PG questionable",
"Celtics 8-2 ATS at home"
],
"best_h2h": {
"selection": "Boston Celtics",
"odds": 1.65,
"bookmaker": "sportsbet"
},
"best_spread": {
"selection": "Boston Celtics -4.5",
"odds": 1.9,
"bookmaker": "ladbrokes"
},
"best_total": {
"selection": "Over 224.5",
"odds": 1.87,
"bookmaker": "sportsbet"
},
"generated_at": "2026-09-03T08:00:00Z",
"updated_at": "2026-09-03T08:00:00Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"limit": 50,
"requested_limit": 50,
"sport_key": "basketball_nba",
"event_id": null,
"timestamp": "2026-09-03T10:06:00Z",
"rate_limit": {
"limit": 50,
"remaining": 940,
"reset": "2026-10-01T00:00:00Z"
}
}
}GET/api/v1/lineupsFree tier
Named team lineups for upcoming fixtures \u2014 the confirmed squad each club names ahead of game day.
Reads from team lineup tables. Post-filters by date/team/round/confirmed since the primary store read returns all rows. Sorted by date descending. Cached 300s. Degraded-not-empty: a lineup table whose read fails is named in `meta.failed_sources` with `meta.degraded: true` (the healthy tables are still served), and if every requested table fails the route answers 503 + `Retry-After` with `Cache-Control: private, no-store` rather than an empty 200. A degraded read is never written to the response cache, so it cannot outlive the outage.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| sport | string | No | – | Filter by sport_key ("aussierules_afl" or "rugbyleague_nrl"). Omit to return both. |
| date | string | No | – | Filter by match date (YYYY-MM-DD, exact match). |
| team | string | No | – | Filter by team name (partial match, case-insensitive). |
| round | number | No | – | Round number (integer). |
| confirmed | string | No | – | "true" or "false" to filter by confirmation status. |
| limit | number | No | 100 | Max results, clamped 1-200 (MAX_LIMIT). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/lineups?sport=aussierules_afl"{
"success": true,
"data": [
{
"id": "lineup_afl_20260906_abc",
"gameId": "afl_20260906_abc",
"date": "2026-09-06",
"sportKey": "aussierules_afl",
"homeTeamName": "Collingwood",
"awayTeamName": "Carlton",
"home": {
"players": [
{
"playerId": "p001",
"playerName": "Nick Daicos",
"position": "Midfielder",
"order": 1
}
],
"formation": null
},
"away": {
"players": [
{
"playerId": "p002",
"playerName": "Patrick Cripps",
"position": "Midfielder",
"order": 1
}
],
"formation": null
},
"venue": "MCG",
"venueCity": "Melbourne",
"roundNumber": 23,
"confirmed": true,
"_fetchedAt": "2026-09-05T10:00:00Z"
}
],
"meta": {
"count": 1,
"tier": "free",
"license": "krokodds-derived",
"filter": {
"sport": "aussierules_afl",
"date": null,
"team": null,
"round": null,
"confirmed": null
},
"sport_breakdown": {
"aussierules_afl": 1
},
"note": "Named team lineups for upcoming fixtures."
}
}Other categories
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.
The full Australian racing stack — thoroughbred, harness and greyhound. Meetings and runner fields, form, sectionals, ratings, market movers, exchange arbs, tote pools and results.
Raw per-bookmaker prices as scraped, before any analysis layer. `/scraped-odds/*` paths are aliases of the equivalent `/odds-feed/*` route.
Sport reference data, team form guides, league standings, injury reports and weather-impact analysis.
AI-generated betting tips with confidence scores and historical accuracy tracking.
Ranked leaderboards built on top of the stat feeds — per-sport player leaders for a chosen stat, season and view.
ATP/WTA rankings, upcoming fixtures, match results, Elo ratings and surface-specific stats.
Deep archives — player and team game logs, shot charts, AFL/NRL historical data. Paid API plan only.
Static lookup data for building your own UI — players, venues, headshots, team logos and sport/league metadata.
Cricket, cycling, esports, Formula 1, golf, MMA, boxing, NFL and soccer coverage beyond the AU staples.
Account and billing endpoints, bulk export, SSE streaming, webhook management and API health.
Odds history, steam-move detection, player prop stats/results, injuries, weather and other supporting feeds.
Polymarket and Kalshi sentiment plus a universal prediction-market catalogue and resolutions feed.