SharpAPI
SharpAPI is a real-time sports betting odds API covering 40+ sportsbooks with sub-100ms SSE streaming, +EV detection, arbitrage, middles, and low-hold opportunities. ## Endpoints - `/odds` — current odds across books, filterable by sport, market, event - `/ev` — positive expected value opportunities - `/arb` — arbitrage opportunities - `/middles` and `/low-hold` - `/closing-lines` — closing-line…
SharpAPI endpoints
| Method | Endpoint | Description |
|---|---|---|
| Health | ||
| GET |
getHealth /health |
Returns service health status, Redis connectivity, data freshness, and schema compatibility. No authentication required. |
| Reference Data | ||
| GET |
listSportsbooks /sportsbooks |
Returns available sportsbooks with status, capabilities, and event counts. Use `catalog=true` for a config-based catalog that doesn't require live data. |
| GET |
listSports /sports |
Returns available sports with event and live counts. Public endpoint with optional API key for higher rate limits. |
| GET |
listTeams /teams |
Returns teams aggregated from current odds snapshots. |
| GET |
listMarkets /markets |
Returns available market types with descriptions, examples, and event counts. |
| GET |
listLeagues /leagues |
Returns available leagues with event counts. Optionally filter by sport. |
| Events | ||
| GET |
getEvent /events/{eventId} |
Returns details for a single event. |
| GET |
getEventMarkets /events/{eventId}/markets |
Returns available market types for a specific event. |
| GET |
listEvents /events |
Returns events aggregated from current odds snapshots. Supports filtering by sport, league, live status, team name, date, and text search. **Authentication required.** |
| GET |
getEventOdds /events/{eventId}/odds |
Returns odds for a specific event, optionally filtered by sportsbook and market. |
| Odds | ||
| GET |
compareOdds /odds/comparison |
Returns side-by-side odds comparison for a specific event across all sportsbooks. |
| GET |
getBestOdds /odds/best |
Returns the best available odds for each selection across all sportsbooks. |
| GET |
getOddsDelta /odds/delta |
Returns odds that have changed since the given ISO 8601 timestamp. |
| POST |
batchOdds /odds/batch |
Returns odds for multiple events in a single request. Batch size limits vary by tier: - Free: 5 events - Hobby: 20 events - Pro: 50 events - Sharp/Enterprise: 100 events |
| GET |
listOdds /odds |
Returns odds across all sportsbooks and events. Supports extensive filtering, sorting, field selection, and grouping. **Sort options:** `odds_american`, `odds_decimal`,… |
| Opportunities | ||
| GET |
getMiddlesSummary /opportunities/middles/summary |
Returns aggregated middle opportunity counts by sport and league. Requires **Pro** tier or higher. |
| GET |
listLowHoldOpportunities /opportunities/low_hold |
Returns markets with unusually low bookmaker hold (vig), indicating efficient pricing. Requires **Hobby** tier or higher. **Sort options:** `hold` (default), `market`, `sport`. |
| GET |
getMiddleOpportunity /opportunities/middles/{id} |
Returns details for a single middle opportunity. Requires **Pro** tier or higher. |
| GET |
listEVOpportunities /opportunities/ev |
Returns positive expected value betting opportunities. Requires **Pro** tier or higher. EV is calculated by devigging sharp book lines (typically Pinnacle) and comparing against… |
| GET |
listMiddleOpportunities /opportunities/middles |
Returns middle betting opportunities where both sides of a line can win simultaneously. Requires **Pro** tier or higher. **Sort options:** `quality` (default), `ev`,… |
| GET |
listArbitrageOpportunities /opportunities/arbitrage |
Returns arbitrage (sure-bet) opportunities across sportsbooks. Requires **Hobby** tier or higher. **Sort options:** `profit` (default), `start_time`, `sport`. **Format:** Set… |
| Betting Splits | ||
| GET |
listSplits /splits |
Returns the latest snapshot of public betting splits (handle % and bet %) for every tracked event. Data is sourced from DraftKings (recreational) and Circa Sports… |
| GET |
getSplitsHistory /splits/history |
Returns the time series of splits snapshots for a single event from the Valkey sorted set `splits_history:{event_id}`. Snapshots are captured every ~5 minutes and retained for 48… |
| Deep Links | ||
| GET |
redirectDeepLink /deeplink/{id} |
Redirects to a sportsbook deep link. No authentication required. Returns a 302 redirect to the sportsbook URL, or 404 if the link cannot be generated. |
| POST |
batchDeepLinks /deeplinks/batch |
Returns redirect paths for multiple odds IDs or opportunity hash IDs. Resolved IDs return a redirect path, unresolvable IDs return null. Requires **Hobby** tier or higher. |
| Futures | ||
| GET |
listFuturesOdds /futures/odds |
Returns cross-book odds for a specific futures market. Requires authentication. |
| GET |
listFuturesMarkets /futures |
Returns available futures markets with metadata, merged across all sportsbooks. Public endpoint. |
| Game State | ||
| GET |
getGameStateForSport /gamestate/{sport} |
Returns aggregated live game state for events in one sport. Response shape matches `GET /gamestate` but `data` contains a single key (the path `sport`). Unknown sports return an… |
| GET |
listAllGameState /gamestate |
Returns aggregated live game state (scores, periods, clocks, situational data) for every sport with active events. Merged across sportsbooks with a consensus-based algorithm so a… |
| Other endpoints | ||
| GET |
redirectDeepLink /deeplink/{id} |
Redirects to a sportsbook deep link. No authentication required. Returns a 302 redirect to the sportsbook URL, or 404 if the link cannot be generated. |
| POST |
batchDeepLinks /deeplinks/batch |
Returns redirect paths for multiple odds IDs or opportunity hash IDs. Resolved IDs return a redirect path, unresolvable IDs return null. Requires **Hobby** tier or higher. |
| GET |
getGameState /gamestate/{sport} |
Returns live game state data for all events in a sport. Requires **Enterprise** tier. |
| GET |
listGameStateSports /gamestate |
Returns a summary of sports with available game state data. Requires **Enterprise** tier. |
| GET |
listOdds /odds |
Returns odds across all sportsbooks and events. Supports extensive filtering, sorting, field selection, and grouping. **Sort options:** `odds_american`, `odds_decimal`,… |
| GET |
getBestOdds /odds/best |
Returns the best available odds for each selection across all sportsbooks. |
| GET |
getOddsDelta /odds/delta |
Returns odds that have changed since the given ISO 8601 timestamp. |
| POST |
batchOdds /odds/batch |
Returns odds for multiple events in a single request. Batch size limits vary by tier: - Free: 5 events - Hobby: 20 events - Pro: 50 events - Sharp/Enterprise: 100 events |
| GET |
listLowHoldOpportunities /opportunities/low_hold |
Returns markets with unusually low bookmaker hold (vig), indicating efficient pricing. Requires **Hobby** tier or higher. **Sort options:** `hold` (default), `market`, `sport`. |
| GET |
getMiddlesSummary /opportunities/middles/summary |
Returns aggregated middle opportunity counts by sport and league. Requires **Pro** tier or higher. |
| GET |
listArbitrageOpportunities /opportunities/arbitrage |
Returns arbitrage (sure-bet) opportunities across sportsbooks. Requires **Hobby** tier or higher. **Sort options:** `profit` (default), `start_time`, `sport`. **Format:** Set… |
| GET |
listEVOpportunities /opportunities/ev |
Returns positive expected value betting opportunities. Requires **Pro** tier or higher. EV is calculated by devigging sharp book lines (typically Pinnacle) and comparing against… |
| GET |
compareOdds /odds/comparison |
Returns side-by-side odds comparison for a specific event across all sportsbooks. |
| GET |
getHistoricalSummary /historical/summary |
Returns daily aggregate summaries of opportunity detection including counts by type, grading results, and average metrics. Requires **Pro** tier or higher. |
| GET |
listHistoricalOpportunities /historical/opportunities |
Returns historical opportunity data from ClickHouse with full filtering. Requires **Pro** tier or higher. Date range is clamped by tier: Pro = 30 days, Sharp = 90 days,… |
| GET |
getMiddleOpportunity /opportunities/middles/{id} |
Returns details for a single middle opportunity. Requires **Pro** tier or higher. |
| GET |
listMiddleOpportunities /opportunities/middles |
Returns middle betting opportunities where both sides of a line can win simultaneously. Requires **Pro** tier or higher. **Sort options:** `quality` (default), `ev`,… |
| GET |
stream /stream |
Server-Sent Events stream for real-time odds and opportunity updates. Requires streaming access (WebSocket add-on, Enterprise tier, or active trial). Use `api_key` query… |
| GET |
getHistoricalCLV /historical/clv |
Closing Line Value analysis -- aggregates CLV statistics for graded opportunities within a date range, grouped by sportsbook, sport, league, market, or day. Requires **Pro** tier… |
| GET |
listFuturesOdds /futures/odds |
Returns cross-book odds for a specific futures market. Requires authentication. |
| GET |
getHealth /health |
Returns service health status, Redis connectivity, data freshness, and schema compatibility. No authentication required. |
SharpAPI pricing
| Plan | Price | Rate limit | Quotas |
|---|---|---|---|
| BASIC | Free | — |
|