MLB STATCASTEndpoint in development

MLB Statcast API

Pitch-level Statcast metrics for every MLB plate appearance. 2.1 million pitches loaded across 2023, 2024, and 2025. Barrel rate, xwOBA, exit velocity, launch angle, and bat tracking (2024+), with sprint speed and OAA shipping in a follow-up.

1,000 req/day on the free plan (2,000 with GitHub). No credit card.

2.89M pitches · 2023 / 2024 / 2025 / 2026 · bat tracking from 2024

What you'll get

Three full seasons of pitch-level data, the same metrics Baseball Savant surfaces, joined to the same player_id you use everywhere else in the API.

  • Pitch-level research

    Query 2.89M pitches across 2023, 2024, 2025 and 2026 by pitcher, batter, pitch type, count, and outcome.

  • Barrel + xwOBA dashboards

    Per-batter barrel rate and xwOBA across rolling windows, surfaced cleanly without scraping the raw pitch data yourself.

  • Bat tracking insights

    Bat speed and swing length on every pitch from 2024 forward (MLB started exposing bat tracking that season).

  • Pitcher arsenal profiles

    Pitch-type usage, average velocity, and spin rate by count and game state for any pitcher in the dataset.

  • Projection model inputs

    Three full seasons of granular pitch data: enough for backtest cross-validation without scraping or rate-limiting headaches.

  • Pre-launch integration

    Schema below is the contract. Wire it up now and the endpoint goes live the moment the route lands.

Metrics covered

Status reflects the data load, not the public endpoint, which is in development for all rows.

MetricStatusDescription
barrel_rateliveBarrel-classified batted balls as a fraction of total batted balls. Derived from launch_speed_angle.
xwobaliveExpected weighted on-base average. The Statcast probabilistic outcome model.
exit_velocity_avgliveAverage exit velocity in mph on batted balls in play.
bat_speed_avglive (2024+)Average bat speed in mph at point of contact. Available from 2024 forward; MLB began exposing bat tracking that season.
launch_angle_avgliveAverage launch angle in degrees on batted balls in play.
sprint_speedcomingFeet per second on competitive runs. Roster-level metric, pending ingest expansion.
oaacomingOuts Above Average for defenders. Pending ingest expansion.

Planned endpoint shape

The contract is final. Integrate against it and the endpoint goes live the moment the route lands.

GET /v1/mlb/players/:id/statcast?season=2025

Response shape (preview)json
{
  "data": {
    "player_id": "bb_player_4q7m2tzkrhxa",
    "player_name": "Aaron Judge",
    "season": 2025,
    "plate_appearances": 547,
    "batted_balls": 412,
    "metrics": {
      "barrel_rate": 0.198,
      "xwoba": 0.412,
      "exit_velocity_avg": 95.2,
      "exit_velocity_max": 119.4,
      "bat_speed_avg": 78.6,
      "launch_angle_avg": 14.8,
      "hard_hit_rate": 0.572
    },
    "pitch_types_seen": [
      { "pitch_type": "FF", "count": 1834, "avg_velocity": 94.1 },
      { "pitch_type": "SL", "count": 1102, "avg_velocity": 84.7 }
    ],
    "as_of": "2026-06-XX..."
  },
  "meta": { "cached": false, "cache_age_ms": 0 }
}

SDK call, planned

The SDK call below is the planned shape. Wire it up now, the client method goes live alongside the endpoint.

  • · 2.89M pitches across 2023–2026, queryable per player per season
  • · Same player_id as the rest of the API
  • · Bat tracking included from 2024 forward
Node.js, @bigballsdata/sdk (preview)typescript
import { BigBallSportsClient } from '@bigballsdata/sdk';

const client = new BigBallSportsClient(process.env.BBS_API_KEY!);

// Shape preview, endpoint in development
const statcast = await client.mlb.players.statcast(playerId, { season: 2025 });

console.log('Barrel rate:', statcast.data.metrics.barrel_rate);
console.log('xwOBA:      ', statcast.data.metrics.xwoba);
console.log('Avg EV:     ', statcast.data.metrics.exit_velocity_avg, 'mph');
console.log('Avg bat speed:', statcast.data.metrics.bat_speed_avg, 'mph (2024+ data)');

What will it cost

Free tier matches the rest of the API: 1,000 req/day on the free plan, 2,000 with GitHub connected. No credit card. Paid tiers (Solo / Trio / Edge / Pro) carry forward.

See all plans

Frequently asked

How much Statcast data is loaded?
2.89 million pitches across the 2023, 2024, 2025 and 2026 seasons — 2026 is in progress and includes spring training, the three earlier seasons are complete regular season and postseason. Every plate appearance, every pitch, with the upstream Statcast columns canonicalised into the BBS schema. Bat tracking (bat speed, swing length) is available from 2024 forward because MLB started exposing those columns that season.
When does the public endpoint go live?
The data is loaded; the customer-facing route is in development. We will update this page (and /whats-new) the day the endpoint ships. The schema below is the contract — integrating against it now is safe.
Which metrics will be live at launch?
Barrel rate, xwOBA, exit velocity (avg + max), launch angle, hard hit rate, and bat speed (2024+) land at launch. Sprint speed and Outs Above Average (OAA) are pending a separate ingest pass and ship in a follow-up.
How does this compare to consuming the raw pitch data directly?
Same raw pitch data, delivered as a production API. Our value: canonical schema, no scraping or rate-limit headaches, joined to the same player_id you use in the rest of the API. The public download interfaces are great for one-off CSVs; this endpoint is built for production application code.
Is it on the free tier?
Yes, on the same free tier as the rest of the API (1,000 req/day, 2,000 with GitHub). Paid tiers (Solo / Trio / Edge / Pro) carry forward.

Related APIs

Other APIs you can build with:

Stats reference

Get an API key now

2.89M pitches across the 2023, 2024, 2025 and 2026 seasons are loaded. The endpoint goes live the moment the route ships. Sign up now and your key is ready.