Discover/Spotrac API
live

Spotrac APIspotrac.com

Access NFL player contracts, cap hits, roster salary data, and team information from Spotrac via a structured JSON API. Covers all 32 teams.

Endpoint health
verified 4d ago
get_player_contract
search_players
list_nfl_teams
get_team_roster
4/4 passing latest checkself-healing
Endpoints
4
Updated
6d ago

What is the Spotrac API?

The Spotrac API provides structured access to NFL salary cap and contract data across 4 endpoints, covering all 32 teams and individual player financials. Use get_player_contract to retrieve year-by-year cap hits, base salaries, signing bonuses, and dead cap figures for any player, or get_team_roster to pull a full team's salary cap roster for a given year. Player and team identifiers are consistent across endpoints, making it straightforward to join roster data with individual contract details.

Try it

No input parameters required.

api.parse.bot/scraper/1063a484-f52f-4db5-a50f-b26705848e2f/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/1063a484-f52f-4db5-a50f-b26705848e2f/list_nfl_teams' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace spotrac-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Spotrac NFL API — salary cap and contract data for all 32 NFL teams."""
from parse_apis.spotrac_nfl_api import Spotrac, PlayerNotFound

client = Spotrac()

# List all NFL teams — single-page, returns 32 teams.
for team in client.teams.list(limit=5):
    print(team.name, team.slug)

# Construct a team by slug and list its roster for a given year.
chiefs = client.team("kansas-city-chiefs")
player = chiefs.players.list(year=2024, limit=1).first()
if player:
    print(player.name, player.player_id, player.player_slug)

# Drill into a player's full contract from the roster.
if player:
    contract = player.contract()
    print(contract.name, contract.player_id)
    for table in contract.tables[:2]:
        print(table.title, table.headers[:4])

# Search for a player across all sports by name.
result = client.players.search(query="Travis Kelce", limit=3).first()
if result:
    print(result.name, result.player_id)

# Typed error handling for a missing player.
try:
    bad = client.playercontracts.get(player_id="9999999")
    print(bad.name)
except PlayerNotFound as exc:
    print(f"Player not found: {exc.player_id}")

print("exercised: teams.list / team.players.list / player.contract / players.search / playercontracts.get")
All endpoints · 4 totalmissing one? ·

List all 32 NFL teams with their slugs. Each team slug is the stable identifier used to fetch rosters and other team-scoped data. Returns the full league regardless of parameters.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "teams": "array of team objects with name, slug, and url"
  },
  "sample": {
    "data": {
      "teams": [
        {
          "url": "https://www.spotrac.com/nfl/buffalo-bills",
          "name": "Buffalo Bills",
          "slug": "buffalo-bills"
        },
        {
          "url": "https://www.spotrac.com/nfl/kansas-city-chiefs",
          "name": "Kansas City Chiefs",
          "slug": "kansas-city-chiefs"
        }
      ]
    },
    "status": "success"
  }
}

About the Spotrac API

Team and Roster Coverage

The list_nfl_teams endpoint returns all 32 NFL teams, each with a name, slug, and url. The slug field (e.g. kansas-city-chiefs, buffalo-bills) is the stable identifier passed to get_team_roster as the required team_slug parameter. get_team_roster accepts an optional year integer, letting you pull historical roster salary pages rather than only the current season. Each player object in the response includes name, player_id, player_slug, and url.

Player Contract Details

get_player_contract returns the most detailed financial data in the API. The response includes a tables array where each table has a title, headers, and rows — representing breakdowns such as cap hit by year, base salary, roster bonuses, option bonuses, signing bonuses, and dead cap. The position field returns the player's abbreviated position (e.g. QB, WR). Passing both player_id and the optional player_slug together ensures faster resolution without a redirect lookup; the player_id alone is sufficient if the slug is unavailable.

Player Search

search_players accepts a query string (player name) and returns matching records with name, player_id, position, and url. Results may include trending players alongside direct name matches and cover all sports tracked by Spotrac, not just NFL — so callers should filter by position or cross-reference with get_team_roster data when NFL-only results are required.

Identifiers and Cross-Endpoint Usage

