Basketball stats APIfor your application
Live scores, box scores, play-by-play, shot charts and standings from every tracked competition. HTTP JSON endpoints + WebSocket push for sub-second latency.
Real-time
Live scores over WebSocket — ~30ms lag from the desktop scorer to your widget.
Secure and scalable
Bearer token auth, per-tier rate limiting, signed WebSocket auth for private channels.
Rich statistics
Index (PIR), box score, play-by-play with shot x/y coordinates, career stats by EBR.
WebSocket push
private-match.{id}, private-competition.{id}, private-games — subscribe only to what you need.
Standard Pusher protocol
Reverb speaks a Pusher-compatible wire protocol — existing SDKs work out of the box.
Per-competition plans
Pay only for what you use: one league, a few, or everything on Enterprise.
30 seconds to your first call
Grab a token from us, send a GET request, get JSON back. The same token works for WebSocket subscriptions.
curl https://stats-api.ds2.app/api/v1/competitions/4/standings \
-H "Authorization: Bearer YOUR_TOKEN"import Echo from 'laravel-echo'
import Pusher from 'pusher-js'
window.Pusher = Pusher
const echo = new Echo({
broadcaster: 'reverb',
key: 'stats-admin-public-key',
wsHost: 'stats-api.ds2.app',
wssPort: 443,
forceTLS: true,
authEndpoint: 'https://stats-api.ds2.app/api/v1/broadcasting/auth',
auth: { headers: { Authorization: 'Bearer YOUR_TOKEN' } },
})
echo.private('match.123').listen('.event.received', (data) => {
console.log('New event:', data)
})Who uses it
Sportsbooks, sports media, clubs, and third-party apps power their products with the same data feed.
Sportsbooks
Live odds updates without polling. Microsecond lag for predictions.
Sports media
Tickers, live pages, box score widgets hosted on your own domain.
Club websites
Embed standings, schedules, and player career stats.
Analytics
Shot charts, play-by-play, EBR-based tracking across seasons.
Ready?
Email us and we'll line up a plan and issue your API token the same day.
hello@ds2.app