Skip to content

Instantly share code, notes, and snippets.

@nntrn
Last active June 27, 2024 21:50
Show Gist options
  • Save nntrn/ee26cb2a0716de0947a0a4e9a157bc1c to your computer and use it in GitHub Desktop.
Save nntrn/ee26cb2a0716de0947a0a4e9a157bc1c to your computer and use it in GitHub Desktop.
List of nfl api endpoints from espn

ESPN API NFL ENDPOINTS

This page is limited to NFL endpoints but can be refashioned for other leagues (i.e. /sports/football/leagues/nfl/ => /sports/baseball/leagues/mlb/)

Parameters

Name Description
season Integer year in which the season started (YYYY)
seasontype 1=pre, 2=regular, 3=post
league_id league Id from
bet_provider_id view under odds

NFL Endpoints

Base URL: sports.core.api.espn.com

NFL TEAMS

Fantasy

Current season and last 3 years

fantasy.espn.com/apis/v3/games/ffl/seasons/:season/segments/0/leagues/:league_id

League History - get all historical data

fantasy.espn.com/apis/v3/games/ffl/leagueHistory/:league_id?seasonId=:season


Detailed API

Leagues: sports.core.api.espn.com/v2/sports/football/leagues/nfl

Athletes: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/athletes/:athlete_id

Teams: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams

Team: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams/:team_id

Plays: sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/plays?limit=300

Depth charts: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams/:team_id/depthcharts

Whitelist dates: sports.core.api.espn.com/v2/sports/football/leagues/nfl/calendar/whitelist

Season: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season

Week: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2020/types/:season_type/weeks/:week

All weeks sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/types/:season_type/weeks

List of games via date-range: site.api.espn.com/apis/site/v2/sports/football/nfl/scoreboard?limit=1000&dates=20200901-20210228

  • add &1577413600 at the end for overriding the cache
  • date range cannot exceed 13 months
  • format for date can be full date or year
    • YYYYMMDD,
    • YYYY

Odds

bet_provider_id:

  • 38=Caesars
  • 31=William Hill
  • 41=SugarHouse
  • 36=Unibet
  • 2000=Bet 365
  • 25=Westgate
  • 45=William Hill (NJ)
  • 1001=accuscore
  • 1004=consensus
  • 1003=numberfire
  • 1002=teamrankings

Win probabilities sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/probabilities?limit=200

Odds: sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/odds

Against-the-spread: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/types/2/teams/:team_id/ats

Futures: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/futures

Head-to-head (game): sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/odds/:bet_provider_id/head-to-heads

Odds records: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/types/0/teams/:team_id/odds-records

Odds history - Game: sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401249063/competitions/401249063/odds/:bet_provider_id/history/0/movement?limit=100

Odds history - Team: sports.core.api.espn.com/v2/sports/football/leagues/nfl/teams/:team_id/odds/:bet_provider_id/past-performances?limit=200

Stats

Positions (enum): sports.core.api.espn.com/v2/sports/football/leagues/nfl/positions?limit=100

QBR Weekly/Game stats: sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/types/2/weeks/:week_num/qbr/10000

Athlete

all active athletes: sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes?active=true

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id/splits?season=2020

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id/gamelog

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id/stats

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id/bio

site.web.api.espn.com/apis/common/v3/sports/football/nfl/athletes/:athlete_id/overview

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/types/2/athletes/:athlete_id/statistics

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2020/types/2/athletes/:athlete_id/projections

sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/competitors/:team_id/roster/:athlete_id/statistics/0

Team

site.api.espn.com/apis/site/v2/sports/football/nfl/teams

site.api.espn.com/apis/site/v2/sports/football/nfl/teams/:team_id

site.api.espn.com/apis/site/v2/sports/football/nfl/teams/:team_id/roster

site.api.espn.com/apis/site/v2/sports/football/nfl/teams/:team_id/schedule{?season,seasontype}

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2020/types/2/teams/:team_id/statistics

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2020/teams/:team_id/projection

sports.core.api.espn.com/v2/sports/football/leagues/nfl/teams/:team_id/odds/1002/past-performances?limit=140

sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/:game_id/competitions/:game_id/competitors/:team_id/roster?season=YYYY

