Graded results are temporarily unavailable, so the examples are paused. They return on their own when the data service is back. The rules and code below work today.

How a line is graded

  • Closing line. The last line recorded at or before the start time. closing.gap_seconds says how close to tip-off it was.
  • Final only. A game is graded only when the scoreboard and the box score are final and the box score reconciles.
  • Push when the stat equals the line exactly. Over or under otherwise.
  • Void for did_not_play or pulled_before_start. The actual stat stays on the row.
  • Matching is limited to the player's own team in the matched game, with a 0.9 confidence threshold.
  • Corrections. Each box score is re-read about 12 hours after it goes final; a corrected stat raises revision.
cURL · one night of results
curl "https://prizepicksapi.com/api/v1/results?league=NBA&date=2026-10-27&status=void" \
  -H "Authorization: Bearer $PRIZEPICKS_API_KEY"

Hit rates in Python

Python · standard library
import json, os
from urllib.parse import urlencode
from urllib.request import Request, urlopen

def hit_rates(player, stat=None, last=10):
    params = {"player": player, "last": last, **({"stat": stat} if stat else {})}
    req = Request("https://prizepicksapi.com/api/v1/hit-rates?" + urlencode(params),
                  headers={"Authorization": "Bearer " + os.environ["PRIZEPICKS_API_KEY"]})
    with urlopen(req, timeout=20) as r:
        return json.load(r)["data"]

for row in hit_rates("Jayson Tatum"):
    rate = row["over_hit_rate"]
    print(f'{row["stat"]:<16} {row["over"]}-{row["under"]}-{row["push"]}  '
          f'over {rate:.0%}' if rate is not None else f'{row["stat"]:<16} no graded games')

Questions

Which line is graded, the opening or the closing line?

The closing line: the last line recorded at or before the game started. Each row reports how many seconds before tip-off that observation was, and marks it confirmed when it was within 15 minutes.

When is a PrizePicks pick a push or a void?

A push is when the final stat equals the line exactly. A void is when the player did not play, or the line was pulled before the game started. Voids still carry the actual stat so you can audit them.

Which leagues and stats are graded?

NBA full-game lines, overtime included, for single-player stats such as points, rebounds, assists, threes, combos like Pts+Rebs+Asts, and fantasy score. Rows that cannot be graded say why and never carry a guessed result.

How do I get hit rates for a player?

GET /api/v1/hit-rates?player=NAME returns over, under and push counts and the over hit rate per stat across graded closing lines, defaulting to one standard line per game. It is available on every plan.

Keep going

Get free API key

References