canonical: https://jentic.com/apis/balldontlie.io/balldontlie

# balldontlie

balldontlie is a free read-only NBA data API covering teams, players, games, and per-game player statistics. The seven documented endpoints return JSON for every NBA game since 1979, every roster, and every box-score line. The API has no authentication and no usage tier, which makes it a popular choice for sports-themed prototypes, classroom data-science exercises, and lightweight dashboards.

## For AI agents

Look up NBA teams, players, games, and per-game stats from a free unauthenticated read-only API.

## Scope

Does not cover non-NBA sports, betting odds, or live play-by-play feeds - use for NBA team, player, game, and stat lookups only.

## Capabilities

- Look up NBA games by date or season with paginated responses
- Search NBA players by name and retrieve full player records
- List all NBA teams or retrieve a single team's details
- Pull per-player per-game stats for any season since 1979
- Retrieve a specific game's metadata by its numeric ID

## Use cases

### Sports Dashboard or Mini-App

Build a lightweight NBA scoreboard, fantasy helper, or fan dashboard using free data. `/api/v1/games` supports date and season filters, `/api/v1/stats` returns per-player per-game lines, and `/api/v1/teams` returns the league directory. Because the API is unauthenticated, the dashboard can ship as a static site that fetches client-side.

Example prompt: Fetch GET `/api/v1/games`?dates[]=2026-04-15 and render the day's scores in a dashboard.

### Data Science and Modelling

Use balldontlie to pull historical box scores into a notebook for player projection modelling, fantasy lineup optimisation, or classroom statistics exercises. `/api/v1/stats` accepts season and per-player filters and paginates through the full historical record. Because there is no auth, scripts can run on shared machines without secret management.

Example prompt: Page through GET `/api/v1/stats`?seasons[]=2024&player_ids[]=237 and write the rows to a CSV for downstream modelling.

### AI Agent Integration via Jentic

An agent built on Jentic can answer NBA-related natural language questions by selecting the right balldontlie endpoint based on intent. Because the API is unauthenticated, no vault setup is required, and the agent can call the operation directly through Jentic API Directory.

Example prompt: Search Jentic for 'find an nba player by name', load the schema for GET `/api/v1/players`, and execute it with search=Curry.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/api/v1/games` | List NBA games with date and season filters |
| GET | `/api/v1/players` | Search NBA players |
| GET | `/api/v1/teams` | List all NBA teams |
| GET | `/api/v1/stats` | Per-game player box-score stats |

## Key resources

- **Games** — List and retrieve specific NBA games with date and season filters
- **Players** — Search for players by name and retrieve specific player records
- **Teams** — List all NBA teams or retrieve a single team
- **Stats** — Per-player, per-game box-score stats with season and player filters

## Why Jentic

- **Setup:** Wiring balldontlie by hand means hand-coding GET calls against the games, players, teams, and stats endpoints and their date, season, and player-id array filters. Through Jentic you install once, import the balldontlie API from the API Directory, and your agent calls it with no credential to store at all.
- **Permission scoping:** balldontlie is unauthenticated and read-only across its seven GET endpoints, so scoping is by operation: limit the agent to the operations it needs, such as GET `/api/v1/games` and GET `/api/v1/players.` There is nothing destructive to withhold, since every operation only reads NBA data.
- **Credential handling:** balldontlie is unauthenticated, so there is no credential to store and your Jentic One instance forwards the call without any secret. Nothing sensitive enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'find NBA games on a specific date' or 'look up a player by name', and Jentic returns the matching balldontlie operation with its parameter schema so the agent skips reading the docs.

## Related APIs

- **Bandsintown** — Concert and event data API; useful when building event-themed apps alongside sports data
- **Bacon Ipsum** — Placeholder text generator for filling in commentary fields in sports prototypes
- **Backendless API** — BaaS that can persist user picks, favourites, and notifications for a sports app

## FAQ

### What authentication does the balldontlie API use?

None. The OpenAPI spec declares no security schemes and the public endpoints accept unauthenticated requests. Through Jentic, the operation appears in the catalogue and can be called without any vault setup.

### Can I get historical NBA stats through the balldontlie API?

Yes. GET `/api/v1/stats` accepts seasons[] and player_ids[] filters and paginates through every regular-season game line since 1979. Pair it with GET `/api/v1/games` to attach game metadata.

### What are the rate limits for the balldontlie API?

balldontlie is a free public service. The OpenAPI spec does not declare explicit limits but the maintainers ask developers to be reasonable; cache responses where possible and batch requests with the seasons[] and player_ids[] arrays rather than calling per-row.

### How do I find a player by name through Jentic?

Search Jentic for 'find an nba player by name', load the schema for GET `/api/v1/players`, then execute with the search query parameter set to the player's last name. No credentials are required.

### Is the balldontlie API free?

Yes. balldontlie is free to use with no API key required and no published paid tier. It is community-maintained, so SLAs are best-effort.

### Can I limit what my agent is allowed to do with the balldontlie API?

Yes. Because you run Jentic One yourself, your own rules decide which balldontlie operations the agent may call, so you can allow only the endpoints it needs, such as GET `/api/v1/games` and GET `/api/v1/players`, and withhold the rest. Every balldontlie operation is a read-only GET across its seven endpoints, so scoping is purely about which lookups the agent can reach, not about destructive actions. The API is unauthenticated, so there is no credential to grant or withhold, and the agent simply cannot invoke any operation you have not permitted.
