Skip to Content
API ReferenceOdds Delta

Odds Delta

Get only the odds that have changed since a given timestamp. This endpoint returns the same odds format as /odds but filtered to items updated after your since value, making it ideal for polling clients that want incremental updates without re-fetching the full snapshot.

GET /api/v1/odds/delta

Authentication

Requires API key. Available to all tiers.

Use the server_time from each response as the since value for your next request. This ensures you never miss updates and never receive duplicates.

Query Parameters

ParameterTypeDefaultDescription
sincestringrequiredISO 8601 timestamp. Only return odds updated after this time (e.g., 2026-02-11T12:00:00Z)
sportsbookstringallComma-separated sportsbook IDs (e.g., draftkings,fanduel)
sportstringallFilter by sport (e.g., basketball, football)
leaguestringallFilter by league (e.g., nba, nfl)
marketstringallFilter by market type (e.g., moneyline, spread, total)
eventstring-Filter by event ID
livebooleanfalseReturn only live/in-play events
sortstring-Sort field with optional - prefix for descending (e.g., -odds_american, probability)
fieldsstringallComma-separated field names to include (e.g., id,sportsbook,odds_american)
min_oddsnumber-Minimum American odds filter (e.g., -110)
max_oddsnumber-Maximum American odds filter (e.g., +200)
limitinteger50Max results per page (max 200)
offsetinteger0Pagination offset

The since parameter is required. Omitting it returns a 400 invalid_request error.

Example Requests

# Get all odds changes in the last 30 seconds curl -X GET "https://api.sharpapi.io/api/v1/odds/delta?since=2026-02-11T12:00:00Z&league=nba" \ -H "X-API-Key: YOUR_API_KEY"

Response

Success (200)

{ "success": true, "data": [ { "id": "draftkings_33483153_moneyline_PHO", "sportsbook": "draftkings", "sportsbook_name": "DraftKings", "event_id": "33483153", "sport": "basketball", "league": "nba", "home_team": "PHI 76ers", "away_team": "PHO Suns", "market_type": "moneyline", "selection": "PHO Suns", "selection_type": "away", "odds_american": -150, "odds_decimal": 1.667, "probability": 0.60, "line": null, "event_start_time": "2026-02-11T19:00:00Z", "timestamp": "2026-02-11T12:00:15.125Z", "is_live": false, "status": "upcoming" } ], "meta": { "count": 1, "total": 1, "server_time": "2026-02-11T12:00:20.000Z", "books_changed": ["draftkings"], "pagination": { "limit": 50, "offset": 0, "has_more": false, "next_offset": null }, "filters": { "since": "2026-02-11T12:00:00Z", "league": "nba" } } }

Response Headers

X-RateLimit-Limit: 300 X-RateLimit-Remaining: 299 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_delta_abc123

Error Responses

400 Missing since parameter

{ "error": { "code": "invalid_request", "message": "The 'since' parameter is required for the delta endpoint", "docs": "https://sharpapi.io/docs/api-reference/odds-delta" } }

401 Unauthorized

{ "error": { "code": "unauthorized", "message": "Invalid or missing API key", "docs": "https://sharpapi.io/docs/authentication" } }

Delta Response Schema

The data array contains the same odds objects as the /odds endpoint. Only odds updated after the since timestamp are included.

The meta object includes two additional fields:

FieldTypeDescription
meta.server_timestringISO 8601 server timestamp. Use as the since value for your next request
meta.books_changedarrayList of sportsbook IDs that had updates in this delta

Polling Pattern

The recommended polling pattern uses server_time to chain requests:

  1. Make an initial request with since set to a recent timestamp
  2. Read meta.server_time from the response
  3. Use that server_time as the since value in your next request
  4. Repeat on your desired interval (e.g., every 5 seconds)

This ensures:

  • No gaps - server_time is the server’s clock, so you won’t miss updates due to clock drift
  • No duplicates - each delta window is non-overlapping
  • Minimal payload - only changed odds are returned

If no odds have changed since your since timestamp, the response will have an empty data array and count: 0. This is normal and expected during quiet periods.

Last updated on