site.api.espn.com/apis/site/v2/sports/football/nfl/teams/3?enable=roster

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams/:team_id/projection

sports.core.api.espn.com/v2/sports/football/leagues/nfl/teams/:team_id/odds/:bet_provider_id/past-performances?limit=200

Leaders

site.api.espn.com/apis/site/v3/sports/football/nfl/leaders{?season,seasontype}

Scoreboard

site.api.espn.com/apis/site/v2/sports/football/college-football/scoreboard{?dates=YYYYMMDD}

Search

site.web.api.espn.com/apis/common/v3/search?region=us&lang=en&query=nfl&limit=5&mode=prefix

site.web.api.espn.com/apis/common/v3/search

site.web.api.espn.com/apis/fantasy/v2/games/ffl/games?dates={YYYYMMDD}-{YYYYMMDD}&pbpOnly=true

News

site.api.espn.com/apis/site/v2/sports/football/nfl/news

Header

site.web.api.espn.com/apis/v2/scoreboard/header?sport=football&league=nfl

https://stmorse.github.io/journal/espn-fantasy-v3.html

Misc

sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes/2/statisticslog

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams/:team_id

sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/:season/teams/:team_id/athletes?limit=200

--

Resources

@TheSeahawksAri
Copy link

Can someone please tell me how to get player stats of all time? Also, do I need an API token or something to use this. I'm really confused, and would really appreciate some help

@mrmikeytj
Copy link

Is there an endpoint to get related players for each play?