The player_id returned by both search_players and get_team_roster is the same numeric string used as the required input to get_player_contract. This makes the typical workflow: search or fetch a roster to get IDs, then call get_player_contract per player for the full financial breakdown.

Reliability & maintenanceVerified

The Spotrac API is a managed, monitored endpoint for spotrac.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when spotrac.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official spotrac.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a salary cap tracker that aggregates cap hits across all 32 teams using get_team_roster and get_player_contract.
  • Compare dead cap figures for released players by parsing the dead cap table returned in get_player_contract.
  • Retrieve historical roster salary data for a specific team-year by passing the year parameter to get_team_roster.
  • Look up signing bonus and option bonus schedules for free agency research using the tables array in contract responses.
  • Power a fantasy sports tool with real contract values and cap hit data tied to player positions from search_players.
  • Identify players with the highest base salary in a given year by pulling roster data and joining with individual contract breakdowns.
  • Monitor year-over-year changes in a player's cap hit by querying get_player_contract across multiple seasons.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Spotrac have an official developer API?+
Spotrac does not publish a public developer API or developer documentation as of now. The data is only available through their website at spotrac.com.
What financial fields does `get_player_contract` return?+
The endpoint returns a tables array containing named tables — typically covering cap hit, base salary, signing bonuses, roster bonuses, option bonuses, and dead cap — each with headers and year-by-year rows. The exact tables present vary by player and contract structure. Top-level fields also include name, team, position, player_id, and player_slug.
Does `search_players` return only NFL players?+
No. search_players covers all sports tracked by Spotrac, which includes NFL, NBA, MLB, NHL, and others. Results include position and url, which can be used to filter for NFL-specific entries. For a confirmed NFL-only player list, use get_team_roster with a known team_slug from list_nfl_teams.
Does the API cover NBA, MLB, or NHL contract data?+
Not currently. The API endpoints are scoped to NFL teams, rosters, and contracts. search_players may return non-NFL athletes in results, but there are no roster or contract endpoints for other leagues. You can fork the API on Parse and revise it to add endpoints covering other sports that Spotrac tracks.
Is there a way to get contract data for all players on a team in a single call?+
Not in a single call. get_team_roster returns player IDs and slugs for the full roster, but individual contract financials require a separate get_player_contract call per player. You can batch these calls using the player_id values from the roster response. You can fork the API on Parse and revise it to add a bulk contract endpoint if per-player iteration is too slow for your use case.
Page content last updated . Spec covers 4 endpoints from spotrac.com.
Related APIs in SportsSee all →
nfl.com API
Access real-time NFL data including game schedules, scores, player statistics, team rosters, standings, injury reports, fantasy rankings, and the latest news — all from nfl.com.
pro-football-reference.com API
Access comprehensive NFL data including season schedules, team standings, player statistics, game boxscores, play-by-play details, and player profiles to research teams, players, and game information. Search for specific players and dive into detailed game analysis with boxscore information and minute-by-minute play data.
whoscored.com API
Search for players and teams, then dive deep into their performance metrics, match statistics, and detailed passing data to analyze football games and player abilities. Get comprehensive insights on team performance, individual player stats, and play-by-play event information to power your football analysis and decision-making.
rotowire.com API
Access MLB player news, statistics, projected lineups, and betting props from RotoWire. Search for players by name, retrieve season stats and performance projections, browse weekly lineup predictions, and explore player prop odds across multiple sportsbooks.
fantasypros.com API
Access expert consensus rankings, player projections, average draft position data, injury reports, and the latest player news from FantasyPros. Search by player name or position to retrieve detailed stats, rankings, and expert analysis across all major scoring formats.
draftsharks.com API
Get comprehensive fantasy football insights by accessing redraft and dynasty rankings, player projections, injury histories, team depth charts, and strength-of-schedule analysis. Search player profiles and stay updated with the latest news articles to optimize your draft strategy and roster decisions.
stathead.com API
Search and analyze NFL player performance on a game-by-game basis. Access detailed football statistics — passing, rushing, receiving, and more — filterable by season, team, game type, or statistical thresholds.
statmuse.com API
Get instant access to comprehensive sports statistics, player performance data, and team information across NBA, NFL, MLB, NHL, and more using natural language queries. Search for specific athletes or teams and discover historical sports information with intuitive search suggestions.