Featured league example · not aggregate coverage
MLB
single-league example · response shape, not coverage
inning · statushome · awaylinescore[]baseball data hub
MLB data behind one API: live scores with inning-by-inning linescores, run-line and totals odds, confirmed starting pitchers, and per-player box scores. Pitch-level data (exit velocity, barrel classification, expected wOBA) is loaded and not yet served.
Aggregate sport hub · choose a league before league-specific detail calls
250 req/day free (500 with GitHub). No credit card.
MLB · 2026 season · regular season + postseason
The MLB API page goes deeper on lineups, at-bat events, and the pitch-level dataset. For pitch velocity, exit velocity and expected outcomes, see /mlb-api#pitch-data. See the MLB API →
Featured league example · not aggregate coverage
single-league example · response shape, not coverage
inning · statushome · awaylinescore[]37 seasons are on record, back to 1990 — 85,849 finished games you can query today. One route serves the full span. These figures are measured from the customer-facing routes listed below, so this page cannot silently drift from the product.
| Archive | Route | Seasons | Reaches back to | Finished games |
|---|---|---|---|---|
| Major League Baseball | /v1/matches | 37 | 1990 – 2026 | 85,849 |
Edge and Pro reach everything listed above. Solo and Trio reach five seasons. Free covers the current season.
Unified schema
Canonical IDs, league keys, status and timestamps travel with the row. The hub describes shared fields; each league authority documents its own depth.
No featured-league field is promoted to a sport-wide guarantee.
Event surface
Event granularity differs by competition. Discover a match and league first, then use that authority’s event contract rather than assuming one featured feed applies everywhere.
/v1/matches/:id/events?sport=baseballHome runs, strikeouts, walks, RBIsfree/v1/stored/matches/:id/lineupsStarting lineups + pitcher matchupsedge/v1/players/:id/stats?sport=baseballPer-season player statsfreeWhat you can build
Each concept points to a real league authority, guide or reference. The phone mockups are product patterns, not claims that every league supplies identical depth.
baseball pattern 01
1 · inning · status2 · home · away3 · linescore[]Embed real-time MLB scores with inning-level linescores.
Explore MLB →baseball pattern 02
1 · inning · status2 · home · away3 · linescore[]Probable and confirmed starting pitchers as soon as MLB posts them.
Explore MLB →baseball pattern 03
1 · inning · status2 · home · away3 · linescore[]Per-player box scores and season aggregates in one feed.
Explore MLB →baseball pattern 04
1 · inning · status2 · home · away3 · linescore[]Moneyline, run-line, and totals odds with against-the-spread splits.
Explore MLB →baseball pattern 05
1 · inning · status2 · home · away3 · linescore[]Division and league standings with games-back and win percentage.
Explore MLB →baseball pattern 06
1 · inning · status2 · home · away3 · linescore[]Home runs, strikeouts, walks, and RBIs as they happen.
Explore MLB →baseball pattern 07
1 · inning · status2 · home · away3 · linescore[]3,009,091 pitch-level rows across 2023-2026 — pitch velocity and spin, exit velocity, launch angle, barrel classification, expected outcomes. Held, not yet served; see /mlb-api#pitch-data.
Explore MLB →MLB odds: live lines and the archive: MLB Odds API: Live and Historical.
League directory
League pages own seasons, participants, examples and measured depth. This hub owns discovery across them.
| League authority | Role | Next step |
|---|
Coverage strength
Counts below describe published route rows on this hub, not a promise that every league fills every field.
League authorities
Published routes
Build patterns
FAQ answers
On the gateway at api.bigballsdata.com. Authenticate with the bearer token from /dashboard/keys.
| Method | Path | Returns | Plan |
|---|---|---|---|
| GET | /v1/matches?sport=baseball&league=mlb | Live + scheduled MLB games with inning linescores | Free |
| GET | /v1/standings?sport=baseball&league=mlb | Division + league standings (W-L, GB, win %) | Free |
| GET | /v1/matches/:id/odds?sport=baseball | Moneyline, run line, totals across 16+ books | Edge |
| GET | /v1/matches/:id/events?sport=baseball | Home runs, strikeouts, walks, RBIs | Free |
| GET | /v1/stored/matches/:id/lineups | Starting lineups + pitcher matchups | Edge |
| GET | /v1/players/:id/stats?sport=baseball | Per-season player stats | Free |
| GET | /v1/teams/:id/form | Recent W/L form | Free |
| GET | /v1/injuries | Injury reports (coming soon) | Coming soon |
One row per capability, not per field per endpoint. Season spans are counted from rows that are actually populated, and each capability names the simplest endpoint that returns it.
| Capability | Free | Solo | Trio | Edge | Pro | Endpoint |
|---|---|---|---|---|---|---|
| At-bats | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Caught stealing | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Doubles | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Grounded into double play | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Hit by pitch | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Hits | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Home runs | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Intentional walks | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Plate appearances | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Runs | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Runs batted in | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Sacrifice flies | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Sacrifice hits | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Stolen bases | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Strikeouts | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Total bases | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Triples | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Walks | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Capability | Free | Solo | Trio | Edge | Pro | Endpoint |
|---|---|---|---|---|---|---|
| Batters faced | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Batters hit by pitch (pitching) | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Earned runs | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Games started | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Hits allowed | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Home runs allowed | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Losses | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Outs recorded | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Runs allowed | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Saves | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Strikeouts (pitching) | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Walks allowed | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Wild pitches | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Wins | — | PENDING | PENDING | PENDING | PENDING | /v1/scores |
| Capability | Free | Solo | Trio | Edge | Pro | Endpoint |
|---|---|---|---|---|---|---|
| Current Elo rating | — | PENDING | PENDING | PENDING | PENDING | /v1/teams/{id}/elo |
| Elo rating history | — | PENDING | PENDING | PENDING | PENDING | /v1/teams/{id}/elo |
Measured against production on 2026-09-13. A capability appears here only when it has rows, an endpoint that returns it, and a source we may both serve and quote.
Every baseball stat field the API returns today — 64 in total, grouped by how they are produced. Each group carries its own freshness, because a sport is rarely uniformly current.
Written after the game ends — not a live in-game feed. Last ingested 2026-09-16.
Fields (59)
ERA, RBIs, Air Outs, At Bats, Batting Average, Balks, Batters Faced, Blown Saves, Caught Stealing, Doubles, Earned Runs, Errors, Fielding Assists, Fielding Chances, Fielding %, Fly Outs, Innings Pitched, Games Started, Ground Outs, Grounded Into Double Play, Hit Batsmen, Hit by Pitch, Hits, Hits/At Bats, Hits Allowed, Holds, Home Runs, Home Runs Allowed, Inherited Runners, Inherited Runners Scored, Intentional Walks, Left on Base, Line Outs, Losses, On-Base %, Outs Recorded, Pitch Count, Pitches, Pitches/Strikes, Plate Appearances, Pop Outs, Putouts, RBI, Runs, Runs Allowed, Sacrifice Flies, Sacrifice Hits, Saves (pitching), Slugging %, Stolen Bases, Strikeouts, Strikeouts Pitching, Strikes, Total Bases, Triples, Walks, Walks Allowed, Wild Pitches, Wins
Written after the game ends — not a live in-game feed. Last ingested 2026-09-16.
Fields (5)
Batting, Fielding, Pitching, Records, Score
We build what people actually ask for. If a field you need is not on this page, tell us — requests are how we decide what to add next.
Player availability
Injury, lineup and participant availability vary by league and season. Missing rows stay missing; the hub does not borrow another league’s records.
Check the selected league authority and response timestamp before presenting a status as current.
Next up
Each league publishes its own schedule and its own season boundaries. Call the league you selected and read the status and kickoff on the rows it returns, rather than inferring a season from this hub.
GET /v1/leaguesChoose a real league key
/v1/matches?sport=baseball&league=mlbKeep league + season
GET /v1/matches/{id}Traverse canonical IDs
From response to product
This is visibly scoped to MLB, single-league example · response shape, not coverage; it demonstrates the shared envelope without claiming that league represents all baseball.
Featured league example
single-league example · response shape, not coverage
inning · statushome · awaylinescore[]{
"data": [
{
"id": "canonical-id-from-response",
"sport": "baseball",
"league": "selected-league-key",
"status": "finished",
"home": {
"name": "Home participant"
},
"away": {
"name": "Away participant"
},
"score": {
"home": null,
"away": null
}
}
],
"meta": {
"example_scope": "MLB · single-league example · response shape, not coverage",
"note": "Shape example; request the API for current values."
}
}baseball resources
Every card is a real destination. League authorities remain separate from supporting product and documentation routes.
Real API example
The request deliberately omits a featured league when the route supports sport-wide discovery. Select a returned league key before league-specific calls.
curl -H "Authorization: Bearer $BBS_API_KEY" "https://api.bigballsdata.com/v1/matches?sport=baseball&league=mlb"{
"data": [
{
"id": "canonical-id-from-response",
"sport": "baseball",
"league": "selected-league-key",
"status": "finished",
"home": {
"name": "Home participant"
},
"away": {
"name": "Away participant"
},
"score": {
"home": null,
"away": null
}
}
],
"meta": {
"example_scope": "MLB · single-league example · response shape, not coverage",
"note": "Shape example; request the API for current values."
}
}import { BigBallSportsClient } from '@bigballsdata/sdk';
const client = new BigBallSportsClient(process.env.BBS_API_KEY!);
const games = await client.matches.list({ sport: 'baseball', league: 'mlb' });
for (const g of games.data) {
// home and away are objects, not strings.
console.log(g.home.name, 'vs', g.away.name, '-', g.status);
}MCP
An agent should discover baseball leagues, select one explicitly, then traverse matches and players by returned canonical IDs.
get_leaguessport: baseballget_matchesleague: selected keyget_match_detailsmatch_id: returned UUIDData freshness
The hub never turns a single-league example into a current sport-wide claim, and it states no season of its own.
Source: League response
Source: Match response
Source: Dataset response
Source: Static label
Plan decision
Each row preserves its league or sport scope and resolves against the endpoint plan registry when that route has a canonical entry.
| Endpoint | Scope | Minimum plan |
|---|---|---|
| /v1/matches?sport=baseball&league=mlb | League-specific | free |
| /v1/standings?sport=baseball&league=mlb | League-specific | free |
| /v1/matches/:id/odds?sport=baseball | Sport/shared | edge |
| /v1/matches/:id/events?sport=baseball | Sport/shared | free |
| /v1/stored/matches/:id/lineups | Sport/shared | edge |
| /v1/players/:id/stats?sport=baseball | Sport/shared | free |
| /v1/teams/:id/form | Sport/shared | free |
| /v1/injuries | Sport/shared | Coming soon |
Founder pricing
Prices and included dimensions come from the shared billing manifest; league coverage remains documented on each authority page.
100 requests per minute and 250 per day, free — the highest per-minute burst of any free sports API we checked. Burst is what matters when something asks several questions in a row and waits on each answer.
Connect your account to Claude, ChatGPT, Cursor, Perplexity or any other MCP-compatible tool and ask for baseball data in conversation — scores, standings, player stats and Elo ratings, with no API key to paste and no code to write. Your plan and limits carry over exactly as they do here.
Connect your AI tool →250 req/day free (500 with GitHub). Production starts at $49/mo. Live WebSocket push on Pro+.
Frequently asked
Yes. It covers scores, inning linescores, standings, lineups, and box-score stats. There is a free tier; pricing lists what each plan covers. Odds require the Edge plan ($149/mo) or higher. Injury reports are coming soon. Free keys get 250 req/day (500 with GitHub). No credit card.
Same data, same endpoints — this page is the broad entry point, and /mlb-api is the league-specific deep dive with field-level docs on lineups, at-bat events, and the pitch-level dataset. Every league we cover is baseball = MLB today, so both pages serve the identical /v1/matches?sport=baseball surface.
Yes. Probable pitchers surface in the lineups endpoint as soon as MLB confirms them, typically the morning of the game; final lineups confirm closer to first pitch.
The events endpoint surfaces at-bat-level outcomes (home runs, strikeouts, walks, RBIs) and is live on the free tier. For pitch-by-pitch analytics, 3,009,091 pitches are loaded and not yet served — see the next answer and /mlb-api#pitch-data.
3,009,091 pitches across the 2023, 2024, 2025 and 2026 seasons are loaded, measured 2026-10-14: pitch velocity and spin, exit velocity, launch angle, barrel classification, expected weighted on-base average, bat speed and swing length. No public endpoint reads it yet. /mlb-api#pitch-data lists every field with its measured row count.
REST cache window is 15 seconds during live games (~200ms typical round trip). WebSocket push is on the Pro plan.