← Home ⚾ MLB API 🏈 NFL API 🏀 NBA API 🏈 NHL API
Sports APIs
⚡ PropSports API — From $49/mo ⚾ MLB Edge Suite — From $29/mo
Real Estate APIs
🏠 PropData Core — From $49/mo 🏆 PropData Pro Stack — From $149/mo 🏠 PropData API ↗
📖 Docs 💳 Pricing Get API Key →
v4.2 — Updated June 2026

Overview

PropSports API is a REST API delivering real-time sports data for MLB, NFL, NBA, and NHL. 47 endpoints. All responses are JSON. All requests use GET. Cloudflare Workers edge network — sub-100ms globally.

What makes PropSports different from every other sports API: we own our Statcast data pipeline and we generate our own Poisson model odds from it. No DraftKings. No FanDuel. No sportsbook dependency. The /mlb/odds/model/* family of endpoints has no equivalent anywhere else at this price point.

47 endpoints MLB · NFL · NBA · NHL JSON only GET requests CORS enabled Cloudflare edge
New in v4.2: No free tier. RapidAPI tiers now map to correct daily limits (Basic 50K, Pro 200K, Ultra 500K). Demo key is evaluation-only MLB, 20 req/hr global cap.

Authentication

Pass your API key in the X-API-Key request header or as a ?key= query param. The demo key works without any header for MLB evaluation.

cURL — authenticated
# Header auth (recommended)
curl https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today \
  -H "X-API-Key: your_api_key_here"

# Query param auth (also works)
curl https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today?key=your_api_key_here

# Demo key — MLB eval only, 20 req/hr global cap
curl https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today?key=psa_demo_propsports2026
JavaScript
const BASE = 'https://propsports-api.sales-fd3.workers.dev';
const KEY  = 'your_api_key_here';

const data = await fetch(`${BASE}/mlb/schedule/today`, {
  headers: { 'X-API-Key': KEY }
}).then(r => r.json());

console.log(data.games);
Python
import requests

BASE = "https://propsports-api.sales-fd3.workers.dev"
KEY  = "your_api_key_here"

r = requests.get(f"{BASE}/mlb/schedule/today", headers={"X-API-Key": KEY})
data = r.json()
print(data["games"])

Base URL & Headers

Base URL
https://propsports-api.sales-fd3.workers.dev
HeaderValueNotes
X-API-Keyyour_keyRequired for NFL, NBA, NHL and paid MLB access
Content-TypeNot requiredAll responses are JSON regardless
OriginAnyCORS enabled — all origins allowed
💡 All endpoints return Cache-Control: public, max-age=N. Live game endpoints cache for 10–30s. Statcast leaderboards cache for 900s. Factor this into polling intervals.

Rate Limits

PlanDaily RequestsSportsAPI KeysPrice
Demo20 req/hr (global cap)MLB onlyShared public key$0
Basic50,000All 41$49/mo
Pro200,000All 43$99/mo
Ultra500,000All 410$249/mo
Mega/EnterpriseUnmeteredAll 4 + customUnlimited$1,500+/mo

Daily limits reset at midnight UTC. Rate limit exceeded returns 429 with a JSON error body.

🚫 No free tier. The demo key (psa_demo_propsports2026) is a shared evaluation key subject to a global 20 req/hr cap across all callers. It is not suitable for production. Subscribe at Basic $49/mo for your own key with 50K req/day.

Errors & Status Codes

All errors return a JSON body with an error field, an optional hint, and links to docs and pricing.

Error response shape
{
  "error":   "Active paid RapidAPI subscription required.",
  "hint":    "Subscribe at rapidapi.com/team/propdata-propdata-default",
  "docs":    "https://propsports.proptechusa.ai/docs.html",
  "pricing": "https://propsports.proptechusa.ai/pricing.html"
}
StatusMeaning
200OK
400Bad request — missing or invalid parameter
401Invalid or missing API key
402No active paid subscription (RapidAPI callers)
403Your plan does not include this sport or endpoint
404Endpoint not found — check the path
429Daily rate limit or demo hourly cap exceeded
500Internal server error — upstream API failure

Demo Key

The shared demo key lets you evaluate MLB response shapes before subscribing. It is intentionally limited.

Demo key
psa_demo_propsports2026
ConstraintValue
Sports coveredMLB only
Rate limit20 req/hr — global across all demo callers
SLANone — shared key may be exhausted at peak hours
Production useNot allowed
AttributionPropSports API must be credited

RapidAPI

PropSports API is also available on RapidAPI. Subscription tier maps directly to your daily limit.

RapidAPI links
# Team / Hub page
https://rapidapi.com/team/propdata-propdata-default

# Direct API listing
https://rapidapi.com/propdata-propdata-default/api/propsports
RapidAPI TierDaily RequestsMaps To
BASIC50,000Basic plan
PRO200,000Pro plan
ULTRA500,000Ultra plan
💡 RapidAPI callers are authenticated via X-RapidAPI-User and X-RapidAPI-Subscription headers injected by RapidAPI's proxy. Your X-API-Key header is not required when calling through RapidAPI. Any unauthenticated or unpaid caller receives 402.
⚡ Proprietary — No Competitor Offers This

GET /mlb/odds/model

GET/mlb/odds/model

All PropBetEdge Poisson model odds for today. Grouped by market. Generated from owned Statcast data — no DraftKings, no FanDuel dependency. Refreshed 6× daily: 8AM, 10AM, 12PM, 2PM, 5PM, 8PM CT.

ParamTypeRequiredDescription
marketstringoptionalFilter by market: hr, totalbases, hits, strikeouts, rbi, runs
playerstringoptionalFilter by player name substring. e.g. Soto
directionstringoptionalOVER or UNDER
Response
{
  "date": "2026-06-09",
  "source": "PropBetEdge Poisson Model",
  "model": "Statcast xSLG + barrel% + EV allowed + park factor",
  "total": 184,
  "markets": {
    "hr": [ ... ],
    "totalbases": [ ... ],
    "hits": [ ... ]
  },
  "top_value": [
    {
      "player_name": "Aaron Judge",
      "market": "hr",
      "line": 0.5,
      "direction": "OVER",
      "expected_stat": 0.38,
      "implied_prob": 0.314,
      "odds_fmt": "+310"
    }
  ]
}

GET /mlb/odds/model/top

GET/mlb/odds/model/top

Top OVER value plays for today ranked by expected stat. Returns only positive-odds plays (implied prob < 50%). The fastest way to surface model edges.

ParamTypeRequiredDescription
limitintegeroptionalMax results. Default: 20. Max: 200.
marketstringoptionalFilter to one market. Default: all markets.
JavaScript
const plays = await fetch(
  'https://propsports-api.sales-fd3.workers.dev/mlb/odds/model/top?limit=10',
  { headers: { 'X-API-Key': KEY } }
).then(r => r.json());

plays.plays.forEach(p => {
  console.log(`${p.player_name} ${p.market} OVER ${p.line} → ${p.odds_fmt}`);
});

GET /mlb/odds/model/player

GET/mlb/odds/model/player

All model markets for a single player. Returns HR, total bases, hits, strikeouts, RBI, and runs in one call.

ParamTypeRequiredDescription
namestringrequiredPlayer name substring. e.g. Soto or Aaron Judge
cURL
curl "https://propsports-api.sales-fd3.workers.dev/mlb/odds/model/player?name=Soto" \
  -H "X-API-Key: your_key"

GET /mlb/odds/hr

GET/mlb/odds/hr

Home run props from DraftKings and FanDuel, merged and ranked by best line. No sportsbook key required.

ParamTypeRequiredDescription
namestringoptionalFilter by player name substring
directionstringoptionalOVER or UNDER
Response
{
  "date": "2026-06-09",
  "market": "home_runs",
  "dk_count": 72,
  "fd_count": 68,
  "count": 86,
  "source": "DraftKings + FanDuel",
  "results": [
    {
      "player": "Aaron Judge",
      "market": "hr",
      "line": 0.5,
      "direction": "OVER",
      "best_book": "DraftKings",
      "best_odds": 310,
      "best_odds_fmt": "+310",
      "all_books": {
        "DraftKings": { "odds": 310, "odds_fmt": "+310" },
        "FanDuel":   { "odds": 290, "odds_fmt": "+290" }
      }
    }
  ]
}

GET /mlb/odds/totalbases

GET/mlb/odds/totalbases

Total bases props. DK + FanDuel merged. Same response shape as /mlb/odds/hr. Params: name, direction.

GET /mlb/odds/hits

GET/mlb/odds/hits

Hits props. DK + FanDuel merged. Params: name, direction.

GET /mlb/odds/strikeouts

GET/mlb/odds/strikeouts

Pitcher strikeout props. DK + FanDuel merged. Params: name, direction.

GET /mlb/odds/rbi

GET/mlb/odds/rbi

RBI props. DK + FanDuel merged. Params: name, direction.

GET /mlb/odds/all

GET/mlb/odds/all

All book prop markets (HR, total bases, hits, strikeouts) in a single response. Grouped by market key. Optional name filter applies to all markets.

GET /mlb/odds/player

GET/mlb/odds/player

All book markets for a single player. ?name=Soto returns HR, total bases, hits, and strikeouts from DK + FanDuel.

ParamTypeRequired
namestringrequired

GET /mlb/odds

GET/mlb/odds

Game-level MLB odds from ESPN. Spread, over/under, moneyline for each game today.

GET /mlb/schedule/today

GET/mlb/schedule/today

Full MLB slate for today. Hydrated with probable pitchers, venue, teams, and linescore. Source: MLB Stats API.

Response shape
{
  "date": "2026-06-09",
  "games": [
    {
      "gamePk": 747892,
      "gameDate": "2026-06-09T18:10:00Z",
      "status": { "abstractGameState": "In Progress" },
      "teams": {
        "away": { "team": { "name": "New York Yankees" }, "score": 4,
                  "probablePitcher": { "fullName": "Gerrit Cole" } },
        "home":  { "team": { "name": "Boston Red Sox" }, "score": 2,
                  "probablePitcher": { "fullName": "Brayan Bello" } }
      },
      "venue": { "name": "Fenway Park" }
    }
  ]
}

GET /mlb/schedule

GET/mlb/schedule

Schedule for any date.

ParamTypeRequiredDescription
datestringoptionalYYYY-MM-DD. Defaults to today ET.

GET /mlb/games/live

GET/mlb/games/live

All MLB games currently in progress with live linescore. Returns an empty array when no games are live.

GET /mlb/lineups

GET/mlb/lineups

Confirmed batting lineups when posted. Probable pitcher + lineup array for both teams.

ParamTypeRequiredDescription
datestringoptionalYYYY-MM-DD. Defaults to today ET.

GET /mlb/game/:gamePk/linescore

GET/mlb/game/:gamePk/linescore

Inning-by-inning linescore for any game. gamePk from /mlb/schedule.

GET /mlb/game/:gamePk/boxscore

GET/mlb/game/:gamePk/boxscore

Full boxscore. Hitting and pitching lines for both teams including all standard stats.

GET /mlb/game/:gamePk/plays

GET/mlb/game/:gamePk/plays

Play-by-play. Returns most recent N plays.

ParamTypeRequiredDescription
limitintegeroptionalNumber of recent plays to return. Default: 20.

GET /mlb/player/:id/stats

GET/mlb/player/:id/stats

Season stats by MLB player ID.

ParamTypeRequiredDescription
groupstringoptionalhitting (default) or pitching
seasonintegeroptional4-digit year. Defaults to current season.

GET /mlb/player/:id/gamelog

GET/mlb/player/:id/gamelog

Game-by-game log for any player. Full split history per appearance.

GET /mlb/statcast/batters

GET/mlb/statcast/batters

PropTechUSA owned Statcast leaderboard. 150 active batters aggregated nightly from Baseball Savant. The most comprehensive public Statcast endpoint available at any price point.

FieldTypeDescription
avgEVfloatAverage exit velocity (mph)
maxEVfloatMaximum exit velocity in season
hardHitPctfloatHard hit rate — 95+ mph
barrelPctfloatBarrel rate percentage
xBA / xSLG / xwOBAfloatExpected BA, SLG, wOBA from Statcast
sprintSpeedfloatSprint speed ft/s
l7HR / l7EVfloatLast-7-day HR count and average EV
evSpikefloatl7EV minus season avgEV — positive = trending up
hrStreakintegerConsecutive games with HR
gamesWithoutHRintegerConsecutive games without HR
vsRHPobjectHR, PA, avgEV vs right-handed pitchers
vsLHPobjectHR, PA, avgEV vs left-handed pitchers
batsstringL, R, or S
📈 TTL: 900s. This endpoint caches for 15 minutes. Statcast data is updated nightly from Baseball Savant.

GET /mlb/statcast/pitchers

GET/mlb/statcast/pitchers

PropTechUSA owned Statcast for 200+ qualified pitchers. EV allowed, barrel rate, hard hit rate, average and recent velo, velo drop detection, pitch mix, HR rate, and sample size.

FieldTypeDescription
avgEVAllowedfloatAverage EV allowed this season
barrelRateAllowedfloatBarrel rate allowed %
hrsAllowedintegerHR allowed this season
paPerHRfloatPA per HR allowed — lower = more homer-prone
avgVelofloatAverage fastball velocity
recentVelofloatRecent 3-start velo average
veloDownbooleanTrue if recent velo significantly below season avg
pitchMixobjectPitch type percentages
sampleSizeintegerPA in dataset

GET /mlb/weather

GET/mlb/weather

Real-time weather for a single ballpark. Indoor parks (Tropicana, Rogers Centre, Globe Life, Chase, LoanDepot, Minute Maid, American Family) return "indoor": true.

ParamTypeRequiredDescription
parkstringrequiredExact park name e.g. Fenway Park, Yankee Stadium
Response
{
  "indoor": false,
  "park": "Fenway Park",
  "parkFactor": 104,
  "windSpeed": 12.4,
  "windDir": 220,
  "windLabel": "SW",
  "temp": 71
}

GET /mlb/weather/all

GET/mlb/weather/all

Weather for every ballpark hosting a game today (or on the specified date). One call for all parks.

ParamTypeRequired
datestringoptional — YYYY-MM-DD

GET /mlb/umpires

GET/mlb/umpires

Home plate umpire assignments for today's games. Combine with your own K-rate data for umpire angle plays.

ParamTypeRequired
datestringoptional — YYYY-MM-DD

GET /nfl/schedule

GET/nfl/schedule

NFL schedule. Defaults to current week. Returns spread, over/under, venue, and score for each game. Source: ESPN.

ParamTypeRequiredDescription
weekintegeroptionalWeek number 1–18
seasonintegeroptional4-digit year

GET /nfl/games/live

GET/nfl/games/live

All NFL games currently in progress.

GET /nfl/odds

GET/nfl/odds

Game-level NFL odds. Spread, over/under, home and away moneyline. Filters out games without odds.

GET /nba/schedule/today

GET/nba/schedule/today

Today's NBA games. Playoff-aware — tries the playoff schedule first, falls back to regular season. Returns status, score, period, clock, team logos, spread, and over/under.

GET /nba/games/live

GET/nba/games/live

All NBA games with status.type.state === "in".

GET /nba/game/:id/boxscore

GET/nba/game/:id/boxscore

Full boxscore with computed True Shooting % (TS%) and Usage Rate (USG%) per player. Most APIs return raw stats and leave the math to you. We do the math.

Response shape (player)
{
  "name": "Jayson Tatum",
  "points": 34, "rebounds": 9, "assists": 6,
  "fgMade": 12, "fgAttempts": 22, "fgPct": 54.5,
  "tsPct": 68.4,   // True Shooting % — computed
  "usgPct": 34.1,  // Usage Rate % — computed
  "minutes": 38, "plusMinus": 12
}

GET /nba/game/:id/plays

GET/nba/game/:id/plays

Play-by-play with event classification: score, miss, rebound, turnover, foul, block, steal, sub, timeout.

ParamTypeRequired
limitintegeroptional — default 50

GET /nba/game/:id/lineup

GET/nba/game/:id/lineup

Current 5-man lineup via substitution walk through the play-by-play. ~95% accurate during live games. Returns both teams' current on-court players with headshots and jerseys.

GET /nba/game/:id/shotchart

GET/nba/game/:id/shotchart

Shot chart with x/y coordinates. Made/missed indicator, player, team, period, and clock. Coordinate system: ESPN-native, x 0–50, y 0–47.

GET /nba/game/:id/winprob

GET/nba/game/:id/winprob

Live win probability curve by play. homeWinPct at each play event.

GET /nba/leaders

GET/nba/leaders

League leaders by stat category. Top 25 returned.

ParamTypeRequiredValues
statstringoptionalPTS, REB, AST, STL, BLK, FG_PCT, FT_PCT, FG3_PCT. Default: PTS
seasonstringoptionalFormat: 2025-26. Default: current.

GET /nba/odds

GET/nba/odds

Game-level NBA odds. Spread, over/under, moneyline.

GET /nhl/schedule/today

GET/nhl/schedule/today

Today's NHL games with TV broadcast info, venue, scores, and game state. Source: NHL Stats API.

GET /nhl/games/live

GET/nhl/games/live

All NHL games with gameState of LIVE or CRIT (overtime/close game).

GET /nhl/standings

GET/nhl/standings

Full conference and division standings. Source: NHL Stats API.

ParamTypeRequired
datestringoptional — YYYY-MM-DD

GET /nhl/leaders

GET/nhl/leaders

Skater leaders by category. Top 25 returned.

ParamTypeRequiredValues
categorystringoptionalgoals (default), assists, points
seasonstringoptionalFormat: 20252026. Default: current.

GET /nhl/player/:id/stats

GET/nhl/player/:id/stats

Season stats for any NHL player by NHL Stats API player ID. Returns goals, assists, points, plusMinus, pim, shots, shootingPctg, and more.

GET /nhl/odds

GET/nhl/odds

Game-level NHL odds. Puck line, over/under, moneyline from ESPN.

Ready to build?

Subscribe to Basic at $49/mo. Key in your inbox in 60 seconds. Cancel anytime.

Get API Key — From $49/mo → Also on RapidAPI ↗

Questions? support@proptechusa.ai · 1-888-784-3881