FanDuel API endpoint
Lists a league's teams grouped by conference or division, each with its season record against the spread, on the money line and on the over/under, its colors, head coach where published, and its next game. `sections` lists the team pages the league has (all six for the NFL; odds and news only for MLB and the college leagues). Team `slug` values feed the other team routes.
/fanduel/sportsbook/teamsleague (optional, default nfl): nfl, nba, mlb, college-football, college-basketball. Any other value returns 400.| League | Pages |
|---|---|
nfl | odds, stats, schedule, roster, depth-chart, news |
nba | odds, stats, schedule, roster, news |
mlb | odds, news |
college-football | odds, news |
college-basketball | odds, news |
Asking for a page a league does not have returns 400 naming the pages it does have. nhl, wnba and soccer have no team pages.
conference, division and sub_division are filled where the league defines them.Data is read from the Sportsbook's own team pages and is shown as published at the time of the request; it is not a betting recommendation. 503 on upstream failure, including when the Sportsbook serves a bot-check page instead of the team page.
| Field | Filled in, of 2 checked | Values in the sample |
|---|---|---|
| title | 2 | “NFC Teams” and 1 other value |
| teams | 2 | median 16 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| league | string | No | League: `nfl` (default), `nba`, `mlb`, `college-football`, `college-basketball` Allowed values: nfl, nba, mlb, college-football, college-basketball. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanduel/sportsbook/teams?league=nfl" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"league": "nfl",
"sections": [
"odds",
"stats",
"schedule",
"roster",
"depth-chart",
"news"
],
"team_count": 6,
"groups": [
{
"title": "NFC Teams",
"teams": [
{
"slug": "arizona-cardinals",
"name": "Arizona Cardinals",
"short_name": "Cardinals",
"code": "ARI",
"logo_url": "https://d17odppiik753x.cloudfront.net/teamlogos/NFL/Arizona-Cardinals.svg",
"market": "Arizona",
"conference": "NFC",
"division": "NFC West",
"head_coach": "Jonathan Gannon",
"primary_color": "#99213e",
"secondary_color": "#ffb612",
"bet_records": {
"against_spread": {
"wins": 3,
"losses": 3,
"ties": 0
},
"money_line": {
"wins": 2,
"losses": 4,
"ties": 0
},
"over_under": {
"wins": 3,
"losses": 3,
"ties": 0
}
},
"next_game": {
"home_game": true,
"opponent": "Denver Broncos",
"scheduled_time": "2026-10-25T20:05:00Z",
"status": "SCHEDULED",
"event_url": "https://sportsbook.fanduel.com/football/nfl/denver-broncos-@-arizona-cardinals-36189004"
}
}
]
}
],
"fetched_at": "2026-10-23T14:02:44Z"
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/fanduel.sportsbookTeamsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanduel.SportsbookTeamsResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.groups | array | No | ||||
| data.groups[].teams | array | No | ||||
| data.groups[].teams[].bet_records | fanduel.SportsbookBetRecords | No | ||||
| data.groups[].teams[].bet_records.against_spread | fanduel.SportsbookWinLoss | No | ||||
| data.groups[].teams[].bet_records.against_spread.losses | integer | No | ||||
| data.groups[].teams[].bet_records.against_spread.ties | integer | No | ||||
| data.groups[].teams[].bet_records.against_spread.wins | integer | No | ||||
| data.groups[].teams[].bet_records.money_line | fanduel.SportsbookWinLoss | No | ||||
| data.groups[].teams[].bet_records.money_line.losses | integer | No | ||||
| data.groups[].teams[].bet_records.money_line.ties | integer | No | ||||
| data.groups[].teams[].bet_records.money_line.wins | integer | No | ||||
| data.groups[].teams[].bet_records.over_under | fanduel.SportsbookWinLoss | No | ||||
| data.groups[].teams[].bet_records.over_under.losses | integer | No | ||||
| data.groups[].teams[].bet_records.over_under.ties | integer | No | ||||
| data.groups[].teams[].bet_records.over_under.wins | integer | No | ||||
| data.groups[].teams[].code | string | No | ||||
| data.groups[].teams[].conference | string | No | ||||
| data.groups[].teams[].division | string | No | ||||
| data.groups[].teams[].head_coach | string | No | ||||
| data.groups[].teams[].logo_url | string | No | ||||
| data.groups[].teams[].market | string | No | ||||
| data.groups[].teams[].name | string | No | ||||
| data.groups[].teams[].next_game | fanduel.SportsbookTeamGameRef | No | ||||
| data.groups[].teams[].next_game.event_url | string | No | ||||
| data.groups[].teams[].next_game.home_game | boolean | No | ||||
| data.groups[].teams[].next_game.opponent | string | No | ||||
| data.groups[].teams[].next_game.scheduled_time | string | No | ||||
| data.groups[].teams[].next_game.status | string | No | ||||
| data.groups[].teams[].primary_color | string | No | ||||
| data.groups[].teams[].secondary_color | string | No | ||||
| data.groups[].teams[].short_name | string | No | ||||
| data.groups[].teams[].slug | string | No | ||||
| data.groups[].teams[].sub_division | string | No | ||||
| data.groups[].title | string | No | ||||
| data.league | string | No | ||||
| data.sections | array | No | ||||
| data.team_count | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/teams?league=nfl" \
-H "x-api-key: $CRAWLORA_API_KEY"