30+ live endpoints for scores, lineups, Statcast, odds, standings, weather, and more. Official sources. Clean JSON. Starts at $0.
Pick any endpoint below and see the real response format — no mystery, no surprises.
# Statcast batter data — last 14 days fetch('https://propsports-api.sales-fd3.workers.dev /mlb/schedule/today') # Filter for elite barrel rate const { batters } = await res.json() const elite = batters .filter(b => b.barrelPct > 15) .sort((a,b) => b.evSpike - a.evSpike)
{
"level": "MLB",
"days": 14,
"count": 287,
"batters": [
{
"id": "592450",
"name": "Aaron Judge",
"team": "NYY",
"pa": 48,
"hrs": 6,
"avgEV": 95.4,
"l7EV": 98.6,
"evSpike": +3.2,
"barrelPct": 18.2,
"hardHitPct": 56.1,
"avgLA": 19.4,
"maxEV": 116.8,
"bbe": 41
},
// ... 286 more batters
]
}
# Get all live MLB games right now const res = await fetch( '.../.../mlb/games/live' ) const { count, games } = await res.json() # Works for every sport: # /nfl/games/live # /nba/games/live # /nhl/games/live
{
"count": 4,
"games": [
{
"gamePk": 745891,
"status": {
"abstractGameState": "Live",
"detailedState": "In Progress"
},
"teams": {
"away": { "team": { "name": "Texas Rangers" }, "score": 3 },
"home": { "team": { "name": "Baltimore Orioles" }, "score": 2 }
},
"linescore": {
"currentInning": 5,
"isTopInning": true
}
}
]
}
# Weather for every park today const res = await fetch( '.../.../mlb/schedule/today' ) const { games } = await res.json() # Find windy outdoor games const windy = games .filter(g => !g.weather.indoor) .filter(g => g.weather.windSpeed > 12) .sort((a,b) => b.weather.windSpeed - a.weather.windSpeed)
{
"date": "2026-03-31",
"games": [
{
"gamePk": 745891,
"away": "Texas Rangers",
"home": "Baltimore Orioles",
"park": "Camden Yards",
"weather": {
"indoor": false,
"parkFactor": 105,
"windSpeed": 16,
"windDir": 212,
"windLabel": "OUT",
"temp": 68
}
}
]
}
# NBA scoring leaders const res = await fetch( '.../.../nba/leaders?stat=PTS' ) const { leaders } = await res.json() # Supports: PTS, REB, AST, # BLK, STL, FG_PCT
{
"stat": "PTS",
"leaders": [
{
"PLAYER_ID": 203999,
"PLAYER": "Nikola Jokić",
"TEAM": "DEN",
"GP": 62,
"PTS": 27.4,
"REB": 12.8,
"AST": 10.2,
"FG_PCT": 0.584
},
// ... top 25 players
]
}
# NHL conference standings const res = await fetch( '.../.../nhl/standings' ) const { standings } = await res.json() # Or grab goal leaders: # /nhl/leaders?category=goals
{
"standings": [
{
"teamName": { "default": "Panthers" },
"teamAbbrev": { "default": "FLA" },
"conferenceAbbrev": "E",
"divisionAbbrev": "ATL",
"wins": 48,
"losses": 19,
"otLosses": 6,
"points": 102,
"pointPctg": 0.699
}
]
}
Every endpoint pulls from official league APIs and Baseball Savant Statcast — the same data ESPN, The Athletic, and FanGraphs use. You get it clean, fast, and cheap.
MLB Stats API, NHL Stats API, NBA Stats, ESPN, and Baseball Savant Statcast. Not scraped, not stale. Live data from the actual source.
Stop managing 4 vendors with 4 rate limits and 4 invoices. One base URL, one API key. /mlb /nfl /nba /nhl — all unified.
Competitors charge $99–$299/mo. We charge $24 for everything. We built this for PropBetEdge.ai — the infrastructure is paid for. You benefit.
Each sport has full docs, endpoint reference, and live examples.
Can't remember which endpoint has HR data? Just search it.
No credit card. No contract. Just sports data when you need it.