Skip to content
datasportsAPI

No. 08 · Bat & ball · Fixture sport

BaseballPitch by pitch, inning by inning.

MLB, NPB, KBO and more: inning state, every pitch with Statcast type and speed, umpire crews and ballpark weather.

08Bat & ball
Baseball15 endpoints · fixtures

Scouting report

What you get for Baseball

Baseball goes down to the pitch. Each at-bat lists its pitches with the Statcast pitch type, release speed, zone and outcome, and the count after every throw. A live game holds the inning state: half, count, outs and which bases are occupied.

At-bats carry the home side's win probability before and after, the umpire crew comes with positions and years of experience, and the ballpark weather arrives as an observation and a forecast. Postseason games link to their series.

First request

Every baseball match in play, one call.

The live board filtered to baseball: each match with its score, status and clock. The same request in four forms; pick yours.

  1. 1Create a key in the dashboard. Free gives you 1,000 requests a day during the beta.
  2. 2Put it in DATASPORTSAPI_API_KEY so the SDKs and the dsa command find it.
  3. 3Call /v2/livescores?sport=baseball.
curl -H "Authorization: Bearer dsa_live_…" \
  "https://api.datasportsapi.com/v2/livescores?sport=baseball"

The catalog

Baseball, endpoint by endpoint

Its own detail first, then the shared spine every fixture sport answers on. Each row opens the endpoint’s reference page.

All 116 endpoints

Where baseball goes deeper

5 endpoints with detail specific to the sport.

The shared spine

10 endpoints that behave the same for every fixture sport.

  1. GETLive scores/v2/livescoresReturns every live fixture across all sports, or a single sport’s in-play board when ?sport= is given.All plans
  2. GETFixtures by date/v2/fixturesLists the fixtures that start on a given UTC date.All plans
  3. GETFixture/v2/fixtures/{id}Everything we hold on one fixture.All plans
  4. GETEvents/v2/fixtures/{id}/eventsThe match’s incidents in chronological order, oldest first: goals, cards, substitutions, period markers and added-time announcements.All plans
  5. GETStatistics/v2/fixtures/{id}/statisticsTeam statistics for the match, organised by period and by category.All plans
  6. GETHead to head/v2/fixtures/{id}/h2hThe two teams’ head-to-head record as tallied by the source, seen from this fixture’s home / away point of view.All plans
  7. GETStandings/v2/leagues/{id}/standingsLeague tables for a single season.All plans
  8. GETTeam/v2/teams/{id}Returns a team’s profile — sport, country, venue, colours, logo, gender, whether it is a club or a national team, kind (team / individual / pair), manager and founding date (foundedOn, pres…All plans
  9. GETLeague/v2/leagues/{id}Returns a league’s profile: its tier (where it sits in the national pyramid), gender, the reigning champion with its title count, the clubs holding the most titles, the divisions directly a…All plans
  10. GETSearch/v2/searchA single search over teams (individual competitors included), players, managers, referees, leagues, fixtures, venues, racing series and races.All plans

What comes back

Pitches, as served

A stolen-base attempt, then a cutter that ends the at-bat on a fielder's choice, with speed, zone and runners.

GET/v2/fixtures/{id}/at-bats/{atBatId}/pitchesPro + Business

Sample from the docs, trimmed with …

GET /v2/fixtures/{id}/at-bats/{atBatId}/pitches
{ "data": [
    { "kind": "steal", "number": 0, "at": "2026-10-18T00:12:56.000Z", "pitchType": null, "outcome": null, "endsAtBat": false,
      "balls": 0, "strikes": 0, "outs": 2, "runners": [ { "player": { "id": 9311, "name": "Chandler Simpson" }, "fromBase": 1, "toBase": 1, "out": false } ], … },
    { "kind": "pitch", "number": 1, "at": "2026-10-18T00:13:10.000Z",
      "pitcher": { "id": 9301, "name": "Shawn Armstrong", … }, "batter": { "id": 9302, "name": "Junior Caminero", … },
      "pitcherHand": "right", "batterHand": "right", "pitchType": "cutter", "pitchName": "Cutter", "speedKmh": 144.84, "zone": 5,
      "outcome": "fieldersChoice", "outcomeCode": "oFC", "endsAtBat": true, "balls": 0, "strikes": 0, "outs": 3,
      "homeScore": 0, "awayScore": 0, "hit": false, "bunt": false, "wildPitch": false, "passedBall": false,
      "doublePlay": false, "triplePlay": false, "overturned": false,
      "battedBall": { "trajectory": "groundBall", "hardness": "medium" },
      "runners": [ { "player": { "id": 9302, "name": "Junior Caminero" }, "fromBase": 0, "toBase": 1, "out": false },
                   { "player": { "id": 9311, "name": "Chandler Simpson" }, "fromBase": 1, "toBase": null, "out": true } ],
      "fielders": [] } ],
  "meta": { "atBatId": 70412, "count": 2 } }

Baseball is one query string away.

Swap ?sport=baseball for any other fixture sport and the same code keeps working. Free key, no card.