nflmeta
Current-season helpers
client.teams.cap_space(season=2026, team_abbr="NE")
client.games.inactives(22773)
client.injuries.list(season=2026, week=1)
client.teams.injuries("NE", season=2026, week=1)
client.players.injuries("player-key", season=2026)
client.players.resolve(["patrick-mahomes", "josh-allen"])
client.teams.roster("NE", year=2026, count=True)
Use an initialized server-side client. Cap space is a daily estimate; inspect
response.meta["observed_at"] and response.meta["stale"]. Inactive status
not_available does not mean everyone is active. Injury
response.meta["current_reserves"] is current, not historical; distinguish
reported_pending from confirmed and report_status from game_status.
List totals may be None or absent. Request count=True where supported, or use
returned/has_more. Existing live and historical analytics methods are unchanged.
Bulk player resolution accepts 1–100 keys per request. Use returned
requested_player_key and player_key to update your own mapping;
meta["unresolved"] names keys with no match. Only returned player records
count toward your row allowance.
Official Python SDK for the NFLMeta API.
Install
pip install nflmeta
Quickstart
from nflmeta import NFLMetaClient
client = NFLMetaClient(api_key="YOUR_KEY")
team = client.teams.get("PIT", season=2025)
player = client.players.identity("josh-allen-1996")
usage = client.usage.get()
live = client.live_scores.get()
print(team.data["displayName"])
print(player.data["display_name"])
print(usage.data["quota_remaining"])
What The SDK Does
- sends
X-NFLMeta-Keyautomatically when you provideapi_key - preserves the API envelope shape:
data, optionalmeta, plus parsed rate-limit headers - throws typed HTTP errors for common failure cases
- exposes the main public API surfaces as resource clients instead of forcing raw URL construction
- still gives you a low-level
client.get(path, query={...})escape hatch for any route not wrapped yet
Configuration
client = NFLMetaClient(
api_key="YOUR_KEY",
base_url="https://nflmeta.org",
timeout=10.0,
)
You can also pass default headers or a custom transport(url, headers, timeout) callable if you want the SDK to run through your own HTTP layer in tests or internal tooling.
Resource Coverage
The Python SDK wraps the same main surfaces as the TypeScript package:
healthlive_scoresusagemetadataseasonsteamsplayersgamesplaysplayoff_gamesstandingsplayoffssuper_bowlshistoryhall_of_famecontributorsexecutivesstaffcoachesassetsall_star_gamesstats.playersreference
client.live_scores.get()
client.plays.summary(season=2024, group_by="team")
client.plays.leaders(season=2024, role="passer")
client.plays.list(game_id=21390, skip_markers=True)
plays.list is metered per play and the API refuses an unnarrowed request with
400 invalid_request: pass game_id, or player, or season together with one
of week, team or opponent. plays.summary and plays.leaders answer
season-wide questions server-side in tens of rows.
Errors
NFLMetaBadRequestErrorNFLMetaUnauthorizedErrorNFLMetaNotFoundErrorNFLMetaRateLimitErrorNFLMetaTimeoutErrorNFLMetaError
Escape Hatch
raw = client.get("/api/v1/reference/team-colors", query={"limit": 10})
print(raw.data)
The path is resolved against base_url and has to stay there. A URL on another
origin is refused with NFLMetaInvalidUrlError before any header is built,
and a redirect that would leave the origin is refused rather than followed —
your API key travels in the X-NFLMeta-Key header, and urllib forwards every
request header across a cross-origin redirect. Same-origin absolute URLs still
work.
Selective live-score polling
client.live_scores.get(phase="in") # Includes halftime and overtime
client.live_scores.get(game_id=12345)
client.live_scores.get(game_ids="12345,12346") # Comma-separated string
Filters select the current live-score window, not historical games. Only returned games count toward row usage; empty results cost zero rows. Request limits still apply. Poll IDs without phase="in" to receive final scores. These optional arguments require an SDK release containing this change; existing SDK clients can call the filtered REST URL directly.
0.2.0: selected events, historical practice and identity-aware depth charts
Keep returned metadata: unknown distance or attribution is not zero; historical records are not certified pre-kickoff snapshots. Depth-chart identity_status describes identity, not vacancy. Player lookup resolves retained aliases; preserve your own player/Favorites IDs. A one-time Sleeper crosswalk can be requested through support; no public external-ID lookup is provided.
events = client.games.defense_special_teams(11565, limit=100, offset=0)
chart = client.teams.depth_chart("NE")
league_charts = client.depth_charts.list(season=2026, limit=100)
changes = client.depth_charts.changes(team="NE", days=7)
history = client.rosters.list(season=2020, week=2)
practice = client.injuries.list(season=2020, date="2020-09-16")
scores = client.live_scores.get(phase="in", game_ids="22834,22835")
Metadata
Release files for nflmeta 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| nflmeta-0.2.1.tar.gz | 18.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nflmeta-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.0 kB
Release files / nflmeta-0.2.1.tar.gz
| Download URL | nflmeta-0.2.1.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
556ada3a9b24192c656bb44b9e9348fcddc9a98271033f645ec5176a137339c5
|
|
BLAKE2b-256 checksum How to use checksums |
48e5332d852f2279d8293955c09d828c39c1d355f61e458891493724962938e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / nflmeta-0.2.1-py3-none-any.whl
| Download URL | nflmeta-0.2.1-py3-none-any.whl |
|---|---|
| Size | 13.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b9ecfc54a8eede54baae2c12a76039c253044bc91457b0f5dfd0bb04420cd636
|
|
BLAKE2b-256 checksum How to use checksums |
f2267949c8fbc5e70e20112507c82ecd1b2ba37ab8344b25992f25e1bc7f638c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for nflmeta 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.