8 SPORTS · ONE API
The sports data API built for developers ballers.
Real-time scores, odds, stats, and intelligence across 8 sports. One unified schema, ~200ms REST round trips on cached and stored reads, a live WebSocket feed, and confidence scoring on every response.
No credit card. 1,000 req/day on the free plan (2,000 with GitHub).
curl https://api.bigballsdata.com/v1/matches \
-H "Authorization: Bearer bbs_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-G \
--data-urlencode "league=epl" \
--data-urlencode "status=live"
# Response (abbreviated):
{
"data": [
{
"id": "m_abc123",
"home": "Arsenal",
"away": "Chelsea",
"scores": { "value": { "home": 2, "away": 1 }, "confidence": 0.95 }
}
],
"meta": { "source": "official-league", "confidence": 0.95, "cached": false }
}Discoverable by AI agents out of the box
Every endpoint is machine-readable. No custom integration work required.
llms.txt
Tells any LLM what this API does and how to use it
View →MCP Manifest
8 structured tools ready for Claude, GPT, and any MCP-compatible agent
View →OpenAPI 3.1
Machine-readable spec for automated client generation and agent reasoning
View →import { BigBallSportsClient } from '@bigballsdata/sdk';
const client = new BigBallSportsClient('bbs_live_...');
const matches = await client.matches.list({
sport: 'football'
});Built for the way ballers actually work
Every API call returns the same envelope. Every field carries provenance. Every source has a rate-limit and a circuit breaker. No surprises.
One unified schema
Scores, odds, lineups, stats, events, every sport returns the same envelope. Integrate once; cover everything.
Real-time WebSocket feed
socket.io rooms by sport, league, and match. Sub-50ms delivery on Pro+ for live scores and odds movement.
Confidence on every response
Every field ships with a provenance score so your app can decide when to show caveats, no silently stale or partial data.
Free tier, no credit card
1,000 requests/day on the free plan. Sign up with GitHub to double it to 2,000. First request in under 30 seconds.
What data do you get?
One unified envelope across every sport. Pick a sport to see the fields, stats, and a real response.
Match fields
- id
- sport
- league
- home
- away
- kickoff_utc
- status
- score
- linescore
- attendance
- broadcast
- has_odds
Stat fields (mostly team-level)
- shots
- shots_on_target
- possession_percent
- passes
- corners
- offsides
- fouls
- saves
- cards_yellow
- cards_red
- xg
- progressive_passes
- pressures
{
"data": [
{
"id": "bb_match_8h2k5p9q3xyz",
"sport": "football",
"league": "EPL",
"home": {
"name": "Arsenal",
"short_name": "ARS",
"logo_url": "https://cdn.bigballsdata.com/teams/ars.png"
},
"away": {
"name": "Chelsea",
"short_name": "CHE",
"logo_url": "https://cdn.bigballsdata.com/teams/che.png"
},
"kickoff_utc": "2026-05-20T19:00:00Z",
"status": "in_progress",
"score": { "home": 2, "away": 1 },
"linescore": null,
"attendance": 60260,
"broadcast": "Sky Sports Main Event",
"has_odds": true
}
],
"pagination": { "total": 47, "limit": 1, "offset": 0 }
}curl -H "x-api-key: YOUR_KEY" \
"https://api.bigballsdata.com/v1/stored/matches?sport=football&limit=1"Intelligence layer
- Formation history analysiscoming soon
- Tournament progression probabilitieslive
- Revenge factor / H2H history (/h2h)live
- Schedule congestionbuilding now
More than data. Intelligence.
Raw scores and odds are table stakes. We also ship the derived signals you'd otherwise have to model yourself (edges, sims, form, splits, history) on the same unified envelope.
Value bet detection
Elo-implied probability vs the market line. Edges surfaced on every prediction.
Player-prop value finder
Player props where the empirical hit rate beats the de-vigged market line, across points, rebounds, assists, threes, and combos.
Tournament progression
Monte Carlo Elo simulations: knockout-stage and championship probabilities for every team.
Form index
Weighted recent results. Newer matches and higher-quality opponents count more.
ATS record with splits
Against-the-spread records broken down by home / away, favorite / underdog, and line range.
Head-to-head history
Full meeting history between two teams: record, last meetings, venue splits, revenge spots.
BTTS + O/U rates
Both-teams-to-score and over/under hit rates by team, league, and recent window.
Built for the people actually shipping
Five audiences, one unified API, same response envelope. Pick your angle.
- DFS Grinder
Projections, ownership, ceiling, floor.
Build optimizers without scraping ten sites every Sunday morning. One envelope, every slate.
/v1/dfs, /v1/fantasy
- Prediction Market Trader
Event contract edge in one call.
Probabilities, settlement signals, and market depth for Kalshi-style contracts. Stop reconciling four feeds.
/v1/prediction-markets
- Content Machine
Recaps and previews on autopilot.
Templated stat blurbs, narrative blocks, and headline-ready phrasing. Plug into a CMS, ship copy at scale.
/v1/content
- Card Shark
Real odds, sharp moves, ATS splits.
The data your bookie hopes you don't have. Value edges, line history, and contrarian signals on every market.
/v1/matches, /v1/teams/:id/ats, intelligence layer
- Second Screen
Companion apps that move with the game.
Real-time scores, plays, and lineups via a low-latency WebSocket (sub-50ms on Pro+). Built to survive Sunday afternoon kickoff load.
/v1/matches/live, WebSocket /live
Next on the namespace map
Reserved paths, building now. Same canonical envelope when they land./v1/fantasyComing soonSeason-long fantasy projections, rankings, waivers.
/v1/dfsComing soonDaily slates, salaries, projections, ownership.
/v1/prediction-marketsComing soonEvent contract probabilities, settlement, depth.
/v1/contentComing soonTemplated previews, recaps, editorial blocks.
How fresh is the data, exactly?
Every data type ships on its own cadence. We publish the exact intervals so you can size your cache and your confidence checks against the worst-case staleness, not a marketing approximation.
- Real-time
Live scores
Every 15 secondsduring live games - Real-time
Odds
Every 60 secondsDelta polling, only changed lines fetched - Real-time
Standings
After final whistle - Frequent
Player stats
Minutes after game endsLive player stats every 15s during games - Daily
Rosters
Checked dailyupdated when changes detected - Real-time
Predictions
After each result - Static
Historical data
Static
Cadences are upper bounds, most reads hit a warm cache and return faster. WebSocket subscribers receive score and odds changes the moment the upstream poll picks them up, with no additional poll-window delay. During live games, delta polling ensures only changed data is fetched, minimizing latency and API usage.
What we cover, sport by sport
One row per sport, one column per data type. We publish the honest status, no soft "partial" cells hiding a gap, no promise of data we don't ship.
| Sport | Scores | Odds | Props | Standings | Player Stats | Injuries | Lineups | Historical | Predictions | Play-by-Play |
|---|---|---|---|---|---|---|---|---|---|---|
| Football (Soccer) | ⚡ | ⚡ | 🔜 | ⚡ | ✅ | 🔜 | ✅ | ✅ | ⚡ | 🔜 |
| Basketball (NBA + NCAAB) | ⚡ | ⚡ | ⚡ | ⚡ | ⚡ | ⚡ | ✅ | ✅ | 🔜 | ⚡ |
| American Football (NFL + NCAAF) | ⚡ | ⚡ | 🔜 | ⚡ | ✅ | 🔜 | 🔜 | ✅ | ⚡ | ⚡ |
| Baseball | ⚡ | ⚡ | 🔜 | ⚡ | ⚡ | 🔜 | ✅ | ✅ | 🔜 | 🔜 |
| Ice Hockey | ⚡ | ⚡ | ⚡ | ⚡ | ⚡ | ⚡ | ✅ | ✅ | ⚡ | 🔜 |
| Cricket | ⚡ | 🔜 | ❌ | 🔜 | 🔜 | 🔜 | 🔜 | 🔜 | 🔜 | ❌ |
| MMA | ✅ | 🔜 | ❌ | ❌ | ✅ | 🔜 | ❌ | ✅ | 🔜 | ❌ |
| Formula 1 | ✅ | ❌ | ❌ | 🔜 | 🔜 | ❌ | ❌ | 🔜 | 🔜 | ❌ |
- Status
- Real-time / live updates
- Status
- Fully covered
- Status
- Coming soon
- Status
- Not applicable
Cells marked "not applicable" are genuinely N/A, MMA fighters don't have lineups, Formula 1 doesn't have bookmaker lines on the public sportsbooks we normalize. "Coming soon" means the upstream exists and the data type will land once the sport clears our production bar.
Integrate in 3 lines
Use the official SDK or hit the REST API directly. Every response is the same envelope.
import { BigBallSportsClient } from '@bigballsdata/sdk';
const client = new BigBallSportsClient('bbs_live_...');
// Today's live Premier League matches with real-time scores + odds
const matches = await client.matches.list({ sport: 'football' });
for (const m of matches.data) {
console.log(m.scores?.value, m.confidence);
}Leagues we serve today
Five flagship leagues with end-to-end coverage on the free plan. More on the way as we validate each one against production traffic.
Football (Soccer)
EPL · La Liga · Bundesliga · Ligue 1 · Serie A
Scores · Odds · Lineups · Stats · Standings · Events
Basketball (NBA + NCAAB)
NBA
Scores · Odds · Lineups · Stats · Injuries · Historical
Baseball
MLB
Scores · Odds · Stats · Standings · Events · Historical
American Football (NFL + NCAAF)
NFL · NCAAF
Scores · Odds · Stats · Standings · Historical
Ice Hockey
NHL
Scores · Stats · Standings · Events · Historical
Cricket
IPL · BBL · The Hundred · internationals
On the roadmap. Tell us if you need it.
MMA
UFC · Bellator · ONE Championship
On the roadmap. Tell us if you need it.
Formula 1
Race weekends · qualifying · session results
On the roadmap. Tell us if you need it.
16+ sportsbooks, one normalized schema
Moneyline, spread, and totals across the major US and global books, returned in the same envelope as every other field. No per-bookmaker quirks to map.
- Pinnacle
- DraftKings
- FanDuel
- BetMGM
- Bovada
- Kalshi
- Polymarket
- Unibet
- Matchbook
- Bodog
- BetOnline
- LowVig
- William Hill
- Caesars
- BetUS
- MyBookie
- + more
Bookmaker names are trademarks of their respective owners and are shown only to indicate which books we normalize. Big Balls Sports Data is not affiliated with, endorsed by, or sponsored by any of them.
Frequently asked
- What is a sports data API?
- A sports data API is an HTTP service that returns structured data about live games, scores, odds, lineups, and statistics in a machine-readable format. Developers use it to power scoreboards, fantasy apps, betting platforms, and analytics dashboards without scraping vendor sites or maintaining feed integrations directly.
- How do I get real-time sports data?
- Big Balls Sports Data exposes both REST and WebSocket surfaces. REST is best for polled reads of scores, odds, standings, and stats (~200ms typical round trip). The WebSocket feed at wss://api.bigballsdata.com/live pushes score updates, odds movement, and lineup confirmations as they happen (sub-50ms latency on the Pro plan), with rooms scoped by sport, league, and match.
- What sports does Big Balls Sports Data cover?
- Football (Soccer), EPL, La Liga, Bundesliga, Ligue 1, Serie A, plus NBA, MLB, NFL + NCAAF, and NHL, with end-to-end coverage on the free plan across scores, odds, lineups, stats, standings, and events. Additional leagues land as we validate each one against production traffic.
- How much does a sports data API cost?
- Big Balls Sports Data has a free tier at 1,000 req/day with no credit card required (2,000 if you sign up with GitHub). Paid plans add higher daily caps, real-time odds without delay, and webhook delivery. See the pricing page for current rates.
How we compare
Honest head-to-heads against the major sports data APIs. Where we win, where they win, and how to pick the right tool.
Big Balls Sports vs API-Sports
Unified schema, WebSocket feed, confidence scoring. Where we differ from the long-running multi-sport REST API.
Read comparisonBig Balls Sports vs The Odds API
We do more than odds. They do odds in extreme depth. When each tool wins.
Read comparisonBig Balls Sports vs SportsDataIO
Schema-first self-serve vs enterprise data feeds. Adoption flow, pricing, and feature deltas.
Read comparisonBig Balls Sports vs The Rundown
Full sports data vs betting-focused odds. When line-movement depth matters and when it does not.
Read comparisonBig Balls Sports vs Sportradar
Developer-first self-serve vs the industry incumbent. Pricing, licensing, and adoption flow compared.
Read comparisonBig Balls Sports vs Sportmonks
Multi-sport unified schema vs football-first developer API. Where coverage and schema design differ.
Read comparisonBig Balls Sports vs BallDontLie
Multi-sport platform vs NBA-only free hobby API. When each is the right pick.
Read comparisonBig Balls Sports vs football-data.org
Real-time scores, player data, and odds without stacking add-ons, plus every other sport under one schema.
Read comparisonBig Balls Sports vs API-Football
One key across every sport and spike-tolerant limits vs a deep, cheap, football-only daily cap.
Read comparisonBig Balls Sports vs ESPN API
Documented, versioned, supported endpoints vs undocumented ones that can break without notice.
Read comparisonBig Balls Sports vs OpticOdds
Odds plus the whole game on a self-serve free tier vs enterprise odds infrastructure priced by sales.
Read comparisonBig Balls Sports vs MySportsFeeds
A commercial-usable free tier with real-time scores vs per-league, non-commercial add-on math.
Read comparisonBig Balls Sports vs TheSportsDB
Real-time scores, odds, and Elo predictions under one structured schema, where we differ from the free crowdsourced database.
Read comparisonBig Balls Sports vs OddsJam
Odds plus the whole game on a self-serve free tier vs an enterprise odds API gated behind a sales call.
Read comparisonPrice it at your scale
Drag the sliders to your real numbers. See the plan you'd need and what the same usage costs on a raw-data sports API.
10,000 requests/day on Big Balls Sports Data. A full matchup page is 1 call here vs 8 raw calls per sport on BallDontLie.
Big Balls Sports Data
$99/mo
Growth plan · All sports, one subscription
BallDontLie
$119.97/mo
3 × GOAT
Save $20.97/mo($251.64/yr)
AND skip building the assembly layer.
- Pre-assembled matchup responses (you call and join ~8 endpoints yourself)
- Elo predictions and win probabilities
- xG shot maps
- Player headshots
- Confirmed lineups with formations
- Cross-sport unified schema (each sport is a separate integration AND subscription)
Request volume
1 Big Balls call = 8 raw BallDontLie calls to assemble the same matchup page — per sport. At your scale that's 10,000 vs 240,000 requests/day.
Raw BallDontLie pricing covers the data subscription only. The assembly layer, intelligence features, and cross-sport unification are engineering time you build and maintain.
BallDontLie price = raw data subscription only. Assembly layer, intelligence features, and cross-sport unification are not included at any tier. Pricing verified 2026-05-28. Priced per sport, rate-limited per minute. Each sport is a separate subscription.
Simple pricing. Pay only for what you use.
Upgrade when you need more. Downgrade any time.
Free
Any sport
- ✓Any sport, current + most-recent season
- ✓1,000 requests / day (2,000 with GitHub)
- ✓Scores, standings, stats
Solo
1 sport, your pick
- ✓1 sport, your pick — see live depth below
- ✓All historical seasons joined to results
- ✓10,000 requests / day
- ✓Change your sport once every 30 days
Trio
3 sports, your pick
- ✓Any 3 sports, your pick — see live depth below
- ✓All historical seasons joined to results
- ✓25,000 requests / day
- ✓Change your 3 sports (as one set) once every 30 days
Edge
All sports
- ✓Full stats depth for cricket, hockey, baseball, NFL, and NBA — soccer expanding
- ✓Match predictions and fair-price edges — expanding sport by sport
- ✓Play-by-play for hockey, NFL, and soccer — NBA shot-tracking coming online
- ✓Derived odds intelligence — consensus, fair price, divergence, and line movement
- ✓100,000 requests / day
Pro
All sports
- ✓Everything in Edge
- ✓WebSocket / real-time push
- ✓Priority support + SLA
- ✓200,000 requests / day
- ✓Licensed raw odds board (coming, once the redistribution license lands)
* Sustained high-volume usage may require an Enterprise plan. Contact us to discuss.