DraftKings Racing API endpoint
Returns public race-card details for one race ID from DraftKings Racing, including entries, horse identifiers, morning-line and live odds, and finish positions when posted. It excludes pools, probable payouts, bet-form IDs, real-time WebSocket requests, favorites, and participant personal names.
/draftkings/racing/race/{race_id}Path parameters:
race_id — positive numeric race ID returned by draftkings_racing_schedule.Returns public race metadata, horse names, post positions, morning-line and
current odds, and finish positions when DraftKings has published results.
live_odds and finish_position can be omitted when they are not available.
Odds are a point-in-time page snapshot and may change. The result includes
fetched_at and the first-party source URL.
The response excludes pari-mutuel pools, probable payouts, bet-form IDs,
WebSocket update requests, favorite-track data, and jockey, trainer, and owner
names. Use draftkings_racing_schedule to discover current race IDs.
The live response returns every entry; this example shows the first entry only.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| race_id (path) | integer | Yes | Race ID from the public Racing schedule | 381519098 |
curl -X GET "https://api.crawlora.net/api/v1/draftkings/racing/race/381519098" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://racing.draftkings.com/embed/raceInfo/381519098",
"fetched_at": "2026-10-23T00:00:00Z",
"is_historic": false,
"track": {
"id": "track-id",
"name": "Monticello Raceway",
"code": "MR",
"type": "Harness",
"country_code": "USA"
},
"race": {
"id": "381519098",
"number": 11,
"post_time_utc": "2026-10-22T19:45:46Z",
"status": "Closed",
"type": "Unknown",
"distance": "1 M",
"purse": 4100,
"surface": "Dirt",
"runner_count": 8,
"entry_count": 8,
"live_odds_available": true,
"has_results": true,
"has_changes": true,
"surface_condition": "Fast",
"entries": [
{
"program_number": "1",
"post_position": 1,
"morning_line_odds": "5/2",
"live_odds": "1/9",
"morning_line_favorite": true,
"live_odds_favorite": true,
"scratched": false,
"finish_position": 1,
"horse": {
"name": "Mv Ok Palacio Br",
"age": "10",
"sex": "G",
"color": "b",
"sire_name": "Ok Commander",
"dam_name": "Mv Arts Patty",
"where_bred": "BZ",
"year_of_birth": 2016
}
}
]
}
}
}Request schema
No body schema
Response schema
#/definitions/racing.racingRaceInfoResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | racing.RacingRaceInfoResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.is_historic | boolean | No | ||||
| data.race | racing.RacingRaceCard | No | ||||
| data.race.distance | string | No | ||||
| data.race.entries | array | No | ||||
| data.race.entries[].finish_position | integer | No | ||||
| data.race.entries[].horse | racing.RacingHorse | No | ||||
| data.race.entries[].horse.age | string | No | ||||
| data.race.entries[].horse.color | string | No | ||||
| data.race.entries[].horse.dam_name | string | No | ||||
| data.race.entries[].horse.name | string | No | ||||
| data.race.entries[].horse.sex | string | No | ||||
| data.race.entries[].horse.sire_name | string | No | ||||
| data.race.entries[].horse.where_bred | string | No | ||||
| data.race.entries[].horse.year_of_birth | integer | No | ||||
| data.race.entries[].live_odds | string | No | ||||
| data.race.entries[].live_odds_favorite | boolean | No | ||||
| data.race.entries[].morning_line_favorite | boolean | No | ||||
| data.race.entries[].morning_line_odds | string | No | ||||
| data.race.entries[].post_position | integer | No | ||||
| data.race.entries[].program_number | string | No | ||||
| data.race.entries[].scratched | boolean | No | ||||
| data.race.entries[].weight | string | No | ||||
| data.race.entry_count | integer | No | ||||
| data.race.has_changes | boolean | No | ||||
| data.race.has_results | boolean | No | ||||
| data.race.id | string | No | ||||
| data.race.live_odds_available | boolean | No | ||||
| data.race.live_stream_status | string | No | ||||
| data.race.name | string | No | ||||
| data.race.number | integer | No | ||||
| data.race.post_time_utc | string | No | ||||
| data.race.purse | integer | No | ||||
| data.race.replay_status | string | No | ||||
| data.race.runner_count | integer | No | ||||
| data.race.status | string | No | ||||
| data.race.surface | string | No | ||||
| data.race.surface_condition | string | No | ||||
| data.race.track_type | string | No | ||||
| data.race.type | string | No | ||||
| data.source_url | string | No | ||||
| data.track | racing.RacingRaceTrack | No | ||||
| data.track.code | string | No | ||||
| data.track.country_code | string | No | ||||
| data.track.id | string | No | ||||
| data.track.name | string | No | ||||
| data.track.type | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/draftkings/racing/race/381519098" \
-H "x-api-key: $CRAWLORA_API_KEY"