Racing — Jockey & trainer connections
The jockey & trainer connections half of the Racing reference — every route with its parameters, credit cost and a worked example.
3 of 23 endpoints · all categories · get a free API key
GET/api/v1/racing/connectionsFree tier
Jockey/trainer profile lookup by name — exchange form win-strike-rate, detailed per-track stats, and career/current-season profile, merged.
`meta.matched` (not `count`) is the true 'has data' signal. Slug resolution tries multiple candidate spellings (connectionSlugCandidates); dedupes by resolved slug. A name that matches NO jockey/trainer record in any of the three sources is a 400 with `error`, `unmatched:[...]` and a `detail` hint — horse names used to come back as a row listing the horse as its own jockey AND trainer with null strike rates. Accepted names can still come back with null strike rates when the upstream form tables have nothing for them.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| names | string (comma-separated) | Yes | – | One or more jockey/trainer names to look up (max 50). |
| type | string enum | No | both | One of jockey | trainer | both. |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/racing/connections?names=value"{
"success": true,
"data": {
"jockeys": [
{
"name": "James McDonald",
"slug": "james-mcdonald",
"matched_slug": "james-mcdonald",
"win_strike_rate": 24.6,
"runs": 512,
"wins": 126,
"track_stats": [
{
"venue": "Randwick",
"total_starts": 88,
"wins": 24,
"places": 41,
"win_rate": 27.3,
"place_rate": 46.6
}
],
"profile": {
"code": "j4821",
"career_wins": 1834,
"career_starts": 8422,
"win_percent": 21.8,
"place_percent": 47.2,
"recent_win_percent": 26.1,
"current_wins": 92,
"current_starts": 344,
"current_seconds": 58,
"current_thirds": 44,
"current_vic_metro_starts": 12,
"current_vic_metro_wins": 3,
"current_vic_country_starts": 0,
"current_vic_country_wins": 0,
"current_sa_metro_starts": 0,
"current_sa_metro_wins": 0,
"current_sa_country_starts": 0,
"current_sa_country_wins": 0,
"victorian_ranking": null,
"location": "Sydney, NSW",
"apprentice": false,
"weight_average": 57.2
}
}
],
"trainers": []
},
"meta": {
"count": 1,
"matched": 1,
"empty": false,
"tier": "free",
"type": "jockey",
"names": [
"James McDonald"
],
"timestamp": "2026-09-03T04:00:00.000Z",
"rate_limit": {
"limit": 50,
"remaining": 942,
"reset": "2026-10-01"
}
}
}GET/api/v1/racing/connections/combinationsFree tier
Win-strike-rate stats for jockey/trainer/horse combinations, computed from the last 90 days of the historical results store.
Computed in-process over up to 5000 the historical results store rows from the last 90 days (the primary store the historical results store, secondary fallback) — not a precomputed table. Sorted by wins desc then runs desc.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| type | string enum | No | jockey_trainer | One of jockey_trainer | jockey_horse | trainer_horse — which combo pair to aggregate. |
| names | string (comma-separated) | No | – | Filter combos where either side's name contains one of these (case-insensitive); max 50 entries. |
| limit | integer | No | 50 | Max rows returned; capped at 50 (free) / 200 (api). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/racing/connections/combinations?type=jockey_trainer"{
"success": true,
"data": [
{
"primary": "j mcdonald",
"secondary": "c waller",
"runs": 41,
"wins": 11,
"win_strike_rate": 26.83
},
{
"primary": "j mcdonald",
"secondary": "j cummings",
"runs": 22,
"wins": 5,
"win_strike_rate": 22.73
}
],
"meta": {
"count": 2,
"empty": false,
"tier": "free",
"type": "jockey_trainer",
"names": null,
"window": "90 days",
"timestamp": "2026-09-03T04:00:00.000Z",
"rate_limit": {
"limit": 50,
"remaining": 942,
"reset": "2026-10-01"
}
}
}GET/api/v1/racing/connections/season-statsFree tier
Per-season (Aug–Jul AU racing season) jockey/trainer stats broken down by venue and race type, from the flat results store.
503 'Season stats require the primary store' if the data backend isn't the primary store for 'racing' — this endpoint has NO secondary fallback. Queries the flat results store with .ilike on jockey/trainer column.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | Yes | – | Jockey or trainer name (case-insensitive). |
| type | string enum | No | jockey | One of jockey | trainer. |
| season | string | No | current season | Season label e.g. '2025/26', or a single year (interpreted as Aug prevYear–Jul year). |
curl \
-H "X-API-Key: YOUR_KEY" \
"https://krokodds.com.au/api/v1/racing/connections/season-stats?name=value"{
"success": true,
"data": {
"name": "James McDonald",
"type": "jockey",
"season": "2025/26",
"overall": {
"starts": 344,
"wins": 92,
"places": 194,
"win_rate": 26.74,
"place_rate": 56.4
},
"by_venue": [
{
"venue": "randwick",
"starts": 88,
"wins": 24,
"places": 48,
"win_rate": 27.27,
"place_rate": 54.55
},
{
"venue": "rosehill-gardens",
"starts": 61,
"wins": 15,
"places": 33,
"win_rate": 24.59,
"place_rate": 54.1
}
],
"by_type": [
{
"race_type": "T",
"starts": 344,
"wins": 92,
"places": 194,
"win_rate": 26.74,
"place_rate": 56.4
}
]
},
"meta": {
"tier": "free",
"name": "James McDonald",
"type": "jockey",
"season": "2025/26",
"timestamp": "2026-09-03T04:00:00.000Z",
"rate_limit": {
"limit": 50,
"remaining": 942,
"reset": "2026-10-01"
}
}
}Other categories
Per-event head-to-head odds, alternate lines, best prices across books, player props, live state and AI-generated summaries.
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.
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.