Market-wide props scan
All player props across today's games for a sport, flattened into rows: the "flow" feed. Row count is capped by your tier.
Request
- Base URL: https://api.flashodds.live
- URL: https://api.flashodds.live/api/v1/props
- Auth: HTTP bearer
Query parameters
Filter to a single stat.
Filter to one player.
Filter to one event.
Max rows (capped by your tier).
Keep only markets at this scope. mainLinesOnly is about the LINE (standard vs goblin/demon alternate) and is orthogonal to scope, so a first-half market has its own standard line and survives that filter. Use scopeKind=full_game for whole-game markets only, which is what most callers building a board actually want. Values mirror market.scopeKind on every row.
Return only the standard two-way line per market, hiding goblin/demon/alternate variants. Use this for the pre-2026-07-27 row set.
Opaque cursor from a previous response’s pagination.nextCursor. Keyset-based, so paging stays correct when the board changes mid-walk. A cursor is bound to the filter set that produced it and returns 400 invalid_cursor if replayed against different filters.
Response
Flattened prop rows
Example response
{
"rows": [
{
"player": "Aaron Judge",
"stat": "points",
"line": 24.5,
"overOdds": -115,
"underOdds": -105,
"bookCount": 1,
"flashPlayerId": "fp_player_dsyMpoQ89z_KrVa0XLfJve",
"gameClock": "Q2 7:23",
"market": {
"statKey": "kills_on_game_1",
"label": "Map 1 Kills",
"family": "kills",
"scopeKind": "map",
"scope": "map1",
"scopeLabel": "Map 1",
"unit": "kills",
"displayOrder": 1,
"uiGroup": "kills"
},
"flashProjection": {
"value": 25,
"sampleN": 82,
"method": "season Hardpoint kills/map",
"marketKey": "map1_kills",
"seasonId": "2026"
}
}
],
"sources": [
{
"id": "underdog"
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.