PrizePicks APIprizepicks.com ↗
Access real-time PrizePicks player prop projections, opening and current lines, game metadata, and trending props across NBA, NHL, and more sports leagues.
What is the PrizePicks API?
The PrizePicks API covers 5 endpoints that expose real-time player prop projections, league metadata, player profiles, game data, and trending popularity scores. The get_projections endpoint returns both opening lines (board_time) and current lines (line_score) alongside resolved player, game, league, and stat type relationships — all filterable by league, US state code, and live status.
curl -X GET 'https://api.parse.bot/scraper/4968fa36-6dcb-4615-8b95-f94f1911ea62/get_projections?is_live=True&per_page=5&league_id=8&state_code=NY&single_stat=True' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace prizepicks-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""PrizePicks: discover leagues, browse projections, check trending picks."""
from parse_apis.prizepicks_player_props_api import PrizePicks, LeagueId3, LeagueIdRequired
client = PrizePicks()
# List available leagues filtered by state, cap at 5 results.
for league in client.leagues.list(limit=5):
print(league.name, league.projections_count, league.has_live_projections)
# Fetch NHL projections (league_id 8) — first item drill-down.
proj = client.projections.list(league_id="8", limit=1).first()
if proj:
print(proj.description, proj.line_score, proj.odds_type, proj.status)
# List games across all leagues, capped.
for game in client.games.list(limit=3):
print(game.external_game_id, game.status, game.start_time)
# Trending data for NBA (league 7) — typed error handling.
try:
trending = client.trendingdatas.get(league_id="7")
print(trending.data)
except LeagueIdRequired as exc:
print(f"Missing league_id: {exc}")
print("exercised: leagues.list / projections.list / games.list / trendingdatas.get")
Fetch real-time player prop projections with resolved relationships to players, games, leagues, and stat types. Returns opening lines (board_time), current lines (line_score), odds type, and game context. Supports pagination and filtering by league, state, and live status. A league_id filter is recommended to avoid excessively large responses.
| Param | Type | Description |
|---|---|---|
| is_live | boolean | Filter for live/in-game props only. Omitting returns all props. |
| per_page | integer | Number of results per page. Maximum 250. |
| league_id | integer | Filter by league ID. Strongly recommended to avoid multi-MB responses. Common values: 7 (NBA), 8 (NHL), 2 (MLB), 3 (WNBA). |
| state_code | string | US state code for geo-filtering available lines. |
| single_stat | boolean | Filter for single stat props. |
{
"type": "object",
"fields": {
"meta": "object containing current_page and total_pages for pagination",
"links": "object containing self link",
"projections": "array of projection objects with resolved player, game, league, and stat_type relationships including line_score, odds_type, status, and board_time"
},
"sample": {
"data": {
"meta": {
"total_pages": 1,
"current_page": 1
},
"links": {
"self": "api.prod01.universe.prizepicks.com/projections?..."
},
"projections": [
{
"id": "12573919",
"game": {
"status": "scheduled",
"start_time": "2026-06-11T20:00:00.000-04:00",
"external_game_id": "NHL_game_Mt7kczBXGo1PTNmlSpahrj3e"
},
"type": "projection",
"league": {
"name": "NHL",
"active": true
},
"status": "pre_game",
"odds_type": "standard",
"stat_type": {
"name": "Hits",
"rank": 11
},
"board_time": "2026-06-03T20:00:00.000-04:00",
"line_score": 4,
"new_player": {
"team": "CAR",
"league": "NHL",
"position": "D",
"display_name": "Sean Walker"
},
"start_time": "2026-06-11T20:00:00.000-04:00",
"description": "VGK"
}
]
},
"status": "success"
}
}About the PrizePicks API
Projections and Lines
The get_projections endpoint is the core of this API. Each projection object includes board_time (opening line), line_score (current line), odds type, and a fully resolved set of relationships: the player, the game, the league, and the stat type. You can narrow results using league_id (e.g., 7 for NBA, 8 for NHL), state_code to apply geo-filtering for US-state availability, is_live to isolate in-game props, and single_stat for single-stat prop types. The response includes meta.current_page and meta.total_pages for pagination via the per_page parameter.
Leagues, Players, and Games
get_leagues returns each league's id, name, active status, and projections_count, optionally filtered by state_code. get_players returns up to 250 player records per request — including display_name, position, team, league, and image_url — and accepts league_id to scope results. get_games returns up to 250 game records including external_game_id, status, start_time, is_live, and team and score metadata, also filterable by league_id.
Trending Props
The get_trending endpoint accepts a required league_id and returns a data map of projection_id to a numeric popularity score. Higher scores indicate more user activity on that line. This is useful for surfacing which player props are attracting the most attention at any given moment within a specific league.
The PrizePicks API is a managed, monitored endpoint for prizepicks.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when prizepicks.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official prizepicks.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor line movement on NBA player props by comparing
board_timeandline_scoreacross projection records - Build a live-game prop tracker using the
is_livefilter onget_projectionscombined with game status fromget_games - Display state-specific prop availability by passing
state_codetoget_projectionsorget_leagues - Rank the most popular player props within a league using popularity scores from
get_trending - Populate a player profile page with position, team, and headshot data from
get_players - Aggregate projections counts per league using the
projections_countfield returned byget_leagues - Cross-reference prop lines with game start times and live scores from
get_gamesto contextualize active projections
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does PrizePicks have an official developer API?+
How does `get_projections` handle geo-restricted lines?+
state_code parameter (e.g., CA, TX) to filter projections to lines available in that US state. Omitting state_code returns the full board without geographic filtering, which may include lines not available in all jurisdictions.What is the difference between `board_time` and `line_score` in a projection?+
board_time represents the opening line posted when the projection first appeared on the board. line_score is the current active line. Comparing the two lets you track whether a line has moved since it opened.