Read the difference

Sync an application cache and drive alerts from line moves in near real time.

  1. 1Store your last cursor
  2. 2Apply each event
  3. 3Poll again from there
GET/api/v1/changes
Read NBA changes from the start
curl "https://prizepicksapi.com/api/v1/changes?league=NBA&after=0&limit=100" \
  -H "Authorization: Bearer $PRIZEPICKS_API_KEY"
Response200 OK
{
  "data": [{
    "id": "25647", "cursor": "25647",
    "type": "offer.changed",
    "projection_id": "pp_16258896",
    "league": "NBA", "player_name": "Scoot Henderson", "stat": "Points",
    "previous_line": 14.5, "line": 13.5,
    "observed_at": "2026-10-28T04:20:03.868Z"
  }],
  "meta": { "count": 100, "next_cursor": "25746" }
}

Key facts

Four event types

offer.new, offer.changed, offer.unavailable and offer.restored tell you exactly what happened to each offer, with previous_line and line on every event.

Resume anywhere

Pass the last cursor you applied as cursor or after. The next page starts right after it, so a restart never skips or repeats work.

Light to poll

Filter by league and pull up to 200 events per request. One call replaces rereading thousands of projections.

Implementation guide