FanDuel API endpoint
Returns one week of NFL games with kickoff time, stadium and roof type, weather, TV network, closing spread and total, status and game clock, and for each team its record, win probability, rankings, average yards, the game's box totals and its passing, rushing and receiving leaders. Games that have not finished also carry the Sportsbook event id, link and the money line, spread and total with the market and selection ids. `season_type` is `PRE`, `REGULAR` or `POST`; `week` is `0` to `4` for `PRE`, `1` to `18` for `REGULAR` and `1` to `5` for `POST`. A week with no games returns an empty list.
/fanduel/research/nfl-scheduleReturns one week of NFL games from FanDuel Research with game-day context: kickoff, stadium, weather, TV network, closing lines, win probabilities, team rankings and leaders, and the Sportsbook prices of games that have not finished.
week (required): the week number. PRE accepts 0 to 4 (week 0 is the Hall of Fame game), REGULAR 1 to 18, POST 1 to 5. A missing or out-of-range week returns 400. A week with no games returns an empty list: on 2026-10-24 PRE weeks 1 to 3 had 16 games each and PRE 0 had one, REGULAR weeks 1 to 4, 17 and 18 had 16 games each and week 7 had 14, PRE week 4 and every POST week were empty.season_type (optional): PRE, REGULAR, POST (case-insensitive); default REGULAR. The service returns the current season only.status is the service's game state: SCHEDULED, CREATED, IN_PROGRESS, HALFTIME, COMPLETE, CLOSED, CANCELLED, DELAYED, SUSPENDED, POSTPONED, TIME_TBD, FLEX_SCHEDULE. quarter and clock are set while a game is live and clock reads Event Over after a finished game.venue_type is outdoor or dome as sent. weather is present only when the service has it: on 2026-10-24 the one played game of week 7 had it and the upcoming games did not.closing_lines.spread is the spread from the home team's side (the Bears at home were -3 against the Patriots, the Saints at home 3 against the Steelers) and closing_lines.total the game total, as the service lists them.home_team and away_team carry record, win_probability (percent), ranks (1 is best of 32 for offense, defense, passing and rushing yards per game), the average passing and rushing yards per game, sportsbook_link and colors. game_stats (points, passing and rushing yards, interceptions thrown, fumbles forced) and leaders (the team's passing, rushing and receiving leaders in that game) exist only for a game that has been played (on 2026-10-24, the one finished game of week 7); an unplayed game reports its box totals as zero upstream and they are left out here.odds is present until a game finishes: event_id and url identify the Sportsbook event, and away/home hold money_line, spread and total as {odds, value, market_id, selection_id, url}; market_id and selection_id are read from the betslip link. value is the line as sent (-3.0, +3.0, O 44.5, U 44.5).head_to_head_slug is the service's id for the matchup page.Data is read from the FanDuel Research site's own public service and is shown as published at the time of the request; it is not betting advice. 503 on upstream failure.
| Field | Filled in, of 16 checked | Values in the sample |
|---|---|---|
| id | 16 | |
| number_fire_id | 16 | |
| week | 16 | 1 |
| season_type | 16 | REGULAR in all 16 |
| status | 16 | CLOSED in all 16 |
| scheduled_time | 16 | 2026-09-10 to 2026-09-15 |
| venue | 16 | “Lumen Field” and 15 other values |
| venue_type | 16 | outdoor (11), dome (3), retractable_dome (2) |
| network | 16 | FOX (6), CBS (6), NBC/Peacock (2) and 2 more |
| weather | 16 | |
| closing_lines | 16 | |
| head_to_head_slug | 16 | |
| home_team | 16 | |
| away_team | 16 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| week | integer | Yes | Week number; `0` to `4` for PRE (`0` is the Hall of Fame game), `1` to `18` for REGULAR, `1` to `5` for POST Minimum: 0. Maximum: 18. | 1 | |
| season_type | string | No | Season phase; default `REGULAR` Allowed values: PRE, REGULAR, POST. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanduel/research/nfl-schedule?week=1&season_type=PRE" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"week": 7,
"season_type": "REGULAR",
"count": 14,
"games": [
{
"id": "NFL-9247",
"number_fire_id": 9247,
"week": 7,
"season_type": "REGULAR",
"status": "SCHEDULED",
"scheduled_time": "2026-10-25T13:30:00Z",
"venue": "Stade de France",
"venue_type": "outdoor",
"network": "NFL Network",
"closing_lines": {
"spread": 3,
"total": 44.5
},
"head_to_head_slug": "9247/steelers-saints",
"home_team": {
"code": "NO",
"name": "New Orleans Saints",
"short_name": "Saints",
"conference": "NFC",
"division": "NFC South",
"win_probability": 29.57,
"record": {
"wins": 2,
"losses": 4,
"ties": 0
},
"ranks": {
"offense": 17,
"defense": 27,
"passing_yards_per_game": 17,
"rushing_yards_per_game": 21
}
},
"away_team": {
"code": "PIT",
"name": "Pittsburgh Steelers"
},
"odds": {
"event_id": 35605985,
"url": "https://sportsbook.fanduel.com/football/nfl/pittsburgh-steelers-@-new-orleans-saints-35605985",
"away": {
"team_code": "PIT",
"money_line": {
"odds": "-168",
"market_id": "42.578347319",
"selection_id": "50208"
},
"spread": {
"odds": "-110",
"value": "-3.0"
},
"total": {
"odds": "-112",
"value": "O 44.5"
}
},
"home": {
"money_line": {
"odds": "+142",
"market_id": "42.578347319",
"selection_id": "50196"
}
}
}
}
],
"fetched_at": "2026-10-24T06:00:00Z"
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/fanduel.researchNflScheduleResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanduel.ResearchNflScheduleResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.games | array | No | ||||
| data.games[].away_team | fanduel.ResearchNflTeam | No | ||||
| data.games[].away_team.average_passing_yards_per_game | number | No | ||||
| data.games[].away_team.average_rushing_yards_per_game | number | No | ||||
| data.games[].away_team.code | string | No | ||||
| data.games[].away_team.conference | string | No | ||||
| data.games[].away_team.division | string | No | ||||
| data.games[].away_team.game_stats | fanduel.ResearchNflGameStats | No | ||||
| data.games[].away_team.game_stats.fumbles_forced | integer | No | ||||
| data.games[].away_team.game_stats.interceptions_thrown | integer | No | ||||
| data.games[].away_team.game_stats.passing_yards | integer | No | ||||
| data.games[].away_team.game_stats.points | integer | No | ||||
| data.games[].away_team.game_stats.rushing_yards | integer | No | ||||
| data.games[].away_team.leaders | fanduel.ResearchNflLeaders | No | ||||
| data.games[].away_team.leaders.passing | fanduel.ResearchNflLeader | No | ||||
| data.games[].away_team.leaders.passing.attempts | integer | No | ||||
| data.games[].away_team.leaders.passing.carries | integer | No | ||||
| data.games[].away_team.leaders.passing.completions | integer | No | ||||
| data.games[].away_team.leaders.passing.name | string | No | ||||
| data.games[].away_team.leaders.passing.position | string | No | ||||
| data.games[].away_team.leaders.passing.receptions | integer | No | ||||
| data.games[].away_team.leaders.passing.targets | integer | No | ||||
| data.games[].away_team.leaders.passing.touchdowns | integer | No | ||||
| data.games[].away_team.leaders.passing.yards | integer | No | ||||
| data.games[].away_team.leaders.receiving | fanduel.ResearchNflLeader | No | ||||
| data.games[].away_team.leaders.receiving.attempts | integer | No | ||||
| data.games[].away_team.leaders.receiving.carries | integer | No | ||||
| data.games[].away_team.leaders.receiving.completions | integer | No | ||||
| data.games[].away_team.leaders.receiving.name | string | No | ||||
| data.games[].away_team.leaders.receiving.position | string | No | ||||
| data.games[].away_team.leaders.receiving.receptions | integer | No | ||||
| data.games[].away_team.leaders.receiving.targets | integer | No | ||||
| data.games[].away_team.leaders.receiving.touchdowns | integer | No | ||||
| data.games[].away_team.leaders.receiving.yards | integer | No | ||||
| data.games[].away_team.leaders.rushing | fanduel.ResearchNflLeader | No | ||||
| data.games[].away_team.leaders.rushing.attempts | integer | No | ||||
| data.games[].away_team.leaders.rushing.carries | integer | No | ||||
| data.games[].away_team.leaders.rushing.completions | integer | No | ||||
| data.games[].away_team.leaders.rushing.name | string | No | ||||
| data.games[].away_team.leaders.rushing.position | string | No | ||||
| data.games[].away_team.leaders.rushing.receptions | integer | No | ||||
| data.games[].away_team.leaders.rushing.targets | integer | No | ||||
| data.games[].away_team.leaders.rushing.touchdowns | integer | No | ||||
| data.games[].away_team.leaders.rushing.yards | integer | No | ||||
| data.games[].away_team.logo_url | string | No | ||||
| data.games[].away_team.name | string | No | ||||
| data.games[].away_team.number_fire_id | integer | No | ||||
| data.games[].away_team.primary_color | string | No | ||||
| data.games[].away_team.ranks | fanduel.ResearchNflRanks | No | ||||
| data.games[].away_team.ranks.defense | integer | No | ||||
| data.games[].away_team.ranks.offense | integer | No | ||||
| data.games[].away_team.ranks.passing_yards_per_game | integer | No | ||||
| data.games[].away_team.ranks.rushing_yards_per_game | integer | No | ||||
| data.games[].away_team.record | fanduel.ResearchNflRecord | No | ||||
| data.games[].away_team.record.losses | integer | No | ||||
| data.games[].away_team.record.ties | integer | No | ||||
| data.games[].away_team.record.wins | integer | No | ||||
| data.games[].away_team.secondary_color | string | No | ||||
| data.games[].away_team.short_name | string | No | ||||
| data.games[].away_team.slug | string | No | ||||
| data.games[].away_team.sportsbook_link | string | No | ||||
| data.games[].away_team.win_probability | number | No | ||||
| data.games[].clock | string | No | ||||
| data.games[].closing_lines | fanduel.ResearchClosingLines | No | ||||
| data.games[].closing_lines.spread | number | No | ||||
| data.games[].closing_lines.total | number | No | ||||
| data.games[].head_to_head_slug | string | No | ||||
| data.games[].home_team | fanduel.ResearchNflTeam | No | ||||
| data.games[].home_team.average_passing_yards_per_game | number | No | ||||
| data.games[].home_team.average_rushing_yards_per_game | number | No | ||||
| data.games[].home_team.code | string | No | ||||
| data.games[].home_team.conference | string | No | ||||
| data.games[].home_team.division | string | No | ||||
| data.games[].home_team.game_stats | fanduel.ResearchNflGameStats | No | ||||
| data.games[].home_team.game_stats.fumbles_forced | integer | No | ||||
| data.games[].home_team.game_stats.interceptions_thrown | integer | No | ||||
| data.games[].home_team.game_stats.passing_yards | integer | No | ||||
| data.games[].home_team.game_stats.points | integer | No | ||||
| data.games[].home_team.game_stats.rushing_yards | integer | No | ||||
| data.games[].home_team.leaders | fanduel.ResearchNflLeaders | No | ||||
| data.games[].home_team.leaders.passing | fanduel.ResearchNflLeader | No | ||||
| data.games[].home_team.leaders.passing.attempts | integer | No | ||||
| data.games[].home_team.leaders.passing.carries | integer | No | ||||
| data.games[].home_team.leaders.passing.completions | integer | No | ||||
| data.games[].home_team.leaders.passing.name | string | No | ||||
| data.games[].home_team.leaders.passing.position | string | No | ||||
| data.games[].home_team.leaders.passing.receptions | integer | No | ||||
| data.games[].home_team.leaders.passing.targets | integer | No | ||||
| data.games[].home_team.leaders.passing.touchdowns | integer | No | ||||
| data.games[].home_team.leaders.passing.yards | integer | No | ||||
| data.games[].home_team.leaders.receiving | fanduel.ResearchNflLeader | No | ||||
| data.games[].home_team.leaders.receiving.attempts | integer | No | ||||
| data.games[].home_team.leaders.receiving.carries | integer | No | ||||
| data.games[].home_team.leaders.receiving.completions | integer | No | ||||
| data.games[].home_team.leaders.receiving.name | string | No | ||||
| data.games[].home_team.leaders.receiving.position | string | No | ||||
| data.games[].home_team.leaders.receiving.receptions | integer | No | ||||
| data.games[].home_team.leaders.receiving.targets | integer | No | ||||
| data.games[].home_team.leaders.receiving.touchdowns | integer | No | ||||
| data.games[].home_team.leaders.receiving.yards | integer | No | ||||
| data.games[].home_team.leaders.rushing | fanduel.ResearchNflLeader | No | ||||
| data.games[].home_team.leaders.rushing.attempts | integer | No | ||||
| data.games[].home_team.leaders.rushing.carries | integer | No | ||||
| data.games[].home_team.leaders.rushing.completions | integer | No | ||||
| data.games[].home_team.leaders.rushing.name | string | No | ||||
| data.games[].home_team.leaders.rushing.position | string | No | ||||
| data.games[].home_team.leaders.rushing.receptions | integer | No | ||||
| data.games[].home_team.leaders.rushing.targets | integer | No | ||||
| data.games[].home_team.leaders.rushing.touchdowns | integer | No | ||||
| data.games[].home_team.leaders.rushing.yards | integer | No | ||||
| data.games[].home_team.logo_url | string | No | ||||
| data.games[].home_team.name | string | No | ||||
| data.games[].home_team.number_fire_id | integer | No | ||||
| data.games[].home_team.primary_color | string | No | ||||
| data.games[].home_team.ranks | fanduel.ResearchNflRanks | No | ||||
| data.games[].home_team.ranks.defense | integer | No | ||||
| data.games[].home_team.ranks.offense | integer | No | ||||
| data.games[].home_team.ranks.passing_yards_per_game | integer | No | ||||
| data.games[].home_team.ranks.rushing_yards_per_game | integer | No | ||||
| data.games[].home_team.record | fanduel.ResearchNflRecord | No | ||||
| data.games[].home_team.record.losses | integer | No | ||||
| data.games[].home_team.record.ties | integer | No | ||||
| data.games[].home_team.record.wins | integer | No | ||||
| data.games[].home_team.secondary_color | string | No | ||||
| data.games[].home_team.short_name | string | No | ||||
| data.games[].home_team.slug | string | No | ||||
| data.games[].home_team.sportsbook_link | string | No | ||||
| data.games[].home_team.win_probability | number | No | ||||
| data.games[].id | string | No | ||||
| data.games[].network | string | No | ||||
| data.games[].number_fire_id | integer | No | ||||
| data.games[].odds | fanduel.ResearchNflOdds | No | ||||
| data.games[].odds.away | fanduel.ResearchNflSideOdds | No | ||||
| data.games[].odds.away.money_line | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.away.money_line.market_id | string | No | ||||
| data.games[].odds.away.money_line.odds | string | No | ||||
| data.games[].odds.away.money_line.selection_id | string | No | ||||
| data.games[].odds.away.money_line.url | string | No | ||||
| data.games[].odds.away.money_line.value | string | No | ||||
| data.games[].odds.away.spread | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.away.spread.market_id | string | No | ||||
| data.games[].odds.away.spread.odds | string | No | ||||
| data.games[].odds.away.spread.selection_id | string | No | ||||
| data.games[].odds.away.spread.url | string | No | ||||
| data.games[].odds.away.spread.value | string | No | ||||
| data.games[].odds.away.team_code | string | No | ||||
| data.games[].odds.away.total | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.away.total.market_id | string | No | ||||
| data.games[].odds.away.total.odds | string | No | ||||
| data.games[].odds.away.total.selection_id | string | No | ||||
| data.games[].odds.away.total.url | string | No | ||||
| data.games[].odds.away.total.value | string | No | ||||
| data.games[].odds.event_id | integer | No | ||||
| data.games[].odds.home | fanduel.ResearchNflSideOdds | No | ||||
| data.games[].odds.home.money_line | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.home.money_line.market_id | string | No | ||||
| data.games[].odds.home.money_line.odds | string | No | ||||
| data.games[].odds.home.money_line.selection_id | string | No | ||||
| data.games[].odds.home.money_line.url | string | No | ||||
| data.games[].odds.home.money_line.value | string | No | ||||
| data.games[].odds.home.spread | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.home.spread.market_id | string | No | ||||
| data.games[].odds.home.spread.odds | string | No | ||||
| data.games[].odds.home.spread.selection_id | string | No | ||||
| data.games[].odds.home.spread.url | string | No | ||||
| data.games[].odds.home.spread.value | string | No | ||||
| data.games[].odds.home.team_code | string | No | ||||
| data.games[].odds.home.total | fanduel.ResearchBetLine | No | ||||
| data.games[].odds.home.total.market_id | string | No | ||||
| data.games[].odds.home.total.odds | string | No | ||||
| data.games[].odds.home.total.selection_id | string | No | ||||
| data.games[].odds.home.total.url | string | No | ||||
| data.games[].odds.home.total.value | string | No | ||||
| data.games[].odds.scheduled_time | string | No | ||||
| data.games[].odds.url | string | No | ||||
| data.games[].quarter | string | No | ||||
| data.games[].scheduled_time | string | No | ||||
| data.games[].season_type | string | No | ||||
| data.games[].status | string | No | ||||
| data.games[].venue | string | No | ||||
| data.games[].venue_type | string | No | ||||
| data.games[].weather | fanduel.ResearchWeather | No | ||||
| data.games[].weather.condition | string | No | ||||
| data.games[].weather.humidity_pct | integer | No | ||||
| data.games[].weather.temp_f | integer | No | ||||
| data.games[].weather.wind_direction | string | No | ||||
| data.games[].weather.wind_mph | integer | No | ||||
| data.games[].week | integer | No | ||||
| data.season_type | string | No | ||||
| data.week | 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/research/nfl-schedule?week=1&season_type=PRE" \
-H "x-api-key: $CRAWLORA_API_KEY"