spotrac.com APIspotrac.com ↗
Access NFL player contract data, salary cap figures, team rosters, and bonus breakdowns for all 32 teams via the Spotrac API on Parse.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/1063a484-f52f-4db5-a50f-b26705848e2f/list_nfl_teams' \ -H 'X-API-Key: $PARSE_API_KEY'
List all 32 NFL teams with their slugs. Use team slugs as input for get_team_roster.
No input parameters required.
{
"type": "object",
"fields": {
"teams": "array of objects with name, slug, and url for each NFL team"
},
"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.com API
The Spotrac API exposes NFL salary and contract data across 4 endpoints, covering all 32 teams and individual player deals with fields for cap hit, base salary, bonuses, and dead cap figures. The get_player_contract endpoint returns structured contract tables with headers and rows, while list_nfl_teams and get_team_roster give you the slugs and player IDs needed to navigate the full dataset programmatically.
Endpoints and What They Return
The API has four endpoints that chain together naturally. list_nfl_teams returns an array of all 32 NFL team objects — each with a name, slug, and url — and those slugs feed directly into get_team_roster. The roster endpoint accepts a team_slug (required) and an optional year integer, returning each player's name, player_id, player_slug, and profile URL. Those IDs and slugs then unlock get_player_contract.
Contract Data Structure
get_player_contract is the most data-dense endpoint. It accepts a numeric player_id (required) and an optional player_slug. The response includes the player's name, team, and position — though both team and position may be empty when they cannot be parsed from the source page — along with a tables array. Each table object carries a title, a headers array, and a rows array of arrays, covering structures like annual cap hits, base salary breakdowns, signing bonuses, roster bonuses, and dead cap figures across contract years.
Searching for Players
search_players accepts a free-text query (e.g. 'Patrick Mahomes') and returns matching player objects with name, player_id, position, and url. Note that results can include trending or popular players from the search page alongside genuine name matches, so downstream logic should verify hits before treating them as authoritative. This endpoint is the right entry point when you have a player name but no ID or team context.
- Build a salary cap tracker that aggregates cap hit fields across all 32 rosters for a given year
- Compare base salary, signing bonus, and dead cap figures across players at the same position using contract table rows
- Automate alerts when a player's contract data changes by polling get_player_contract on a schedule
- Populate a fantasy football tool with current roster composition and contract status per team
- Identify players with high dead cap figures by parsing the dead cap table returned in get_player_contract
- Cross-reference search_players results with get_team_roster to resolve player IDs from name-only inputs
- Analyze year-over-year contract escalations by requesting get_team_roster for multiple years and joining on player_id
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 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.
Does Spotrac have an official developer API?+
What contract fields does get_player_contract actually return?+
tables array where each element has a title, a headers array, and a rows array of arrays. Depending on the player's contract page, tables can cover annual cap hits, base salaries, signing bonuses, roster bonuses, option bonuses, and dead cap figures. The team and position fields at the top level may be empty strings when the page layout does not expose them in a parseable form.