FanDuel API endpoint
Returns short player and team updates, newest first: the fact, the analysis, the news type and the player (name, position, team, `number_fire_id`, and the Sportsbook roster page, whose slug ends in the same id). With `news_type=INJURY` it is a league-wide injury feed. Available for the NFL, NBA, MLB and NHL; the news types each sport has are listed by the `sports` route (the NFL has no `LINEUP`, MLB no `OUTLOOK`, the NHL only `INJURY`, `TRANSACTION` and `GAME_UPDATE`). Filter by team, or by player (id and position together).
/fanduel/research/player-newssport (required): nfl, nba, mlb, nhl. Other sports have no player news and return 400.news_type (optional): INJURY, RECAP, TRANSACTION, LINEUP, GAME_UPDATE, OUTLOOK. A type the sport lacks returns 400 and lists the ones it has: nfl has no LINEUP, mlb no OUTLOOK, nhl only INJURY, TRANSACTION and GAME_UPDATE.team (optional): a team's number_fire_id from the sports route. A team of another sport returns 400.player (optional): a player's number_fire_id; needs position.position (optional): G, F, C, W, D, QB, DB, DL, K, LB, OL, P, RB, TE, WR, IF, OF, DH; needs player.include_non_primary (optional): true to include updates where the subject is not the main player.limit (optional): 1 to 100; default 25.cursor (optional): the previous response's next_cursor. A malformed or foreign cursor returns 400.subject.number_fire_id is the id at the end of the Sportsbook roster slug (kenneth-gainwell-54895), so a news item links to the Sportsbook player routes through subject.page_url.fact and analysis are plain text (the service stores them as rich text).news_type=INJURY with no team or player; narrow it with team, or follow one player with player and position.has_more and next_cursor page back through the archive.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 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| slug | 40 | |
| title | 40 | median 65 characters |
| fact | 40 | median 197 characters |
| analysis | 40 | median 329 characters |
| news_type | 40 | |
| sport | 40 | |
| subject | 40 | |
| author | 40 | |
| published_at | 40 | 2026-10-21 to 2026-10-23 |
| updated_at | 40 | 2026-10-21 to 2026-10-23 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| sport | string | Yes | Sport slug Allowed values: nfl, nba, mlb, nhl. | nfl | |
| news_type | string | No | Update type: `INJURY`, `RECAP`, `TRANSACTION`, `LINEUP`, `GAME_UPDATE`, `OUTLOOK`; a type the sport lacks returns `400` and lists the ones it has Allowed values: INJURY, RECAP, TRANSACTION, LINEUP, GAME_UPDATE, OUTLOOK. | ||
| team | integer | No | A team's `number_fire_id` from the `sports` route | ||
| player | integer | No | A player's `number_fire_id`; needs `position` | ||
| position | string | No | The player's position code; needs `player` Allowed values: G, F, C, W, D, QB, DB, DL, K, LB, OL, P, RB, TE, WR, IF, OF, DH. | ||
| include_non_primary | boolean | No | `true` to include updates where the subject is not the main player | ||
| limit | integer | No | Updates per page, 1 to 100; default 25 Minimum: 1. Maximum: 100. | ||
| cursor | string | No | Continue from the previous response's `next_cursor` | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fanduel/research/player-news?sport=nfl&news_type=INJURY&position=G&include_non_primary=true&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"data": {
"items": [
{
"id": "NM1hKpuC8bnXIWLftQmNRi",
"slug": "saquon-barkley-limited-in-practice-ahead-of-week-7-against-cowboys-october-26-2026",
"title": "Saquon Barkley Limited in Practice Ahead of Week 7 Against Cowboys",
"fact": "Saquon Barkley (hamstring) was a limited participant in practice for the Eagles ahead of their Week 7 matchup against the Cowboys. As of Thursday evening, the Cowboys ...",
"analysis": "Barkley put together an eight-yard rushing performance in his Week 4 matchup with the Rams, carrying the ball two times (averaging four yards per carry). Barkley has 1...",
"news_type": {
"code": "INJURY",
"name": "Injury"
},
"sport": {
"slug": "nfl",
"name": "NFL"
},
"subject": {
"type": "player",
"name": "Saquon Barkley",
"number_fire_id": 53785,
"slug": "saquon-barkley",
"position": "RB",
"number": 26,
"page_url": "https://sportsbook.fanduel.com/teams/nfl/roster/saquon-barkley-53785",
"team": {
"number_fire_id": 24,
"name": "Philadelphia Eagles",
"abbreviation": "PHI"
}
},
"author": {
"name": "Data Skrive",
"slug": "data-skrive"
},
"published_at": "2026-10-23T01:06:16Z",
"updated_at": "2026-10-23T01:06:18Z"
}
],
"has_more": true,
"next_cursor": "7Y0odGVzhPk6jbrGYdBFBu",
"fetched_at": "2026-10-23T19:14:41Z"
},
"msg": "OK"
}Request schema
No body schema
Response schema
#/definitions/fanduel.researchPlayerNewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | fanduel.ResearchPlayerNewsResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.has_more | boolean | No | ||||
| data.items | array | No | ||||
| data.items[].analysis | string | No | ||||
| data.items[].attribution | string | No | ||||
| data.items[].author | fanduel.ResearchAuthorRef | No | ||||
| data.items[].author.id | string | No | ||||
| data.items[].author.name | string | No | ||||
| data.items[].author.slug | string | No | ||||
| data.items[].fact | string | No | ||||
| data.items[].id | string | No | ||||
| data.items[].news_type | fanduel.ResearchNewsType | No | ||||
| data.items[].news_type.code | string | No | ||||
| data.items[].news_type.name | string | No | ||||
| data.items[].published_at | string | No | ||||
| data.items[].quant | string | No | ||||
| data.items[].slug | string | No | ||||
| data.items[].sport | fanduel.ResearchSportRef | No | ||||
| data.items[].sport.name | string | No | ||||
| data.items[].sport.slug | string | No | ||||
| data.items[].subject | fanduel.ResearchSubject | No | ||||
| data.items[].subject.abbreviation | string | No | ||||
| data.items[].subject.name | string | No | ||||
| data.items[].subject.number | integer | No | ||||
| data.items[].subject.number_fire_id | integer | No | ||||
| data.items[].subject.page_url | string | No | ||||
| data.items[].subject.position | string | No | ||||
| data.items[].subject.slug | string | No | ||||
| data.items[].subject.team | fanduel.ResearchPlayerTeam | No | ||||
| data.items[].subject.team.abbreviation | string | No | ||||
| data.items[].subject.team.name | string | No | ||||
| data.items[].subject.team.number_fire_id | integer | No | ||||
| data.items[].subject.type | string | No | ||||
| data.items[].title | string | No | ||||
| data.items[].updated_at | string | No | ||||
| data.next_cursor | string | 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/player-news?sport=nfl&news_type=INJURY&position=G&include_non_primary=true&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"