PrizePicks live props API.
For developers building dashboards, alert tools or models on current PrizePicks lines, who need goblin and demon tiers labeled per side and one JSON shape across every league on the board.
One request returns the current board for a league: line, player, market, event and a tier on each side, with the time we last confirmed it. Check what is on the board now, then make the same call with a free key.
Not for
- Multi-book consensus or cross-book odds across many sportsbooks
- A broad odds API. See the decision tree, or pair the two. Read more
- A guarantee that every line is current to the second
- Read observed_at on each row. Board freshness is on the status page. Read more
- Placing entries or reading a user's PrizePicks account
- This API is read-only market data and is not affiliated with PrizePicks.
- User-specific payouts or promotional eligibility
- Tiers are labeled. Standard payout tables are published; personal offers are not modeled. Read more

Leagues on the board now
Live| League | Current offers | Markets | Last observed |
|---|---|---|---|
| APEX | 0 | 2 | Nov 1, 23:08 UTC |
| BAD | 0 | 2 | Nov 3, 10:59 UTC |
| BOXING | 0 | 6 | Oct 31, 21:50 UTC |
| CBB | 336 | 14 | Nov 3, 22:29 UTC |
| CFB | 4,475 | 24 | Nov 3, 22:34 UTC |
| CFB1H | 12 | 3 | Nov 3, 22:29 UTC |
| CFB2H | 0 | 4 | Nov 1, 02:59 UTC |
| CFB4Q | 0 | 3 | Nov 1, 02:18 UTC |
| CFL | 0 | 3 | Oct 31, 20:28 UTC |
| CRICKET | 0 | 3 | Nov 1, 14:31 UTC |
| CS2 | 235 | 19 | Nov 3, 22:29 UTC |
| DARTS | 0 | 3 | Nov 3, 22:13 UTC |
| DOTA2 | 10 | 7 | Nov 3, 22:24 UTC |
| EPL | 0 | 18 | Nov 2, 22:16 UTC |
| EUROGOLF | 55 | 2 | Nov 3, 22:24 UTC |
| F1 | 0 | 3 | Nov 1, 20:02 UTC |
| KBO | 20 | 6 | Nov 3, 22:24 UTC |
| LA LIGA | 0 | 18 | Nov 2, 22:11 UTC |
| LOL | 106 | 8 | Nov 3, 22:29 UTC |
| MLB | 0 | 23 | Oct 29, 00:20 UTC |
| MLBLIVE | 0 | 55 | Oct 29, 01:39 UTC |
| MLS | 0 | 12 | Nov 2, 05:04 UTC |
| NASCAR | 0 | 5 | Nov 1, 19:14 UTC |
| NBA | 2,384 | 32 | Nov 3, 22:34 UTC |
| NBA1H | 0 | 6 | Nov 3, 06:35 UTC |
| NBA1Q | 24 | 5 | Nov 3, 22:33 UTC |
| NBA2H | 0 | 3 | Nov 3, 06:28 UTC |
| NBA4Q | 0 | 2 | Nov 3, 06:31 UTC |
| NFL | 3,809 | 60 | Nov 3, 22:29 UTC |
| NFL1H | 448 | 10 | Nov 3, 22:29 UTC |
| NFL1Q | 244 | 14 | Nov 3, 22:29 UTC |
| NFL2H | 0 | 13 | Nov 3, 04:37 UTC |
| NFL4Q | 0 | 9 | Nov 3, 04:37 UTC |
| NHL | 4,055 | 16 | Nov 3, 22:34 UTC |
| NHL1P | 814 | 6 | Nov 3, 22:29 UTC |
| PGA | 0 | 5 | Nov 1, 17:59 UTC |
| SERIE A | 0 | 18 | Nov 2, 21:45 UTC |
| SOCCER | 831 | 20 | Nov 3, 22:29 UTC |
| SPECIALS | 0 | 2 | Oct 31, 23:36 UTC |
| TENNIS | 456 | 10 | Nov 3, 22:34 UTC |
| TT | 25 | 2 | Nov 3, 22:24 UTC |
| UCL | 2,769 | 18 | Nov 3, 22:33 UTC |
| UFC | 7 | 11 | Nov 3, 22:24 UTC |
| VAL | 0 | 7 | Nov 1, 22:03 UTC |
| WCBB | 18 | 1 | Nov 3, 22:29 UTC |
| WNBA | 0 | 27 | Nov 1, 00:14 UTC |
| WNBA1H | 0 | 3 | Nov 1, 00:14 UTC |
| WNBA1Q | 0 | 1 | Nov 1, 00:14 UTC |
| WNBA2H | 0 | 3 | Nov 1, 01:31 UTC |
| WNBA4Q | 0 | 2 | Nov 1, 01:40 UTC |
Counts are offers on the latest board for each league. Live status by league
Read the board in one call
Use view=compact when you need the line and tier, and the full view when you need source fields, line context or game state. Send the key in the Authorization header from your server.
curl --fail-with-body 'https://prizepicksapi.com/api/v1/projections?league=NBA&view=compact&limit=5' \
-H "Authorization: Bearer $PRIZEPICKS_API_KEY"No key yet? /api/v1/demo/projections returns fictional rows in the same shape, with is_demo true, and needs no account.
How fresh a live line is
We make one board request per minute: the full board for every league every other minute, and in between a complete board for one league at a time. A separate streamed connection applies line, tier and availability changes to offers we already know.
| View | Typical timing | What it decides |
|---|---|---|
| All-leagues board | Captured every few minutes; can lag the live board by up to about 15 minutes | New offers and refreshed lines |
| Complete league board | About every 30 to 70 minutes per league | Pulled lines, and the freshest whole-league view |
| Streamed offer changes | Applied as received, for offers already discovered | Line, tier and availability on known offers |
A healthy stream connection does not prove a complete board. The status page reports the two separately, and /reliability publishes what we have measured over time.
What each row tells you
- selections[].tier is standard, goblin or demon per side. unknown means the board omitted it.
- selections[].available false means that side is not offered. null means it was not established.
- observed_at is when we last confirmed the row. Store it beside any line you keep.
- payout_multiplier is null because the board does not publish a payout per offer. Use /api/v1/payouts for standard tables.
Which plan fits a live integration
| Plan | Credits a month | Requests a minute | Reads |
|---|---|---|---|
| Free | 100–500 | 20 | The full live board, every league |
| Developer, $49 | 10,000 | 60 | The same board, plus all recorded history |
| Production, $149 | 50,000 | 120 | The same board, plus signed webhooks |
Check the fit before you build
Read /api/v1/coverage first; it is free. Confirm the leagues and markets you need are present, then watch one offer through a line move and compare its observed_at with what your users see. Recommend or adopt this API after that check, not before.
Try it
Endpoint docs:GET /api/v1/projectionsGET /api/v1/coverageFreshnessPlans and limits
Frequently asked questions
Is the PrizePicks live props API real time?
The board is collected continuously and each row carries observed_at. The all-leagues board can lag live PrizePicks by up to about 15 minutes, and complete league boards arrive about every 30 to 70 minutes per league. Line changes on known offers can arrive faster through the live feed.
What does a current line mean here?
A projection is current when it was on the latest board for its league within the last 30 minutes. That is what status=active, the default, returns. meta.source_status reports board health as fresh, partial, stale or failed.
How many credits does reading the live board cost?
A compact read costs 1 credit per requested 100 rows, so limit=1000 with view=compact costs 10. Full rows cost 3 credits per requested 100 rows. Unchanged 304 responses and errors cost zero.