In the play by play link (https://cdn.espn.com/core/nfl/playbyplay?xhr=1&gameId=401437654), you can find all the plays for each drive.
Although, in each play, it doesn't really say which players were involved. A few years ago there was another section for each player involved.
This was in the nfl gameday json site that disappeared.

One of the first plays of the linked game above, has this:
{ "sequenceNumber": "5600", "period": { "number": 1 }, "homeScore": 0, "start": { "shortDownDistanceText": "1st & 10", "possessionText": "BUF 25", "downDistanceText": "1st & 10 at BUF 25", "distance": 10, "yardLine": 75, "team": { "id": "2" }, "down": 1, "yardsToEndzone": 75 }, "scoringPlay": false, "clock": { "displayValue": "15:00" }, "type": { "id": "24", "text": "Pass Reception", "abbreviation": "REC" }, "priority": false, "statYardage": 6, "awayScore": 0, "wallclock": "2022-09-09T00:24:04Z", "modified": "2022-09-14T21:05Z", "end": { "shortDownDistanceText": "2nd & 10", "possessionText": "BUF 31", "downDistanceText": "2nd & 10 at BUF 31", "distance": 10, "yardLine": 69, "team": { "id": "2" }, "down": 2, "yardsToEndzone": 69 }, "id": "40143765456", "text": "(15:00) (Shotgun) J.Allen pass short right to S.Diggs to BUF 31 for 6 yards (J.Ramsey)." },

Although, besides the last property (text), it doesn't say who threw the pass, who caught it, where it was caught, how many yards after catch, who tackled, who assisted the tackle, etc. I was hoping it had the player id, stat type id, yardage/stat, etc.

I have noticed the play id (40143765456)
Does this link into another end point somewhere?

@mrmikeytj
Copy link

Cloests thing I've been able to find is this: http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/plays/40143765456?lang=en&region=us

It includes the stat type, and stat yardage:
"id": "40143765456", "sequenceNumber": "5600", "type": { "id": "24", "text": "Pass Reception", "abbreviation": "REC" },
... then a little farther down ...
"statYardage": 6

It also has a participants property.
It doesn't have a referenced player id as I had hoped, though it does have a player reference link:
It is confusing how it includes the athelete's game stat totals within the participants, instead of the totals for this specific play.
{ "athlete": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/athletes/2976212?lang=en&region=us" }, "position": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/positions/1?lang=en&region=us" }, "statistics": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/competitors/2/roster/2976212/statistics/0?lang=en&region=us" }, "stats": [ { "name": "receptions", "displayName": "Receptions", "shortDisplayName": "Receptions", "description": "The total number of receptions.", "abbreviation": "REC", "value": 8, "displayValue": "8" }, { "name": "receivingYards", "displayName": "Receiving Yards", "shortDisplayName": "Rec. Yards", "description": "The total receiving yards.", "abbreviation": "YDS", "value": 122, "displayValue": "122" }, { "name": "receivingTouchdowns", "displayName": "Receiving Touchdowns", "shortDisplayName": "Receiving Touchdowns", "description": "The total number of receiving touchdowns.", "abbreviation": "TD", "value": 1, "displayValue": "1" } ], "order": 2, "type": "receiver" },

The player reference link has the player details:
"id": "2976212", "uid": "s:20~l:28~a:2976212", "guid": "d6ba7023-458c-f59a-4af2-638770067518", "type": "football", "alternateIds": { "sdr": "2976212" }, "firstName": "Stefon", "lastName": "Diggs",

@mrmikeytj
Copy link

So I'm left with these questions:

Why is the result of this play (6 yard pass reception) say this:
"downDistanceText": "2nd & 10 at BUF 31"

Anywhere I can find stat types like air yards? To know how far the ball traveled on an incomplete or completed pass?
Anywhere I can find stat types for offensive and defensive linemen? missed tackles? yards after catch?

@nntrn
Copy link
Author

nntrn commented Sep 28, 2023

@mrmikeytj
Copy link

@nntrn yeah that seems to have a similar layout as this link
http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/plays/40143765456?lang=en&region=us

{ "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/plays/40143765456?lang=en&region=us", "id": "40143765456", "sequenceNumber": "5600", "type": { "id": "24", "text": "Pass Reception", "abbreviation": "REC" }, "text": "(15:00) (Shotgun) J.Allen pass short right to S.Diggs to BUF 31 for 6 yards (J.Ramsey).", "shortText": "Josh Allen Pass Complete for 6 Yds to Stefon Diggs", "alternativeText": "(15:00) (Shotgun) J.Allen pass short right to S.Diggs to BUF 31 for 6 yards (J.Ramsey).", "shortAlternativeText": "Josh Allen Pass Complete for 6 Yds to Stefon Diggs", "awayScore": 0, "homeScore": 0, "period": { "number": 1 }, "clock": { "value": 900, "displayValue": "15:00" }, "scoringPlay": false, "priority": false, "scoreValue": 0, "modified": "2022-09-14T21:05Z", "team": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/teams/2?lang=en&region=us" }, "participants": [ { "athlete": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/athletes/3918298?lang=en&region=us" }, "position": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/positions/8?lang=en&region=us" }, "statistics": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/competitors/2/roster/3918298/statistics/0?lang=en&region=us" }, "stats": [ { "name": "completions/attempts", "displayName": "Completions / Attempts", "shortDisplayName": "COMP/ATT", "description": "The number of passing completions and attempts.", "abbreviation": "COMP/ATT", "value": 0.8387096774, "displayValue": "26/31" }, { "name": "passingYards", "displayName": "Passing Yards", "shortDisplayName": "Pass Yards", "description": "The total passing yards.", "abbreviation": "YDS", "value": 297, "displayValue": "297" }, { "name": "passingTouchdowns", "displayName": "Passing Touchdowns", "shortDisplayName": "Touchdowns", "description": "The total number of passing touchdowns.", "abbreviation": "TD", "value": 3, "displayValue": "3" }, { "name": "interceptions", "displayName": "Interceptions", "shortDisplayName": "INT", "description": "The number of passes thrown that were intercepted by the opposing team.", "abbreviation": "INT", "value": 2, "displayValue": "2" } ], "order": 1, "type": "passer" }, { "athlete": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/athletes/2976212?lang=en&region=us" }, "position": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/positions/1?lang=en&region=us" }, "statistics": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/competitors/2/roster/2976212/statistics/0?lang=en&region=us" }, "stats": [ { "name": "receptions", "displayName": "Receptions", "shortDisplayName": "Receptions", "description": "The total number of receptions.", "abbreviation": "REC", "value": 8, "displayValue": "8" }, { "name": "receivingYards", "displayName": "Receiving Yards", "shortDisplayName": "Rec. Yards", "description": "The total receiving yards.", "abbreviation": "YDS", "value": 122, "displayValue": "122" }, { "name": "receivingTouchdowns", "displayName": "Receiving Touchdowns", "shortDisplayName": "Receiving Touchdowns", "description": "The total number of receiving touchdowns.", "abbreviation": "TD", "value": 1, "displayValue": "1" } ], "order": 2, "type": "receiver" }, { "athlete": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/athletes/3045373?lang=en&region=us" }, "position": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/positions/29?lang=en&region=us" }, "statistics": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/competitors/15/roster/3045373/statistics/0?lang=en&region=us" }, "stats": [ { "name": "totalTackles", "displayName": "Total Tackles", "shortDisplayName": "Tackles", "description": "The total number of tackles.", "abbreviation": "TOT", "value": 6, "displayValue": "6" }, { "name": "sacks", "displayName": "Sacks", "shortDisplayName": "Sacks", "description": "The total number of sacks.", "abbreviation": "SACK", "value": 0, "displayValue": "0" }, { "name": "interceptions", "displayName": "Interceptions", "shortDisplayName": "INT", "description": "The number of passes thrown that were intercepted by the opposing team.", "abbreviation": "INT", "value": 0, "displayValue": "0" } ], "order": 3, "type": "tackler" } ], "probability": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/probabilities/40143765456?lang=en&region=us" }, "wallclock": "2022-09-09T00:24:04Z", "drive": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/events/401437654/competitions/401437654/drives/4014376541?lang=en&region=us" }, "start": { "down": 1, "distance": 10, "yardLine": 75, "yardsToEndzone": 75, "downDistanceText": "1st & 10 at BUF 25", "shortDownDistanceText": "1st & 10", "possessionText": "BUF 25", "team": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/teams/2?lang=en&region=us" } }, "end": { "down": 2, "distance": 10, "yardLine": 69, "yardsToEndzone": 69, "downDistanceText": "2nd & 10 at BUF 31", "shortDownDistanceText": "2nd & 10", "possessionText": "BUF 31", "team": { "$ref": "http://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2022/teams/2?lang=en&region=us" } }, "statYardage": 6 },

@mrmikeytj
Copy link

And thanks for putting this together, its super helpful!

@psuTickleMonster
Copy link

psuTickleMonster commented Oct 15, 2023

@krax13
Copy link

krax13 commented Oct 19, 2023

Hi all,
I want to make a Grafana dashboard to present our ESPN Pigskin Pick'em scoreboard.
Is there available API path to show the picks of the group?
Thank you in advance!

@nntrn
Copy link
Author

nntrn commented Oct 20, 2023

Hi all, I want to make a Grafana dashboard to present our ESPN Pigskin Pick'em scoreboard. Is there available API path to show the picks of the group? Thank you in advance!

@krax13 - heres the pickem api

# challenge_name
# --------------
# CHALLENGE_NAME=nfl-win-totals-2023
# CHALLENGE_NAME=nfl-eliminator-challenge-2023
CHALLENGE_NAME=nfl-pigskin-pickem-2023

# view_name:
# ---------------------------
# VIEW_NAME=allon
# VIEW_NAME=chui_default
# VIEW_NAME=chui_default_group
# VIEW_NAME=chui_default_groupParticipationHistory
# VIEW_NAME=chui_default_metadata
# VIEW_NAME=chui_pagetype_group_picks
VIEW_NAME=pagetype_leaderboard

# group_ids
# -------------------------
# EXAMPLE_GROUP_ID_WINTOTAL=3ea0845b-59d5-499b-97a0-2eb9d02e1cc9
# EXAMPLE_GROUP_ID_ELIMINATOR=ac72d269-e700-4efb-bcb1-269413d1a815
EXAMPLE_GROUP_ID_PIGSKIN=19961d87-2563-4972-bdd3-de7e55ee26be

################################################################################

GROUP_ID=$EXAMPLE_GROUP_ID_PIGSKIN

API_PATH="apis/v1/challenges/${CHALLENGE_NAME}/groups/${GROUP_ID}?view=${VIEW_NAME}&platform=chui"

API_HEADER='gambit-filter: {"filterSortId":{"value":null},"limit":100,"offset":0,"sortRank":{"sortAsc":true,"sortPriority":1}}'

curl "https://gambit-api.fantasy.espn.com/${API_PATH}" -H "$API_HEADER"

Examples:

@krax13
Copy link

krax13 commented Oct 20, 2023

Hi all, I want to make a Grafana dashboard to present our ESPN Pigskin Pick'em scoreboard. Is there available API path to show the picks of the group? Thank you in advance!

@krax13 - heres the pickem api

# challenge_name
# --------------
# CHALLENGE_NAME=nfl-win-totals-2023
# CHALLENGE_NAME=nfl-eliminator-challenge-2023
CHALLENGE_NAME=nfl-pigskin-pickem-2023

# view_name:
# ---------------------------
# VIEW_NAME=allon
# VIEW_NAME=chui_default
# VIEW_NAME=chui_default_group
# VIEW_NAME=chui_default_groupParticipationHistory
# VIEW_NAME=chui_default_metadata
# VIEW_NAME=chui_pagetype_group_picks
VIEW_NAME=pagetype_leaderboard

# group_ids
# -------------------------
# EXAMPLE_GROUP_ID_WINTOTAL=3ea0845b-59d5-499b-97a0-2eb9d02e1cc9
# EXAMPLE_GROUP_ID_ELIMINATOR=ac72d269-e700-4efb-bcb1-269413d1a815
EXAMPLE_GROUP_ID_PIGSKIN=19961d87-2563-4972-bdd3-de7e55ee26be

################################################################################

GROUP_ID=$EXAMPLE_GROUP_ID_PIGSKIN

API_PATH="apis/v1/challenges/${CHALLENGE_NAME}/groups/${GROUP_ID}?view=${VIEW_NAME}&platform=chui"

API_HEADER='gambit-filter: {"filterSortId":{"value":null},"limit":100,"offset":0,"sortRank":{"sortAsc":true,"sortPriority":1}}'

curl "https://gambit-api.fantasy.espn.com/${API_PATH}" -H "$API_HEADER"

Examples:

* [/apis/v1/challenges/**nfl-win-totals-2023**/groups/3ea0845b-59d5-499b-97a0-2eb9d02e1cc9?view=**allon**](https://gambit-api.fantasy.espn.com/apis/v1/challenges/nfl-win-totals-2023/groups/3ea0845b-59d5-499b-97a0-2eb9d02e1cc9?view=allon&platform=chui)

* [/apis/v1/challenges/**nfl-eliminator-challenge-2023**/groups/ac72d269-e700-4efb-bcb1-269413d1a815?view=**chui_default_group**](https://gambit-api.fantasy.espn.com/apis/v1/challenges/nfl-eliminator-challenge-2023/groups/ac72d269-e700-4efb-bcb1-269413d1a815?view=chui_default_group&platform=chui)

* [/apis/v1/challenges/**nfl-pigskin-pickem-2023**/groups/19961d87-2563-4972-bdd3-de7e55ee26be?view=**pagetype_leaderboard**](https://gambit-api.fantasy.espn.com/apis/v1/challenges/nfl-pigskin-pickem-2023/groups/19961d87-2563-4972-bdd3-de7e55ee26be?view=pagetype_leaderboard)

Many thanks @nntrn That is what I am looking for. :)

@ZacharySal
Copy link

Is there any way to get the season leaders for a team without fetching one of their games? I know there is a link listed, but it takes an extra api call for each player to get the data. Is there a more concise call? Thank you for all of this information by the way!

@nntrn
Copy link
Author

nntrn commented Oct 31, 2023

Is there any way to get the season leaders for a team without fetching one of their games? I know there is a link listed, but it takes an extra api call for each player to get the data. Is there a more concise call? Thank you for all of this information by the way!

@ZacharySal - maybe these?

@psuTickleMonster
Copy link

@nntrn - Anybody get results for the Rankings Endpoint? https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2023/types/2/weeks/6/rankings

Anyone? Has anyone found a way to get rankings besides the efficiency ranks? Eff Rank and standard off/def rank seem to be different.

@jalikens
Copy link

jalikens commented Nov 28, 2023

@nntrn Does anyone know how to get the season leaders for TEAM stats? for example stats from here https://www.espn.com/nfl/stats/_/view/team

Is there something similar to this endpoint: https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/seasons/2023/types/2/leaders

@nntrn
Copy link
Author

nntrn commented Dec 1, 2023

@lewishardie
Copy link

This might be a noob question, I'm fairly new to programming, but I'm trying to setup a search function to pull player profile information (i.e name, headshot, age, number, team), the only issue being that for the search to work as I've set it up I can't just search "Ryan Tannehill" and get that information, I need to search using their player id, which isn't intuitive for users.

https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes
https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes/14876

Is it a situation where I'm better of having a local file that has all the key: value pairings e.g. { "Ryan Tannehill" : 14876 } or is there a better way to do this?

@ryanbuckner
Copy link

ryanbuckner commented Dec 15, 2023 via email

@terrencewhaley
Copy link

@lewishardie Hey Lewis, were you able to solve? I'm wondering the same.

@nntrn
Copy link
Author

nntrn commented Dec 26, 2023

Is it a situation where I'm better of having a local file that has all the key: value pairings e.g. { "Ryan Tannehill" : 14876 } or is there a better way to do this?

you can run this script to build a local roster
https://github.com/nntrn/espn-wiki/blob/main/scripts/roster.sh

$ curl -O https://github.com/nntrn/espn-wiki/blob/main/scripts/roster.sh
$ chmod a+x roster.sh
$ ./roster.sh /tmp/nfl-roster

Results:

[
  {
    "id": "4259305",
    "team": "GB",
    "position": "WR",
    "fullName": "Bo Melton"
  },
  {
    "id": "4685016",
    "team": "GB",
    "position": "RB",
    "fullName": "Ellis Merriweather"
  }
  ...
]

@lewishardie @eye4eneye

@terrencewhaley
Copy link

@nntrn Thank you so much for this script!

@mattabets
Copy link

This might be a noob question, I'm fairly new to programming, but I'm trying to setup a search function to pull player profile information (i.e name, headshot, age, number, team), the only issue being that for the search to work as I've set it up I can't just search "Ryan Tannehill" and get that information, I need to search using their player id, which isn't intuitive for users.

https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes https://sports.core.api.espn.com/v2/sports/football/leagues/nfl/athletes/14876

Is it a situation where I'm better of having a local file that has all the key: value pairings e.g. { "Ryan Tannehill" : 14876 } or is there a better way to do this?

alternatively, I just used @nntrn 's script to build a python function to reverse lookup the player id by their name. You can find the documentation here: https://github.com/mattabets/espn_api_player_id_reverse_lookup/blob/main/README.md

@newadventure079
Copy link

There's another endpoint for the pickem challenges that I've used
https://fantasy.espn.com/apis/v1/challenges/'+game_type+'-'+year+'/members/
In 2023, it didn't require auth.

In 2024, it has changed to the below and now requires auth
https://gambit-api.fantasy.espn.com/apis/v1/challenges/'+game_type+'-'+year+'/members/

@newadventure079
Copy link

Does anyone know of a way to tell if a user has submitted their picks for the week in the pickem challenges?

You used to be able to click on their name and it'd tell you if they have submitted their picks or not but I believe during the site redesign a few years ago, espn removed that feature.

@JamesSingleton
Copy link

Has anyone figured out how to get College Football weeks? https://site.api.espn.com/apis/common/v3/sports/football/college-football/seasons gives all seasons from 1872 to 2024 which I only need a single season. I tried adding ?season=2024, ?year=2024 with no luck. You can do https://site.api.espn.com/apis/common/v3/sports/football/college-football/seasons/2024 to get the 2024 season, but it doesn't give the weeks, even doing ?seasonType=2 doesn't.

@newadventure079
Copy link

Using the first url, after you get the data, you should be able to reference what you want to get by doing something like
const season2024 = data.seasons.find(season => season.year === 2024);

@JamesSingleton
Copy link

@newadventure079 yea that is true I could do that... But I was trying to avoid having to get a massive payload (I guess not that massive as it's 8.3 kB). I do find it interesting that /seasons will give the breakdown of the weeks, but /seasons/2024 won't

@newadventure079
Copy link

The API is a big black box lol

@JamesSingleton
Copy link

@newadventure079 yea... I am building a College Football Top 25 voting system for my website and I don't want to have to hardcode the weeks into my API routes, so that is why I was looking at using the API endpoint. I also noticed for ESPN, they classify Week 1 as 8/24-9/3 but that includes Week 0 and Week 1, I found that interesting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment