FanDuel API endpoint
Returns one event with the markets and odds of one tab (game lines, player props, quarters, same-game-parlay markets and more). `tabs` lists every tab the event offers, each with the `slug` accepted by `tab`; the default is `popular`, which holds the most markets. An unknown tab returns 400 listing the valid slugs; an ended event returns 404.
/fanduel/sportsbook/eventevent_id (required): numeric event id from any events listing (events[].event_id).state (optional, default nj): U.S. market whose Sportsbook host is queried. Prices and the markets offered can differ by state. One of ar, az, co, ct, dc, ia, il, in, ks, ky, la, ma, md, mi, mo, mr, nc, nj, ny, oh, on, pa, pr, tn, va, vt, wv, wy. Any other value returns 400.tab (optional, default popular): a tabs[].slug from the response, for example popular, quick-bets, passing-props, receiving-props, rushing-props, td-scorer-props, 1st-half, 1st-quarter, game-specials. Tabs differ by sport (a basketball event lists point, rebound and assist props). An unknown slug returns 400 listing the event's tabs; the Sportsbook itself would silently serve its default tab, so the slug is checked against the event's own tab list.market_type (optional, repeatable or comma-separated): keep only markets of these types, for example MONEY_LINE. The values present on the page are listed in the response market_types (with counts); a type the page lacks yields events with no markets. market_types is always the unfiltered census so you can discover values.previous_american_odds and previous_decimal_odds once its price has moved: the price immediately before the current one. The Sportsbook keeps a single previous price, not a series (never more than one entry across 75 live runners and 125 price moves), so there is no history to order; a runner whose price has not moved has neither field. League, sport and home pages do not include it.popular holds the broadest set of markets. The event's tabs[].market_count is filled only for the selected tab because only that tab's markets are returned.markets list and a notes entry giving the event_type_id and competition_id to pass to the competition route, whose futures tab holds those markets. A few listed groups have no event page at all and return 404.404 for an unknown id or an event that has ended or been taken down; 503 on upstream failure.The route is read-only and needs no account. Odds are shown as the Sportsbook publishes them for the chosen state at the moment of the request and are not a betting recommendation.
| Field | Filled in, of 127 checked | Values in the sample |
|---|---|---|
| market_id | 127 | |
| name | 127 | “Moneyline” and 126 other values |
| type | 127 | “MONEY_LINE” and 62 other values |
| betting_type | 127 | ODDS (81), MOVING_HANDICAP (46) |
| status | 127 | OPEN in all 127 |
| in_play | 127 | true in 0 of 127 |
| same_game_parlay_eligible | 119 | true in 119 of 119 |
| market_time | 127 | 2026-10-25 |
| runners | 127 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| event_id | integer | Yes | Event id from any Sportsbook events listing | 35605985 | |
| state | string | No | U.S. market to query (prices and offered markets differ by state); default nj Allowed values: ar, az, co, ct, dc, ia, il, in, ks, ky, la, ma, md, mi, mo, mr, nc, nj, ny, oh, on, pa, pr, tn, va, vt, wv, wy. | ||
| tab | string | No | Tab slug from the response `tabs[].slug` (for example `popular`, `passing-props`, `1st-half`, `td-scorer-props`); default `popular`. Tabs differ by sport | ||
| market_type | string | No | Keep only these market types (repeat the parameter or comma-separate), for example `MONEY_LINE`. Valid values are listed in the response `market_types`; unmatched types return no markets | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanduel/sportsbook/event?event_id=35605985&state=ar" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"state": "nj",
"event": {
"event_id": 36190129,
"name": "New England Patriots @ Chicago Bears",
"event_type_id": 6423,
"competition_id": 12282733,
"open_date": "2026-10-23T00:16:00.000Z",
"in_play": false,
"video_available": true,
"markets": [
{
"market_id": "734.191539413",
"name": "Moneyline",
"type": "MONEY_LINE",
"betting_type": "ODDS",
"status": "OPEN",
"in_play": false,
"same_game_parlay_eligible": true,
"market_time": "2026-10-23T00:16:00.000Z",
"runners": [
{
"selection_id": 50204,
"name": "New England Patriots",
"abbreviation": "NE Patriots",
"side": "AWAY",
"handicap": 0,
"status": "ACTIVE",
"american_odds": 134,
"decimal_odds": 2.34,
"fractional_odds": "134/100",
"logo_url": "https://assets.sportsbook.fanduel.com/images/team/nfl/new_england_patriots.png"
},
{
"selection_id": 50194,
"name": "Chicago Bears",
"abbreviation": "CHI Bears",
"side": "HOME",
"handicap": 0,
"status": "ACTIVE",
"american_odds": -158,
"decimal_odds": 1.632911392405063,
"fractional_odds": "100/158",
"logo_url": "https://assets.sportsbook.fanduel.com/images/team/nfl/chicago_bears.png"
}
]
},
{
"market_id": "734.191539418",
"name": "Spread",
"type": "MATCH_HANDICAP_(2-WAY)",
"betting_type": "MOVING_HANDICAP",
"status": "OPEN",
"in_play": false,
"same_game_parlay_eligible": true,
"market_time": "2026-10-23T00:16:00.000Z",
"runners": [
{
"selection_id": 50204,
"name": "New England Patriots",
"abbreviation": "NE Patriots",
"side": "AWAY",
"handicap": 3,
"status": "ACTIVE",
"american_odds": -115,
"decimal_odds": 1.869565217391304,
"fractional_odds": "100/115",
"logo_url": "https://assets.sportsbook.fanduel.com/images/team/nfl/new_england_patriots.png"
},
{
"selection_id": 50194,
"name": "Chicago Bears",
"abbreviation": "CHI Bears",
"side": "HOME",
"handicap": -3,
"status": "ACTIVE",
"american_odds": -105,
"decimal_odds": 1.952380952380952,
"fractional_odds": "100/105",
"logo_url": "https://assets.sportsbook.fanduel.com/images/team/nfl/chicago_bears.png"
}
]
}
]
},
"competition": {
"competition_id": 12282733,
"name": "NFL",
"event_type_id": 6423,
"region": "International"
},
"default_tab": "same-game-parlay",
"selected_tab": "popular",
"tabs": [
{
"id": "150",
"title": "Same Game Parlay™",
"slug": "same-game-parlay"
},
{
"id": "1",
"title": "Popular",
"slug": "popular",
"event_count": 1,
"market_count": 8
},
{
"id": "274",
"title": "Quick Bets",
"slug": "quick-bets"
},
{
"id": "217",
"title": "Passing Props",
"slug": "passing-props"
}
],
"market_types": [
{
"type": "PLAYER_X_RECEIVING_YARDS_MEDIUM",
"count": 4
},
{
"type": "ANY_TIME_TOUCHDOWN_SCORER",
"count": 1
},
{
"type": "MATCH_HANDICAP_(2-WAY)",
"count": 1
}
],
"fetched_at": "2026-10-22T23:53:07Z"
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/fanduel.sportsbookEventResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanduel.SportsbookEventResponse | No | ||||
| data.competition | fanduel.SportsbookCompetition | No | SportsbookCompetition record, 4 fields: competition_id, event_type_id, name, region. Described under FanDuel Sportsbook homepage odds API. | |||
| data.default_tab | string | No | ||||
| data.event | fanduel.SportsbookEvent | No | SportsbookEvent record, 31 fields: competition_id, event_id, event_type_id, in_play, markets, name, open_date, video_available. Described under FanDuel Sportsbook homepage odds API. | |||
| data.fetched_at | string | No | ||||
| data.market_types | array | No | ||||
| data.market_types[].count | integer | No | ||||
| data.market_types[].type | string | No | ||||
| data.notes | array | No | ||||
| data.selected_tab | string | No | ||||
| data.state | string | No | ||||
| data.tabs | array | No | SportsbookTab record, 6 fields: event_count, id, live_count, market_count, slug, title. Described under FanDuel Sportsbook homepage odds API. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/event?event_id=35605985&state=ar" \
-H "x-api-key: $CRAWLORA_API_KEY"