Skip to content
FastballAPI

Documentation

18 baseball data endpoints over REST and MCP. One key, credits per call.

Your first call

Sign up for a free key (500 credits, no card), swap it in for YOUR_API_KEY, and send this. get_standings costs 2 credits.

Request

curl -X POST https://mcp.fastballapi.com/v1/get_standings \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "season": 2024
}'

Response

json
{
  "season": 2024,
  "standings": [
    {
      "team_id": "19",
      "abbrev": "LAD",
      "display_name": "Los Angeles Dodgers",
      "wins": 98,
      "losses": 64,
      "home_wins": 52,
      "home_losses": 29,
      "away_wins": 46,
      "away_losses": 35,
      "runs_scored": 842,
  ...

First 14 lines. Full response and every field

REST / cURL

POST to /v1/{tool_name} with your params as JSON body. No MCP client needed:

bash
curl -X POST https://mcp.fastballapi.com/v1/list_teams \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY"

With parameters:

bash
curl -X POST https://mcp.fastballapi.com/v1/get_standings \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"season":2024}'

Claude Desktop

Add to your claude_desktop_config.json:

json
{
  "mcpServers": {
    "fastballapi": {
      "url": "https://mcp.fastballapi.com/mcp?key=YOUR_API_KEY"
    }
  }
}

Claude Code

One command:

bash
claude mcp add fastballapi https://mcp.fastballapi.com/mcp?key=YOUR_API_KEY --transport streamable-http

Find the right call

All 18 questions

Endpoints

18 endpoints by category. Each page has parameters, requests in three formats, a full example response and every response field.

Reference

Authentication

Every request requires an API key. Pass it via header or query parameter:

bash
x-api-key: YOUR_API_KEY
# or
Authorization: Bearer YOUR_API_KEY
# or (MCP only)
?key=YOUR_API_KEY

Verify your email, then create an API key from the dashboard. Free accounts get 500 credits.

Base URL

text
https://mcp.fastballapi.com

REST API: POST /v1/{tool} with JSON body. Works with cURL, Python, any HTTP client.

MCP: POST /mcp via Streamable HTTP. Works with Claude Desktop, Claude Code, Cursor, and any MCP client.

Rate limits

Credit balanceRate limit
100 credits or more60 req/min
Under 100 credits10 req/min

The limit is the same on every plan. It is burst protection, not the spend boundary; credits are that, and they are enforced per request. Running low slows you down so you notice before the balance reaches zero.

Error handling

CodeMeaningWhat to do
400Invalid parametersCheck required fields and value types
401Invalid or missing API keyCheck your x-api-key header
402Insufficient creditsTop up your wallet or upgrade your plan
429Rate limit exceededWait and retry (see limits above)
500Server errorRetry with idempotency key. Credits auto-refund on server errors.

Pass x-idempotency-key or x-request-id headers to make retries duplicate-safe.

Data coverage

NCAA Division I baseball (NCAA)

FastballAPI also serves the NCAA. Pass "league": "ncaabase" to any tool that lists it, or connect to https://mcp.fastballapi.com/mcp/ncaabase. What the NCAA data covers.

DataStatusCoverageVolume
Games and box scores
Line scores and every batter's and pitcher's line.
AvailableSee the season tableEvery game, every player
Pitch-by-pitch
Count, pitch type, velocity, location and result for every pitch.
Pitch type and velocity are on 96% or more of each season's pitches, and 99.8% or more from 2020. Automatic balls and strikes are not pitches.
AvailableSee the season tableAbout 295 pitches per game
Plate appearances
Base-out state, result, batted-ball trajectory and location, runs, RE24.
AvailableSee the season tableAbout 76 per game
Win probability
The home team's win probability after each plate appearance, as ESPN computes it.
From 2019 only.
Partial2019 to currentAfter every plate appearance
Odds
Moneyline, run line and total by sportsbook; opening and closing from 2024, the final pregame line before that.
Mostly one book per game since 2024; no player props.
Partial2015 to current4 to 13 books per game to 2023, usually one since
Ratings
Our Elo, before and after every game.
AvailableEvery season loadedEvery team, every game
College baseball
NCAA Division I games with league=ncaabase: the tournament by round since 2010, scores since 2015, box scores and plate appearances (from the scorer's text) for part of each season since 2020, ratings, lines from 2023 (4.7 books a game in 2023 and 4.2 in 2024, one since).
Not every Division I game, and box scores and play-by-play for part of each season only (the college page shows each season). No pitch rows or batted-ball locations.
Partial2010 to currentThe Division I games ESPN carries
Injury report
Each listed player's status, injury and expected return, captured daily.
Daily captures from launch; no history before that.
PartialFrom launchDaily

Coverage describes the datasets FastballAPI supports. Freshness and operational health are tracked separately.

Odds snapshot definitions

opening: The first line a sportsbook posted for the game, as ESPN reports it (from 2024).

closing: The sportsbook's last line before first pitch.

Odds coverage currently documents the books ESPN reports: 4 to 13 books per game from 2015 to 2023, then usually ESPN BET or DraftKings alone. Most games since 2024 have one book. Before 2024, ESPN keeps each sportsbook's final pregame line, stored as the close. From 2024 there are opening and closing lines, usually from one book (ESPN BET, later DraftKings). Daily snapshots before each game from launch.

Response format

REST API

All successful REST responses wrap the result in a data key:

json
{ "data": { "teams": [...], "count": 30 } }

Error responses return:

json
{ "error": "Insufficient credits", "message": "This tool costs 5 credits, you have 2" }

MCP Protocol

MCP responses follow the standard MCP tool result format. The data is returned directly (no data wrapper). Both access methods return identical data, just different envelopes.

Conventions

Seasons: a 4-digit year. Example: 2025.

Game IDs: an ESPN game id, e.g. 401569531 (an ESPN game id; find them with get_games). Get them from get_games or get_schedule.

Team abbreviations: Standard codes (NYY, LAD, BOS (or an ESPN team id); list_teams has them). Use list_teams if unsure.

Pagination: Endpoints use a limit parameter. No cursor or offset. Narrow your filters to get different slices of data.

Credits: Deducted before the request executes. Automatically refunded on server errors. Monthly credits are used first, then wallet balance.

Ready to start?

500 free credits on signup. No credit card required.

Get a free key