API key Sign in, or get an instant trial key below — no signup required.

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
curl "https://lumify.ai/v1/events?sport=mlb&status=scheduled&include_odds=true&limit=5" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
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"))
TypeScript
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
curl "https://lumify.ai/v1/events?status=inprogress&include_scores=true&sort=status" \
  -H "Authorization: Bearer YOUR_API_KEY"
Python
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"))
TypeScript
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

CallCredits
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 / errors0

Free Tier: 1,000 credits that never expire. Instant trial: 100 credits / 14 days, no signup. Details: /pricing.

FAQ

What is the Lumify Sports Data API?

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.

Which sports are covered?

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.

How fresh are live scores vs odds?

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.

How is this different from traditional sports data APIs?

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.

Do you have a free sports API tier?

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.