Data
Sports Data API — Scores, Schedules, Odds & Intelligence
One agent-ready sports API for schedules, live scores, multi-book odds, and explainable bet intelligence — structured JSON you can reason over, not scrapes or opaque feeds.
Coverage
Discover sports and seasons programmatically, then filter every other endpoint with stable slugs:
- GET /v1/sports — catalog of sport slugs
- GET /v1/seasons — season windows (current_only=true)
- GET /v1/teams / GET /v1/players — entity lookups
- GET /v1/events — the schedule and live board
Intelligence (confidence / rationale) is live for MLB, NFL, NCAAF, tennis, FIFA World Cup soccer, and MLS. Other sports still expose schedules, scores, and odds where ingested — check available and docs coverage tables rather than assuming every league has every layer.
Sports API / sports data API intent lives here. Live scores and schedules are sections of this page — not separate thin URLs. Deep odds markets live on /sports-odds-api.
Schedules
List events with sport, league, status, and date filters. Historical lookbacks are capped at 90 days per request. Pagination uses cursor-style after_id / limit.
Common filters: sport, league, status (scheduled / inprogress / final), date or from/to, plus include_odds / include_scores to collapse round trips.
Live scores
Three ways to keep a board fresh:
- GET /v1/events?status=inprogress&include_scores=true — discover live games with scores inlined
- GET /v1/events/{id}/score — lightweight poll (~15s cache while live)
- GET /v1/events/{id}/stream — SSE push (event: score) or signed webhooks
Scores include participants, period_label, and clock when available. Keep API keys server-side — see the live scoreboard use case for a cloneable demo.
Odds
Moneyline, spread, and totals across nine sportsbooks on the same event IDs — plus line-movement history. Default single-book calls use Pinnacle (1 credit); bookmaker=all is 2 credits.
Full sportsbook list, market shape, and history examples: Sports Odds API. Embed odds on event detail with ?include_odds=true.
Intelligence & stats
Lumify splits Data from judgment:
- GET /v1/events/{id}/stats — raw, reproducible aggregates (soccer, MLB, tennis singles today). No scoring or narrative.
- GET /v1/events/{id}/intelligence — confidence, signals, rationale / predictive overlays where the sport is migrated.
- GET /v1/events/{id}/splits — public ticket% vs handle% (MLB/NBA/NHL/NFL in-season).
Agents that need “why,” not just “what,” call intelligence on the same IDs they already use for schedules and scores.
Examples
Today’s MLB schedule with odds inlined:
curl "https://lumify.ai/v1/events?sport=mlb&status=scheduled&include_odds=true&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
from lumify import Lumify client = Lumify(api_key="YOUR_API_KEY") page = client.events.list( sport="mlb", status="scheduled", include_odds=True, limit=5, ) for event in page["events"]: print(event["id"], event["name"], event.get("odds"))
import { Lumify } from "@lumifyai/sdk"; const client = new Lumify({ apiKey: "YOUR_API_KEY" }); const { events } = await client.events.list({ sport: "mlb", status: "scheduled", includeOdds: true, limit: 5, }); events.forEach(e => console.log(e.id, e.name, e.odds));
Live games with scores:
curl "https://lumify.ai/v1/events?status=inprogress&include_scores=true&sort=status" \
-H "Authorization: Bearer YOUR_API_KEY"
live = client.events.list( status="inprogress", include_scores=True, sort="status", ) for event in live["events"]: print(event["id"], event["name"], event.get("period_label"))
const { events: live } = await client.events.list({ status: "inprogress", includeScores: true, sort: "status", }); live.forEach(e => console.log(e.id, e.name, e.period_label));
SDKs & MCP
Official clients: pip install lumify-sdk · npm i @lumifyai/sdk. Hosted Streamable-HTTP MCP at https://lumify.ai/mcp exposes the same surface as tools (list_events, get_live_score, get_odds, get_intelligence, …) with per-call credit metering.
Free POST /v1/estimate / MCP estimate_cost before spending. Agent setup: /docs/ai.
For agents: machine-readable twin at /sports-data-api.md.
Pricing
| Call | Credits |
|---|---|
| Most successful GETs (events, score, intelligence, …) | 1 |
| Multi-book odds (bookmaker=all or a list) | 2 |
| Compound include_odds / include_intelligence | +1–2 |
| available: false / errors | 0 |
Free Tier: 1,000 credits that never expire. Instant trial: 100 credits / 14 days, no signup. Details: /pricing.
FAQ
A single REST + MCP surface for schedules, live scores, teams/players, multi-book odds, betting splits, raw /stats, and explainable /intelligence. One event graph — agents do not reconcile three vendors.
Schedules, scores, and odds across major US and global sports (MLB, NBA, NHL, NFL, NCAAF, NCAAB, tennis, soccer, and more via GET /v1/sports). Intelligence is live today for MLB, NFL, NCAAF, tennis, FIFA World Cup soccer, and MLS — other leagues may have data and odds without intelligence yet.
Scores refresh about every 1 minute (SSE/webhooks for push). Odds ingest about every 30 minutes. Use the Sports Odds API page for book/market detail.
Many feeds optimize for raw breadth. Lumify is built for agents: hosted metered MCP, instant trial keys, free cost estimates, and structured intelligence (confidence, signals, rationale) on the same IDs as schedules and scores.
Yes — Free Tier includes 1,000 credits that never expire (20 req/min). Instant trial keys (100 credits, 14 days) need no signup. Most successful calls cost 1 credit. See pricing.
Start with the Sports Data API
Create a free key — or use an instant trial key with no signup — and list today’s events in under a minute.