FanDuel API endpoint
Returns live state for up to 20 events from the Sportsbook's in-play service, which covers every sport: tennis sets, games, points and server; soccer score, cards and corners; basketball and hockey period scores and remaining time, with live progress of player-prop markets where the sport has them. `details` keeps the provider's sport-specific structure; `home_score` and `away_score` are filled when the sport reports a single score. Scheduled events return `live: false`; ids with no entry are listed in `missing`.
/fanduel/sportsbook/live-dataReturns live state for up to 20 events from the Sportsbook's in-play service. Unlike the score, box-score and play-by-play routes (which cover only the sports the live-data provider supports, mainly football, basketball and hockey), this route covers every sport the Sportsbook takes bets on: tennis sets, games, points and server; soccer score, cards and corners; basketball and hockey period scores and time remaining; and live progress of player-prop markets where the sport has them.
event_id (required, repeatable or comma-separated): 1 to 20 distinct numeric event ids from any events listing (events[].event_id). A non-numeric id, no id, or more than 20 ids returns 400.sport is the provider's model type, for example Tennis, Football (soccer), Basketball, IceHockey, AmericanFootball.details keeps the provider's sport-specific object (the tennisDetails, footballDetails, basketballDetails, ... block). Its shape differs by sport, so read it together with sport. home_score and away_score are filled only when the sport reports one number per side; tennis keeps sets and games inside details.player_progress maps a player-prop market_id to the live running total behind it (for example points scored so far), and player_stats maps a player's selection id to their live stat line. Both appear only for sports and events that publish them.live: false and no details. An id the service returns nothing for is listed in missing (the request still succeeds), so a finished event shows up there.| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| event_id | 1 | |
| live | 1 | true in 0 of 1 |
| media_types | 1 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| event_id | string | Yes | Event id from any Sportsbook events listing; repeat the parameter or comma-separate, 1 to 20 ids | 35605985 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanduel/sportsbook/live-data?event_id=35605985" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"events": [
{
"event_id": 36220736,
"live": true,
"sport": "Tennis",
"details": {
"away": {
"gamesPerSet": [
6,
1
],
"points": "0",
"sets": 1
},
"currentSet": 2,
"home": {
"gamesPerSet": [
4,
3
],
"points": "0",
"sets": 0
}
},
"media_types": [
"LIVE_VIDEO",
"DATA_VISUALIZATION",
"VISUALIZATION",
"MATCH_STATS"
],
"provider": "RAMP"
},
{
"event_id": 36222219,
"live": true,
"sport": "IceHockey",
"home_score": 2,
"away_score": 0,
"details": {
"away": {
"pointsPerPeriod": [
0,
0
],
"score": 0
},
"currentPeriod": 2,
"home": {
"pointsPerPeriod": [
2,
0
],
"score": 2
}
},
"media_types": [
"DATA_VISUALIZATION",
"VISUALIZATION",
"MATCH_STATS"
],
"provider": "RAMP"
}
],
"missing": [
5
],
"fetched_at": "2026-10-23T00:10:52Z"
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/fanduel.sportsbookLiveDataResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanduel.SportsbookLiveDataResponse | No | ||||
| data.events | array | No | ||||
| data.events[].away_score | integer | No | ||||
| data.events[].details | object | No | ||||
| data.events[].event_id | integer | No | ||||
| data.events[].home_score | integer | No | ||||
| data.events[].live | boolean | No | ||||
| data.events[].media_types | array | No | ||||
| data.events[].player_progress | object | No | ||||
| data.events[].player_stats | object | No | ||||
| data.events[].provider | string | No | ||||
| data.events[].sport | string | No | ||||
| data.fetched_at | string | No | ||||
| data.missing | array | 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/fanduel/sportsbook/live-data?event_id=35605985" \
-H "x-api-key: $CRAWLORA_API_KEY"