---
title: "Cross-sport games strip with live scores + odds"
method: GET
path: "/v1/games"
tags: ["nerd"]
---

# Cross-sport games strip with live scores + odds

`GET /v1/games`

## Request

- Base URL: `https://api.bigballsdata.com`
- URL: `https://api.bigballsdata.com/v1/games`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Intelligence endpoint for the top-of-page game ribbon. Sport-scoped
with hard caps (~15-20 games per sport per day). 30s Redis cache.
Legacy alias: `GET /v1/nerd/games` (deprecated, sunset 2026-09-01).

**One of `sport` or `league` is required** (unlike `/v1/matches`, which
defaults to an unfiltered list). `sport` accepts canonical sport slugs
(`american_football`, `basketball`, `football`, ...) and brand aliases
(`nfl`, `nba`, `nhl`, ...). A brand alias narrows to ONE league; a
canonical slug covers every league of that sport, so the two return
different row counts by design. `filters_applied.league` says which
happened: the league name for a brand alias, `null` for a whole sport.

Each game's `sport` field carries the row's canonical sport slug, in
the same vocabulary `?sport=` accepts, so a value taken from a
response can be fed straight back into a request.

`?season=` is **not** supported and returns 400; filter by `?date=`
(a single day or a `:`-separated range) instead.

## Query parameters

- `sport` string
- `league` string
- `date` string
- `tz` string
- `status` 'upcoming' | 'live' | 'final'
- `view` 'nerd'

## Response `200`

ok

- object

## Other responses

- `400`: invalid query; also returned for ?season=, which this endpoint does not support, and when neither ?sport= nor ?league= is given

---

[API](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api.md) · [All operations](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bigballsdata/apis/big-ball-sports-api/revisions/9191fc13fcdb?raw)
