Getting Started
Overview
PropSports API is a REST API providing real-time sports data for MLB, NFL, NBA, and NHL. All responses are JSON. All endpoints use GET requests. No API key required on the free tier.
✅ The free tier (MLB, 1,000 req/day) requires no authentication. Just make requests directly.
Authentication
Pass your API key as a header on paid plans:
# With API key (paid plans)
curl https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today \
-H "X-API-Key: your_api_key_here"
# Free tier — no auth needed
curl https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today
Base URL
https://propsports-api.sales-fd3.workers.dev
💡 All endpoints are prefixed by sport: /mlb/, /nfl/, /nba/, /nhl/
Rate Limits
| Plan | Requests/Day | Sports |
| Starter (Free) | 1,000 | MLB only |
| Pro Sport ($9) | 50,000 | 1 sport |
| Full Bundle ($24) | 200,000 | All 4 sports |
| Enterprise | Unlimited | All + custom |
Error Handling
All errors return JSON with an error field:
{
"error": "park param required"
}
// HTTP Status Codes:
200 OK
400 Bad Request (missing param)
404 Not Found (endpoint doesn't exist)
429 Rate Limit Exceeded
500 Internal Server Error
⚾ MLB — Schedule
fetch('https://propsports-api.sales-fd3.workers.dev/mlb/schedule/today')
.then(r => r.json())
.then(({ games }) => console.log(games))
Parameters — /mlb/schedule
| Param | Type | Required | Description |
| date | string | optional | YYYY-MM-DD format. Defaults to today. |
⚾ Statcast
fetch('https://propsports-api.sales-fd3.workers.dev/mlb/statcast/batters?days=14&level=MLB')
.then(r => r.json())
.then(({ batters }) => {
const elite = batters.filter(b => b.barrelPct > 15)
console.log(elite)
})
Parameters
| Param | Type | Required | Description |
| days | integer | optional | Rolling window in days. Default: 14. |
| level | string | optional | MLB, AAA, or AA. Default: MLB. |
Response Fields
| Field | Type | Description |
| avgEV | float | Average exit velocity (mph) |
| l7EV | float | Average EV last 7 days |
| evSpike | float | l7EV minus avgEV — positive = trending up |
| barrelPct | float | Barrel rate percentage |
| hardHitPct | float | Hard hit rate (95+ mph) percentage |
| avgLA | float | Average launch angle (degrees) |
| maxEV | float | Maximum exit velocity in period |
⚾ Weather
fetch('https://propsports-api.sales-fd3.workers.dev/mlb/weather/all')
.then(r => r.json())
.then(({ games }) => {
const windy = games.filter(g => g.weather.windSpeed > 12)
console.log(windy)
})
🏈 NFL — Schedule
fetch('https://propsports-api.sales-fd3.workers.dev/nfl/schedule?week=1&season=2026')
.then(r => r.json())
🏀 NBA — Leaders
fetch('https://propsports-api.sales-fd3.workers.dev/nba/leaders?stat=PTS')
.then(r => r.json())
.then(({ leaders }) => console.log(leaders))
Parameters
| Param | Values |
| stat | PTS, REB, AST, BLK, STL, FG_PCT, FT_PCT, FG3_PCT |
🏒 NHL — Standings
fetch('https://propsports-api.sales-fd3.workers.dev/nhl/standings')
.then(r => r.json())
.then(({ standings }) => console.log(standings))
Ready to build?
Get your free API key and start making requests in minutes.
Get Free API Key →