├── __init__.py ├── test ├── __init__.py ├── test_injury_report.py ├── test_pbp.py ├── test_shot_charts.py ├── test_drafts.py ├── test_seasons.py ├── test_box_scores.py ├── test_players.py └── test_teams.py ├── basketball_reference_scraper ├── __init__.py ├── injury_report.py ├── drafts.py ├── request_utils.py ├── pbp.py ├── shot_charts.py ├── lookup.py ├── constants.py ├── seasons.py ├── box_scores.py ├── utils.py ├── players.py ├── teams.py └── br_names.txt ├── requirements.txt ├── .gitignore ├── .github └── workflows │ └── main.yml ├── LICENSE ├── setup.py ├── examples.py ├── README.md └── API.md /__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /basketball_reference_scraper/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | beautifulsoup4==4.8.2 2 | bs4==0.0.1 3 | lxml==4.6.5 4 | numpy==1.21.0 5 | pandas==1.3.5 6 | python-dateutil==2.8.1 7 | pytz==2019.3 8 | requests==2.22.0 9 | six==1.13.0 10 | soupsieve==1.9.5 11 | unidecode==1.2.0 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | basketball_reference_scraper_vishaalagartha.egg-info/ 2 | basketball_reference_scraper/__pycache__/* 3 | test-env/ 4 | test/__pycache__/* 5 | .DS_STORE 6 | dist/ 7 | build/ 8 | *egg-info/ 9 | *.ipynb 10 | 11 | .vscode 12 | env 13 | package_passwords.txt -------------------------------------------------------------------------------- /test/test_injury_report.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.injury_report import get_injury_report 3 | 4 | class TestInjuryReport(unittest.TestCase): 5 | def test_injury_report(self): 6 | df = get_injury_report() 7 | expected_columns = ['PLAYER', 'TEAM', 'DATE', 'INJURY', 'STATUS', 'DESCRIPTION'] 8 | self.assertCountEqual(list(df.columns), expected_columns) 9 | 10 | if __name__ == '__main__': 11 | unittest.main() 12 | -------------------------------------------------------------------------------- /test/test_pbp.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.pbp import get_pbp 3 | 4 | class TestPbp(unittest.TestCase): 5 | def test_pbp(self): 6 | df = get_pbp('2020-01-06', 'DEN', 'ATL') 7 | expected_columns = ['QUARTER', 'TIME_REMAINING', 'DENVER_ACTION', 'ATLANTA_ACTION', 'DENVER_SCORE', 'ATLANTA_SCORE'] 8 | self.assertListEqual(list(df.columns), expected_columns) 9 | 10 | if __name__ == '__main__': 11 | unittest.main() 12 | -------------------------------------------------------------------------------- /test/test_shot_charts.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.shot_charts import get_shot_chart 3 | 4 | class TestShotCharts(unittest.TestCase): 5 | def test_get_shot_chart(self): 6 | d = get_shot_chart('2019-12-28', 'TOR', 'BOS') 7 | self.assertListEqual(list(d.keys()), ['TOR', 'BOS']) 8 | self.assertListEqual(list(d['TOR'].columns), ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE']) 9 | if __name__ == '__main__': 10 | unittest.main() 11 | -------------------------------------------------------------------------------- /test/test_drafts.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.drafts import get_draft_class 3 | 4 | class TestDraft(unittest.TestCase): 5 | 6 | def test_should_get_class(self): 7 | df = get_draft_class(2003) 8 | self.assertEqual(len(df), 58) 9 | 10 | row = df.iloc[0] 11 | self.assertEqual('LeBron James', row['PLAYER']) 12 | 13 | def test_should_get_old_class(self): 14 | df = get_draft_class(1987) 15 | self.assertEqual(len(df), 161) 16 | 17 | def test_should_handle_forfeit(self): 18 | df = get_draft_class(2002) 19 | self.assertEqual(len(df), 57) 20 | 21 | row = df.iloc[27] 22 | self.assertEqual('28', row['PICK']) 23 | row = df.iloc[28] 24 | self.assertEqual('30', row['PICK']) -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow to help you get started with Actions 2 | 3 | name: CI 4 | 5 | # Controls when the workflow will run 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the master branch 8 | push: 9 | branches: [ master ] 10 | pull_request: 11 | branches: [ master ] 12 | 13 | # Allows you to run this workflow manually from the Actions tab 14 | workflow_dispatch: 15 | 16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 17 | jobs: 18 | build: 19 | runs-on: ubuntu-latest 20 | strategy: 21 | max-parallel: 6 22 | matrix: 23 | python-version: ["3.8", "3.9", "3.10"] 24 | 25 | steps: 26 | - uses: actions/checkout@v2 27 | - name: Set up Python ${{ matrix.python-version }} 28 | uses: actions/setup-python@v2 29 | with: 30 | python-version: ${{ matrix.python-version }} 31 | - name: Install dependencies 32 | run: pip install -r requirements.txt 33 | - name: Test 34 | run: python -m unittest discover test 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Vishaal Agartha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /basketball_reference_scraper/injury_report.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from requests import get 3 | from bs4 import BeautifulSoup 4 | 5 | try: 6 | from constants import TEAM_TO_TEAM_ABBR 7 | from request_utils import get_wrapper 8 | except: 9 | from basketball_reference_scraper.constants import TEAM_TO_TEAM_ABBR 10 | from basketball_reference_scraper.request_utils import get_wrapper 11 | 12 | def get_injury_report(): 13 | r = get_wrapper(f'https://www.basketball-reference.com/friv/injuries.fcgi') 14 | if r.status_code==200: 15 | soup = BeautifulSoup(r.content, 'html.parser') 16 | table = soup.find('table') 17 | df = pd.read_html(str(table))[0] 18 | df.rename(columns = {'Player': 'PLAYER', 'Team': 'TEAM', 'Update': 'DATE', 'Description': 'DESCRIPTION'}, inplace=True) 19 | df = df[df['PLAYER'] != 'Player'] 20 | df['TEAM'] = df['TEAM'].apply(lambda x: TEAM_TO_TEAM_ABBR[x.upper()]) 21 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x)) 22 | df['STATUS'] = df['DESCRIPTION'].apply(lambda x: x[:x.index('(')].strip()) 23 | df['INJURY'] = df['DESCRIPTION'].apply(lambda x: x[x.index('(')+1:x.index(')')].strip()) 24 | df['DESCRIPTION'] = df['DESCRIPTION'].apply(lambda x: x[x.index('-')+2:].strip()) 25 | return df 26 | else: 27 | raise ConnectionError('Request to basketball reference failed') 28 | -------------------------------------------------------------------------------- /basketball_reference_scraper/drafts.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from bs4 import BeautifulSoup 3 | try: 4 | from request_utils import get_wrapper 5 | except: 6 | from basketball_reference_scraper.request_utils import get_wrapper 7 | 8 | 9 | def get_draft_class(year): 10 | r = get_wrapper(f'https://www.basketball-reference.com/draft/NBA_{year}.html') 11 | 12 | 13 | if r.status_code==200: 14 | soup = BeautifulSoup(r.content, 'html.parser') 15 | table = soup.find('table') 16 | df = pd.read_html(str(table))[0] 17 | 18 | # get rid of duplicate pick col 19 | df.drop(['Unnamed: 0_level_0'], inplace=True, axis = 1, level=0) 20 | df.rename(columns={'Unnamed: 1_level_0': '', 'Pk': 'PICK', 'Unnamed: 2_level_0': '', 'Tm': 'TEAM', 21 | 'Unnamed: 5_level_0': '', 'Yrs': 'YEARS', 'Totals': 'TOTALS', 'Shooting': 'SHOOTING', 22 | 'Per Game': 'PER_GAME', 'Advanced': 'ADVANCED', 'Round 1': '', 23 | 'Player': 'PLAYER', 'College': 'COLLEGE'}, inplace=True) 24 | 25 | # flatten columns 26 | df.columns = ['_'.join(x) if x[0] != '' else x[1] for x in df.columns] 27 | 28 | # remove mid-table header rows 29 | df = df[df['PLAYER'].notna()] 30 | df = df[~df['PLAYER'].str.contains('Round|Player')] 31 | 32 | return df 33 | else: 34 | raise ConnectionError('Request to basketball reference failed') 35 | -------------------------------------------------------------------------------- /basketball_reference_scraper/request_utils.py: -------------------------------------------------------------------------------- 1 | from requests import get 2 | from time import sleep, time 3 | from selenium import webdriver 4 | from selenium.webdriver.chrome.options import Options 5 | from selenium import webdriver 6 | from selenium.webdriver.chrome.options import Options 7 | from selenium.webdriver.common.by import By 8 | 9 | options = Options() 10 | options.add_argument('--headless=new') 11 | driver = webdriver.Chrome(options=options) 12 | last_request = time() 13 | 14 | def get_selenium_wrapper(url, xpath): 15 | global last_request 16 | # Verify last request was 3 seconds ago 17 | if 0 < time() - last_request < 3: 18 | sleep(3) 19 | last_request = time() 20 | try: 21 | driver.get(url) 22 | element = driver.find_element(By.XPATH, xpath) 23 | return f'{element.get_attribute("innerHTML")}
' 24 | except: 25 | print('Error obtaining data table.') 26 | return None 27 | 28 | def get_wrapper(url): 29 | global last_request 30 | # Verify last request was 3 seconds ago 31 | if 0 < time() - last_request < 3: 32 | sleep(3) 33 | last_request = time() 34 | r = get(url) 35 | while True: 36 | if r.status_code == 200: 37 | return r 38 | elif r.status_code == 429: 39 | retry_time = int(r.headers["Retry-After"]) 40 | print(f'Retrying after {retry_time} sec...') 41 | sleep(retry_time) 42 | else: 43 | return r -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import setuptools 2 | 3 | with open("README.md", "r") as fh: 4 | long_description = fh.read() 5 | 6 | setuptools.setup( 7 | name="basketball_reference_scraper", 8 | version="2.0.0", 9 | author="Vishaal Agartha", 10 | author_email="vishaalagartha@gmail.com", 11 | license="MIT", 12 | description="A Python client for scraping stats and data from Basketball Reference", 13 | long_description=long_description, 14 | long_description_content_type="text/markdown", 15 | url="https://github.com/vishaalagartha/basketball_reference_scraper", 16 | packages=setuptools.find_packages(), 17 | package_data={'basketball_reference_scraper': ['*.txt']}, 18 | classifiers=[ 19 | "Programming Language :: Python :: 3", 20 | "License :: OSI Approved :: MIT License", 21 | "Operating System :: OS Independent", 22 | ], 23 | python_requires=">=3.6", 24 | install_requires=[ 25 | 'beautifulsoup4', 26 | 'bs4', 27 | 'lxml', 28 | 'numpy', 29 | 'pandas', 30 | 'python-dateutil', 31 | 'pytz', 32 | 'requests', 33 | 'six', 34 | 'soupsieve', 35 | 'Unidecode', 36 | 'selenium' 37 | ], 38 | extras_require={ 39 | 'test': ['unittest'], 40 | }, 41 | keywords=[ 42 | "nba", 43 | "sports", 44 | "data mining", 45 | "basketball", 46 | "basketball reference", 47 | "basketball-reference.com", 48 | ], 49 | ) 50 | -------------------------------------------------------------------------------- /test/test_seasons.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.seasons import get_schedule, get_standings 3 | 4 | class TestSeason(unittest.TestCase): 5 | def test_get_schedule(self): 6 | df = get_schedule(1999) 7 | expected_columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 8 | 'HOME_PTS'] 9 | self.assertListEqual(list(df.columns), expected_columns) 10 | 11 | def test_get_schedule_weird_season(self): 12 | for season in (1971, 1953): 13 | for use_playoffs in (True, False): 14 | cur_season = get_schedule(season, playoffs=use_playoffs) 15 | expected_columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 16 | 'HOME_PTS'] 17 | self.assertListEqual(list(cur_season.columns), expected_columns) 18 | 19 | def test_get_standings(self): 20 | d = get_standings() 21 | self.assertListEqual(list(d.keys()), ['EASTERN_CONF', 'WESTERN_CONF']) 22 | 23 | df = d['WESTERN_CONF'] 24 | expected_columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G'] 25 | self.assertListEqual(list(df.columns), expected_columns) 26 | 27 | def test_get_standings_weird_season(self): 28 | for season in (1971, 1953): 29 | d = get_standings(season) 30 | self.assertListEqual(list(d.keys()), ['EASTERN_CONF', 'WESTERN_CONF']) 31 | 32 | df = d['WESTERN_CONF'] 33 | expected_columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G'] 34 | self.assertListEqual(list(df.columns), expected_columns) 35 | 36 | if __name__ == '__main__': 37 | unittest.main() 38 | -------------------------------------------------------------------------------- /test/test_box_scores.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.box_scores import get_box_scores, get_all_star_box_score 3 | 4 | class TestBoxScores(unittest.TestCase): 5 | def test_get_box_scores(self): 6 | d = get_box_scores('2020-01-06', 'DEN', 'ATL') 7 | self.assertListEqual(list(d.keys()), ['DEN', 'ATL']) 8 | 9 | df = d['DEN'] 10 | expected_columns = ['PLAYER', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', '+/-'] 11 | self.assertListEqual(list(df.columns), expected_columns) 12 | 13 | def test_get_all_star_box_score(self): 14 | d = get_all_star_box_score(2020) 15 | df = d['Team LeBron'] 16 | # they dont record +/- in ASG :( 17 | expected_columns = ['PLAYER', 'TEAM', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 18 | self.assertSetEqual(set(df.columns), set(expected_columns)) 19 | 20 | # check for one of the dnp players 21 | self.assertTrue('Damian Lillard' in df['PLAYER'].values) 22 | # make sure his team is right 23 | self.assertTrue('POR' in df['TEAM'].values) 24 | 25 | d = get_all_star_box_score(2012) 26 | df = d['East'] 27 | self.assertSetEqual(set(df.columns), set(expected_columns)) 28 | 29 | d2 = get_all_star_box_score(1980) 30 | df = d2['East'] 31 | # check uniqueness of all star names 32 | expected_players = ['George Gervin', 'Eddie Johnson', 'Moses Malone', 'Julius Erving', 'John Drew', 'Elvin Hayes', 'Dan Roundfield', 'Larry Bird', 'Tiny Archibald', 'Bill Cartwright', 'Micheal Ray Richardson', 'Dave Cowens'] 33 | self.assertListEqual(expected_players, list(df['PLAYER'].values)) 34 | 35 | if __name__ == '__main__': 36 | unittest.main() 37 | -------------------------------------------------------------------------------- /examples.py: -------------------------------------------------------------------------------- 1 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc 2 | 3 | df = get_roster('GSW', 2019) 4 | print(df) 5 | 6 | s = get_team_stats('GSW', 2019, data_format='PER_GAME') 7 | print(s) 8 | 9 | s = get_opp_stats('GSW', 2019, data_format='PER_GAME') 10 | print(s) 11 | 12 | s = get_roster_stats('GSW', 2019, data_format='PER_GAME', playoffs=False) 13 | print(s) 14 | 15 | s = get_team_misc('GSW', 2019) 16 | print(s) 17 | 18 | from basketball_reference_scraper.players import get_stats, get_game_logs 19 | 20 | s = get_stats('Stephen Curry', stat_type='PER_GAME', playoffs=False, career=False) 21 | print(s) 22 | 23 | df = get_game_logs('LeBron James', 2010, playoffs=False) 24 | print(df) 25 | 26 | from basketball_reference_scraper.seasons import get_schedule, get_standings 27 | 28 | s = get_schedule(2018, playoffs=False) 29 | print(s) 30 | 31 | s = get_standings(date='2020-01-06') 32 | print(s) 33 | 34 | from basketball_reference_scraper.box_scores import get_box_scores 35 | 36 | s = get_box_scores('2020-01-13', 'CHI', 'BOS', period='GAME', stat_type='BASIC') 37 | print(s) 38 | 39 | from basketball_reference_scraper.pbp import get_pbp 40 | 41 | s = get_pbp('2020-01-13', 'CHI', 'BOS') 42 | print(s) 43 | 44 | from basketball_reference_scraper.shot_charts import get_shot_chart 45 | 46 | s = get_shot_chart('2020-01-13', 'CHI', 'BOS') 47 | print(s) 48 | 49 | from basketball_reference_scraper.injury_report import get_injury_report 50 | 51 | s = get_injury_report() 52 | print(s) 53 | 54 | from basketball_reference_scraper.players import get_game_logs, get_player_headshot 55 | 56 | df = get_game_logs('Pau Gasol', 2010, playoffs=False) 57 | print(df) 58 | 59 | url = get_player_headshot('Kobe Bryant') 60 | print(url) 61 | 62 | from basketball_reference_scraper.drafts import get_draft_class 63 | 64 | df = get_draft_class(2003) 65 | print(df) 66 | -------------------------------------------------------------------------------- /test/test_players.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.players import get_stats, get_game_logs, get_player_headshot 3 | 4 | class TestPlayers(unittest.TestCase): 5 | def test_get_stats(self): 6 | expected_columns_season = ['SEASON', 'AGE', 'TEAM', 'LEAGUE', 'POS', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'AWARDS'] 7 | expected_columns_playoffs = ['SEASON', 'AGE', 'TEAM', 'LEAGUE', 'POS', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 8 | df = get_stats('Joe Johnson') 9 | self.assertCountEqual(list(df.columns), expected_columns_season) 10 | 11 | df = get_stats('LaMarcus Aldridge') 12 | self.assertCountEqual(list(df.columns), expected_columns_season) 13 | 14 | df = get_stats('LaMarcus Aldridge', career=True) 15 | self.assertCountEqual(list(df.columns), expected_columns_season) 16 | 17 | df = get_stats('LaMarcus Aldridge', playoffs=True, career=True) 18 | self.assertCountEqual(list(df.columns), expected_columns_playoffs) 19 | 20 | def test_get_game_logs(self): 21 | expected_columns = ['DATE', 'AGE', 'TEAM', 'HOME/AWAY', 'OPPONENT', 'RESULT', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'GAME_SCORE', '+/-'] 22 | 23 | df = get_game_logs('Stephen Curry', 2022) 24 | self.assertCountEqual(list(df.columns), expected_columns) 25 | 26 | df = get_game_logs('Pau Gasol', 2010, playoffs=False) 27 | self.assertEqual(len(df), 82) 28 | 29 | def test_get_player_headshot(self): 30 | expected_url = 'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/bryanko01.jpg' 31 | url = get_player_headshot('Kobe Bryant') 32 | self.assertEqual(url, expected_url) 33 | 34 | 35 | if __name__ == '__main__': 36 | unittest.main() 37 | -------------------------------------------------------------------------------- /basketball_reference_scraper/pbp.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from requests import get 3 | from bs4 import BeautifulSoup 4 | from datetime import datetime 5 | 6 | try: 7 | from utils import get_game_suffix 8 | from request_utils import get_wrapper 9 | except: 10 | from basketball_reference_scraper.utils import get_game_suffix 11 | from basketball_reference_scraper.request_utils import get_wrapper 12 | 13 | def get_pbp_helper(suffix): 14 | selector = f'#pbp' 15 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/pbp{suffix}') 16 | if r.status_code==200: 17 | soup = BeautifulSoup(r.content, 'html.parser') 18 | table = soup.find('table', attrs={'id': 'pbp'}) 19 | return pd.read_html(str(table))[0] 20 | else: 21 | raise ConnectionError('Request to basketball reference failed') 22 | 23 | def format_df(df1): 24 | df1.columns = list(map(lambda x: x[1], list(df1.columns))) 25 | t1 = list(df1.columns)[1].upper() 26 | t2 = list(df1.columns)[5].upper() 27 | q = 1 28 | df = None 29 | for index, row in df1.iterrows(): 30 | d = {'QUARTER': float('nan'), 'TIME_REMAINING': float('nan'), f'{t1}_ACTION': float('nan'), f'{t2}_ACTION': float('nan'), f'{t1}_SCORE': float('nan'), f'{t2}_SCORE': float('nan')} 31 | if row['Time']=='2nd Q': 32 | q = 2 33 | elif row['Time']=='3rd Q': 34 | q = 3 35 | elif row['Time']=='4th Q': 36 | q = 4 37 | elif 'OT' in row['Time']: 38 | q = row['Time'][0]+'OT' 39 | try: 40 | d['QUARTER'] = q 41 | d['TIME_REMAINING'] = row['Time'] 42 | scores = row['Score'].split('-') 43 | d[f'{t1}_SCORE'] = int(scores[0]) 44 | d[f'{t2}_SCORE'] = int(scores[1]) 45 | d[f'{t1}_ACTION'] = row[list(df1.columns)[1]] 46 | d[f'{t2}_ACTION'] = row[list(df1.columns)[5]] 47 | if df is None: 48 | df = pd.DataFrame(columns = list(d.keys())) 49 | df = df.append(d, ignore_index=True) 50 | except: 51 | continue 52 | return df 53 | 54 | def get_pbp(date, team1, team2): 55 | date = pd.to_datetime(date) 56 | suffix = get_game_suffix(date, team1, team2).replace('/boxscores', '') 57 | df = get_pbp_helper(suffix) 58 | df = format_df(df) 59 | return df 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # basketball_reference_scraper 2 | 3 | [Basketball Reference](https://www.basketball-reference.com/) is a resource to aggregate statistics on NBA teams, seasons, players, and games. This package provides methods to acquire data for all these categories in pre-parsed and simplified formats. 4 | 5 | ## Installing 6 | ### Via `pip` 7 | I wrote this library as an exercise for creating my first PyPi package. Hopefully, you find it easy to use. 8 | Install using the following command: 9 | 10 | ``` 11 | pip install basketball-reference-scraper 12 | ``` 13 | 14 | ### Via GitHub 15 | Alternatively, you can just clone this repo and import the libraries at your own discretion. 16 | 17 | ### Selenium 18 | 19 | This package can also capture dynamically rendered content that is being added to the page via JavaScript, rather than baked into the HTML. To achieve this, it uses [Python Selenium](https://selenium-python.readthedocs.io/). Please refer to their [installation instructions](https://selenium-python.readthedocs.io/installation.html) and ensure you have [Chrome webdriver](https://selenium-python.readthedocs.io/installation.html#drivers) installed in and in your `PATH` variable. 20 | 21 | ## Wait, don't scrapers like this already exist? 22 | 23 | Yes, scrapers and APIs do exist. The primary API used currently is for [stats.nba.com](https://stats.nba.com/), but the website blocks too many requests, hindering those who want to acquire a lot of data. Additionally, scrapers for [Basketball Reference](https://www.basketball-reference.com/) do exist, but none of them load dynamically rendered content. These scrapers can only acquire statically loaded content, preventing those who want statistics in certain formats (for example, Player Advanced Stats Per Game). 24 | 25 | Most of the scrapers use outdated methodologies of scraping from `'https://widgets.sports-reference.com/'`. This is outdated and Basketball Reference no longer acquires their data from there. Additionally, [Sports Reference recently instituted a rate limiter](https://www.sports-reference.com/bot-traffic.html) preventing users from making an excess of 20 requests/minute. This package abstracts the waiting logic to ensure you never hit this threshold. 26 | 27 | ### API 28 | Currently, the package contains 5 modules: `teams`, `players`, `seasons`, `box_scores`, `pbp`, `shot_charts`, and `injury_report`. 29 | The package will be expanding to include other content as well, but this is a start. 30 | 31 | For full details on the API please refer to the [documentation](https://github.com/vishaalagartha/basketball_reference_scraper/blob/master/API.md). 32 | -------------------------------------------------------------------------------- /basketball_reference_scraper/shot_charts.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from requests import get 3 | from bs4 import BeautifulSoup 4 | from datetime import datetime 5 | import re 6 | 7 | try: 8 | from utils import get_game_suffix 9 | from request_utils import get_wrapper 10 | except: 11 | from basketball_reference_scraper.utils import get_game_suffix 12 | from basketball_reference_scraper.request_utils import get_wrapper 13 | 14 | def get_location(s): 15 | l = s.split(';') 16 | top = float(l[0][l[0].index(':')+1:l[0].index('px')]) 17 | left = float(l[1][l[1].index(':')+1:l[1].index('px')]) 18 | x = left/500.0*50 19 | y = top/472.0*(94/2) 20 | return {'x': str(x)[:4] + ' ft', 'y': str(y)[:4] + ' ft'} 21 | 22 | def get_description(s): 23 | match = re.match(r'(\d)[a-z]{2} quarter, (\S*) remaining
(.*) \b(missed|made) (\d)-pointer from (\d*) ft', s) 24 | d = {} 25 | if match: 26 | groups = match.groups() 27 | d['QUARTER'] = int(groups[0]) 28 | d['TIME_REMAINING'] = groups[1] 29 | d['PLAYER'] = groups[2] 30 | d['MAKE_MISS'] = 'MAKE' if groups[3]=='made' else 'MISS' 31 | d['VALUE'] = int(groups[4]) 32 | d['DISTANCE'] = groups[5] + ' ft' 33 | return d 34 | 35 | 36 | def get_shot_chart(date, team1, team2): 37 | date = pd.to_datetime(date) 38 | suffix = get_game_suffix(date, team1, team2).replace('/boxscores', '') 39 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/shot-chart{suffix}') 40 | if r.status_code==200: 41 | soup = BeautifulSoup(r.content, 'html.parser') 42 | shot_chart1_div = soup.find('div', attrs={'id': f'shots-{team1}'}) 43 | shot_chart2_div = soup.find('div', attrs={'id': f'shots-{team2}'}) 44 | df1 = pd.DataFrame() 45 | for div in shot_chart1_div.find_all('div'): 46 | if 'style' not in div.attrs or 'tip' not in div.attrs: 47 | continue 48 | location = get_location(div.attrs['style']) 49 | description = get_description(div.attrs['tip']) 50 | shot_d = {**location, **description} 51 | shot_df = pd.DataFrame.from_dict([shot_d]) 52 | df1 = df1.append(shot_df) 53 | df1 = df1.reset_index() 54 | df1 = df1.drop('index', axis=1) 55 | df2 = pd.DataFrame() 56 | for div in shot_chart2_div.find_all('div'): 57 | if 'style' not in div.attrs or 'tip' not in div.attrs: 58 | continue 59 | location = get_location(div.attrs['style']) 60 | description = get_description(div.attrs['tip']) 61 | shot_d = {**location, **description} 62 | shot_df = pd.DataFrame.from_dict([shot_d]) 63 | df2 = df2.append(shot_df) 64 | df2 = df2.reset_index() 65 | df2 = df2.drop('index', axis=1) 66 | 67 | return {f'{team1}': df1, f'{team2}': df2} 68 | else: 69 | raise ConnectionError('Request to basketball reference failed') 70 | -------------------------------------------------------------------------------- /test/test_teams.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc, get_team_ratings 3 | 4 | class TestTeams(unittest.TestCase): 5 | def test_get_roster(self): 6 | df = get_roster('GSW', 2019) 7 | curry_df = df[df['PLAYER']=='Stephen Curry'] 8 | self.assertEqual(len(curry_df), 1) 9 | 10 | expected_columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 11 | 'BIRTH_DATE', 'NATIONALITY', 'EXPERIENCE', 'COLLEGE'] 12 | 13 | self.assertListEqual(list(df.columns), expected_columns) 14 | 15 | def test_get_roster_on_missing_nationality(self): 16 | df = get_roster('FTW', 1956) 17 | 18 | expected_columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 19 | 'BIRTH_DATE', 'NATIONALITY', 'EXPERIENCE', 'COLLEGE'] 20 | 21 | self.assertListEqual(list(df.columns), expected_columns) 22 | 23 | def get_team_stats(self): 24 | series = get_team_stats('GSW', 2019) 25 | expected_indices = ['G', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 26 | self.assertCountEqual(list(series.index), expected_indices) 27 | 28 | def get_opp_stats(self): 29 | series = get_opp_stats('GSW', 2019) 30 | expected_indices = ['OPP_G', 'OPP_MP', 'OPP_FG', 'OPP_FGA', 'OPP_FG%', 'OPP_3P', 'OPP_3PA', 'OPP_3P%', 'OPP_2P', 'OPP_2PA', 'OPP_2P%', 'OPP_FT', 'OPP_FTA', 'OPP_FT%', 'OPP_ORB', 'OPP_DRB', 'OPP_TRB', 'OPP_AST', 'OPP_STL', 'OPP_BLK', 'OPP_TOV', 'OPP_PF', 'OPP_PTS'] 31 | self.assertCountEqual(list(series.index), expected_indices) 32 | 33 | def test_get_roster_stats(self): 34 | df = get_roster_stats('GSW', 2019) 35 | expected_columns = ['PLAYER', 'AGE', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 36 | self.assertCountEqual(list(df.columns), expected_columns) 37 | 38 | def test_get_team_misc(self): 39 | series = get_team_misc('GSW', 2019) 40 | expected_indices = ['W', 'L', 'PW', 'PL', 'MOV', 'SOS', 'SRS', 'ORtg', 'DRtg', 'Pace', 'FTr', '3PAr', 'eFG%', 'TOV%', 'ORB%', 'FT/FGA', 'eFG%', 'TOV%', 'DRB%', 'FT/FGA', 'ARENA', 'ATTENDANCE'] 41 | self.assertCountEqual(list(series.index), expected_indices) 42 | 43 | series = get_team_misc('CHO', 2019) 44 | self.assertCountEqual(list(series.index), expected_indices) 45 | 46 | series = get_team_misc('NOK', 2007) 47 | self.assertCountEqual(list(series.index), expected_indices) 48 | 49 | def test_get_team_ratings(self): 50 | expected_columns = ['RK', 'SEASON', 'TEAM', 'CONF', 'DIV', 'W', 'L', 'W/L%', 'MOV', 'ORTG', 'DRTG', 'NRTG', 'MOV/A', 'ORTG/A', 'DRTG/A', 'NRTG/A'] 51 | 52 | df = get_team_ratings(2019, ['BOS', 'GSW', 'DAL']) 53 | self.assertCountEqual(list(df.columns), expected_columns) 54 | self.assertEqual(len(df), 3) 55 | 56 | df = get_team_ratings(2024) 57 | self.assertCountEqual(list(df.columns), expected_columns) 58 | self.assertEqual(len(df), 30) 59 | 60 | if __name__ == '__main__': 61 | unittest.main() 62 | -------------------------------------------------------------------------------- /basketball_reference_scraper/lookup.py: -------------------------------------------------------------------------------- 1 | import unidecode, os, sys, unicodedata 2 | 3 | """ 4 | Bounded levenshtein algorithm credited to user amirouche on stackoverflow. 5 | Implementation borrowed from https://stackoverflow.com/questions/59686989/levenshtein-distance-with-bound-limit 6 | """ 7 | def levenshtein(s1, s2, maximum): 8 | if len(s1) > len(s2): 9 | s1, s2 = s2, s1 10 | 11 | distances = range(len(s1) + 1) 12 | for i2, c2 in enumerate(s2): 13 | distances_ = [i2+1] 14 | for i1, c1 in enumerate(s1): 15 | if c1 == c2: 16 | distances_.append(distances[i1]) 17 | else: 18 | distances_.append(1 + min((distances[i1], distances[i1 + 1], distances_[-1]))) 19 | if all((x >= maximum for x in distances_)): 20 | return -1 21 | distances = distances_ 22 | return distances[-1] 23 | 24 | """ 25 | User input is normalized/anglicized, then assigned a levenshtein score to 26 | find the closest matches. If an identical and unique match is found, it is 27 | returned. If many matches are found, either identical or distanced, all 28 | are returned for final user approval. 29 | """ 30 | def lookup(player, ask_matches = True): 31 | path = os.path.join(os.path.dirname(__file__), 'br_names.txt') 32 | normalized = unidecode.unidecode(player) 33 | matches = [] 34 | 35 | with open(path) as file: 36 | Lines = file.readlines() 37 | for line in Lines: 38 | """ 39 | A bound of 5 units of levenshtein distance is selected to 40 | account for possible misspellings or lingering non-unidecoded 41 | characters. 42 | """ 43 | dist = levenshtein(normalized.lower(), line[:-1].lower(), 5) 44 | if dist >= 0: 45 | matches += [(line[:-1], dist)] 46 | 47 | """ 48 | If one match is found, return that one; 49 | otherwise, return list of likely candidates and allow 50 | the user to confirm specifiy their selection. 51 | """ 52 | if len(matches) == 1 or ask_matches == False: 53 | matches.sort(key=lambda tup: tup[1]) 54 | if ask_matches: 55 | print("You searched for \"{}\"\n{} result found.\n{}".format(player, len(matches), matches[0][0])) 56 | print("Results for {}:\n".format(matches[0][0])) 57 | return matches[0][0] 58 | 59 | elif len(matches) > 1: 60 | print("You searched for \"{}\"\n{} results found.".format(player, len(matches))) 61 | matches.sort(key=lambda tup: tup[1]) 62 | i = 0 63 | return matches[0][0] 64 | for match in matches: 65 | print("{}: {}".format(i, match[0])) 66 | i += 1 67 | 68 | selection = int(input("Pick one: ")) 69 | print("Results for {}:\n".format(matches[selection][0])) 70 | return matches[selection][0] 71 | 72 | elif len(matches) < 1: 73 | print("You searched for \"{}\"\n{} results found.".format(player, len(matches))) 74 | return "" 75 | 76 | else: 77 | print("You searched for \"{}\"\n{} result found.\n{}".format(player, len(matches), matches[0][0])) 78 | print("Results for {}:\n".format(matches[0][0])) 79 | return matches[0][0] 80 | 81 | return "" 82 | -------------------------------------------------------------------------------- /basketball_reference_scraper/constants.py: -------------------------------------------------------------------------------- 1 | TEAM_TO_TEAM_ABBR = { 2 | 'ATLANTA HAWKS': 'ATL', 3 | 'ST. LOUIS HAWKS': 'SLH', 4 | 'MILWAUKEE HAWKS': 'MIL', 5 | 'TRI-CITIES BLACKHAWKS': 'TCB', 6 | 'BOSTON CELTICS': 'BOS', 7 | 'BROOKLYN NETS': 'BRK', 8 | 'NEW JERSEY NETS' : 'NJN', 9 | 'NEW YORK NETS' : 'NYN', 10 | 'CHICAGO BULLS': 'CHI', 11 | 'CHARLOTTE HORNETS': 'CHO', 12 | 'CHARLOTTE BOBCATS' : 'CHA', 13 | 'CLEVELAND CAVALIERS': 'CLE', 14 | 'DALLAS MAVERICKS': 'DAL', 15 | 'DENVER NUGGETS': 'DEN', 16 | 'DETROIT PISTONS': 'DET', 17 | 'FORT WAYNE PISTONS': 'FWP', 18 | 'GOLDEN STATE WARRIORS': 'GSW', 19 | 'SAN FRANCISCO WARRIORS': 'SFW', 20 | 'PHILADELPHIA WARRIORS': 'PHI', 21 | 'HOUSTON ROCKETS': 'HOU', 22 | 'SAN DIEGO ROCKETS': 'HOU', 23 | 'INDIANA PACERS': 'IND', 24 | 'LOS ANGELES CLIPPERS': 'LAC', 25 | 'SAN DIEGO CLIPPERS': 'SDC', 26 | 'BUFFALO BRAVES': 'BUF', 27 | 'LOS ANGELES LAKERS': 'LAL', 28 | 'MINNEAPOLIS LAKERS': 'MIN', 29 | 'MEMPHIS GRIZZLIES': 'MEM', 30 | 'VANCOUVER GRIZZLIES' : 'VAN', 31 | 'MIAMI HEAT': 'MIA', 32 | 'MILWAUKEE BUCKS': 'MIL', 33 | 'MINNESOTA TIMBERWOLVES': 'MIN', 34 | 'NEW ORLEANS PELICANS' : 'NOP', 35 | 'NEW ORLEANS/OKLAHOMA CITY HORNETS' : 'NOK', 36 | 'NEW ORLEANS HORNETS' : 'NOH', 37 | 'NEW YORK KNICKS' : 'NYK', 38 | 'OKLAHOMA CITY THUNDER' : 'OKC', 39 | 'SEATTLE SUPERSONICS' : 'SEA', 40 | 'ORLANDO MAGIC' : 'ORL', 41 | 'PHILADELPHIA 76ERS' : 'PHI', 42 | 'SYRACUSE NATIONALS' : 'SYR', 43 | 'PHOENIX SUNS' : 'PHO', 44 | 'PORTLAND TRAIL BLAZERS' : 'POR', 45 | 'SACRAMENTO KINGS' : 'SAC', 46 | 'KANSAS CITY KINGS' : 'KCK', 47 | 'KANSAS CITY-OMAHA KINGS' : 'KCK', 48 | 'CINCINNATI ROYALS' : 'CIN', 49 | 'ROCHESTER ROYALS': 'ROR', 50 | 'SAN ANTONIO SPURS' : 'SAS', 51 | 'TORONTO RAPTORS' : 'TOR', 52 | 'UTAH JAZZ' : 'UTA', 53 | 'NEW ORLEANS JAZZ' : 'NOJ', 54 | 'WASHINGTON WIZARDS' : 'WAS', 55 | 'WASHINGTON BULLETS' : 'WAS', 56 | 'CAPITAL BULLETS' : 'CAP', 57 | 'BALTIMORE BULLETS' : 'BAL', 58 | 'CHICAGO ZEPHYRS' : 'CHI', 59 | 'CHICAGO PACKERS' : 'CHI', 60 | 61 | # DEFUNCT FRANCHISES 62 | 'ANDERSON PACKERS': 'AND', 63 | 'CHICAGO STAGS': 'CHI', 64 | 'INDIANAPOLIS OLYMPIANS': 'IND', 65 | 'SHEBOYGAN RED SKINS': 'SRS', 66 | 'ST. LOUIS BOMBERS': 'SLB', 67 | 'WASHINGTON CAPITOLS' : 'WAS', 68 | 'WATERLOO HAWKS': 'WAT', 69 | } 70 | TEAM_SETS = [['STL', 'TRI', 'MLH', 'ATL'], 71 | ['BOS'], 72 | ['NJN', 'BRK', 'NYN', 'NJA', 'NYA'], 73 | ['CHO', 'CHA', 'CHH'], 74 | ['CHI'], 75 | ['CLE'], 76 | ['DAL'], 77 | ['DEN', 'DNR', 'DNA'], 78 | ['DET', 'FTW'], 79 | ['GSW', 'SFW', 'PHW'], 80 | ['SDR', 'HOU'], 81 | ['INA', 'IND'], 82 | ['SDC', 'LAC', 'BUF'], 83 | ['LAL', 'MNL'], 84 | ['MEM', 'VAN'], 85 | ['MIA'], 86 | ['MIL'], 87 | ['MIN'], 88 | ['NOP', 'NOH', 'NOK'], 89 | ['NYK'], 90 | ['SEA', 'OKC'], 91 | ['ORL'], 92 | ['PHI', 'SYR'], 93 | ['PHO'], 94 | ['POR'], 95 | ['CIN', 'SAC', 'KCO', 'KCK', 'ROC'], 96 | ['DLC', 'SAA', 'SAS', 'TEX'], 97 | ['TOR'], 98 | ['NOJ', 'UTA'], 99 | ['WSB', 'CHP', 'CAP', 'BAL', 'WAS', 'CHZ']] 100 | -------------------------------------------------------------------------------- /basketball_reference_scraper/seasons.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from datetime import datetime 3 | from bs4 import BeautifulSoup 4 | 5 | try: 6 | from request_utils import get_wrapper 7 | except: 8 | from basketball_reference_scraper.request_utils import get_wrapper 9 | 10 | 11 | def get_schedule(season, playoffs=False): 12 | months = ['October', 'November', 'December', 'January', 'February', 'March', 13 | 'April', 'May', 'June'] 14 | if season==2020: 15 | months = ['October-2019', 'November', 'December', 'January', 'February', 'March', 16 | 'July', 'August', 'September', 'October-2020'] 17 | df = pd.DataFrame() 18 | for month in months: 19 | r = get_wrapper(f'https://www.basketball-reference.com/leagues/NBA_{season}_games-{month.lower()}.html') 20 | if r.status_code==200: 21 | soup = BeautifulSoup(r.content, 'html.parser') 22 | table = soup.find('table', attrs={'id': 'schedule'}) 23 | if table: 24 | month_df = pd.read_html(str(table))[0] 25 | df = pd.concat([df, month_df]) 26 | 27 | df = df.reset_index() 28 | 29 | cols_to_remove = [i for i in df.columns if 'Unnamed' in i] 30 | cols_to_remove += [i for i in df.columns if 'Notes' in i] 31 | cols_to_remove += [i for i in df.columns if 'Start' in i] 32 | cols_to_remove += [i for i in df.columns if 'Attend' in i] 33 | cols_to_remove += [i for i in df.columns if 'Arena' in i] 34 | cols_to_remove += ['index'] 35 | df = df.drop(cols_to_remove, axis=1) 36 | df.columns = ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 'HOME_PTS'] 37 | 38 | if season==2020: 39 | df = df[df['DATE']!='Playoffs'] 40 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x)) 41 | df = df.sort_values(by='DATE') 42 | df = df.reset_index().drop('index', axis=1) 43 | playoff_loc = df[df['DATE']==pd.to_datetime('2020-08-17')].head(n=1) 44 | if len(playoff_loc.index)>0: 45 | playoff_index = playoff_loc.index[0] 46 | else: 47 | playoff_index = len(df) 48 | if playoffs: 49 | df = df[playoff_index:] 50 | else: 51 | df = df[:playoff_index] 52 | else: 53 | # account for 1953 season where there's more than one "playoffs" header 54 | if season == 1953: 55 | df.drop_duplicates(subset=['DATE', 'HOME', 'VISITOR'], inplace=True) 56 | playoff_loc = df[df['DATE']=='Playoffs'] 57 | if len(playoff_loc.index)>0: 58 | playoff_index = playoff_loc.index[0] 59 | else: 60 | playoff_index = len(df) 61 | if playoffs: 62 | df = df[playoff_index+1:] 63 | else: 64 | df = df[:playoff_index] 65 | df['DATE'] = df['DATE'].apply(lambda x: pd.to_datetime(x)) 66 | return df 67 | 68 | def get_standings(date=None): 69 | if date is None: 70 | date = datetime.now() 71 | else: 72 | date = pd.to_datetime(date) 73 | d = {} 74 | r = get_wrapper(f'https://www.basketball-reference.com/friv/standings.fcgi?month={date.month}&day={date.day}&year={date.year}') 75 | if r.status_code==200: 76 | soup = BeautifulSoup(r.content, 'html.parser') 77 | e_table = soup.find('table', attrs={'id': 'standings_e'}) 78 | w_table = soup.find('table', attrs={'id': 'standings_w'}) 79 | e_df = pd.DataFrame(columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G']) 80 | w_df = pd.DataFrame(columns = ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G']) 81 | if e_table and w_table: 82 | e_df = pd.read_html(str(e_table))[0] 83 | w_df = pd.read_html(str(w_table))[0] 84 | e_df.rename(columns={'Eastern Conference': 'TEAM'}, inplace=True) 85 | w_df.rename(columns={'Western Conference': 'TEAM'}, inplace=True) 86 | d['EASTERN_CONF'] = e_df 87 | d['WESTERN_CONF'] = w_df 88 | return d 89 | else: 90 | raise ConnectionError('Request to basketball reference failed') 91 | -------------------------------------------------------------------------------- /basketball_reference_scraper/box_scores.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from requests import get 3 | from bs4 import BeautifulSoup 4 | from datetime import datetime 5 | from unidecode import unidecode 6 | import re 7 | 8 | try: 9 | from utils import get_game_suffix, remove_accents 10 | from players import get_stats 11 | from request_utils import get_wrapper 12 | except: 13 | from basketball_reference_scraper.utils import get_game_suffix, remove_accents 14 | from basketball_reference_scraper.players import get_stats 15 | from basketball_reference_scraper.request_utils import get_wrapper 16 | 17 | def get_box_scores(date, team1, team2, period='GAME', stat_type='BASIC'): 18 | """ 19 | Get the box scores for a given game between two teams on a given date. 20 | 21 | Args: 22 | date (str): The date of the game in 'YYYY-MM-DD' format. 23 | team1 (str): The abbreviation of the first team. 24 | team2 (str): The abbreviation of the second team. 25 | period (str, optional): The period of the game to retrieve stats for. Defaults to 'GAME'. 26 | stat_type (str, optional): The type of stats to retrieve. Must be 'BASIC' or 'ADVANCED'. Defaults to 'BASIC'. 27 | 28 | Returns: 29 | dict: A dictionary containing the box scores for both teams. 30 | """ 31 | if stat_type not in ['BASIC', 'ADVANCED']: 32 | raise ValueError('stat_type must be "BASIC" or "ADVANCED"') 33 | date = pd.to_datetime(date) 34 | suffix = get_game_suffix(date, team1, team2) 35 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}') 36 | if r.status_code == 200: 37 | dfs = [] 38 | if period == 'GAME': 39 | if stat_type == 'ADVANCED': 40 | selectors = [f'box-{team1}-game-advanced', f'box-{team2}-game-advanced'] 41 | else: 42 | selectors = [f'box-{team1}-game-basic', f'box-{team2}-game-basic'] 43 | else: 44 | selectors = [f'box-{team1}-{period.lower()}-basic', f'box-{period.lower()}-game-basic'] 45 | soup = BeautifulSoup(r.content, 'html.parser') 46 | for selector in selectors: 47 | table = soup.find('table', { 'id': selector }) 48 | raw_df = pd.read_html(str(table))[0] 49 | df = _process_box(raw_df) 50 | if team1 in selector: 51 | df['PLAYER'] = df['PLAYER'].apply(lambda name: remove_accents(name, team1, date.year)) 52 | if team2 in selector: 53 | df['PLAYER'] = df['PLAYER'].apply(lambda name: remove_accents(name, team2, date.year)) 54 | dfs.append(df) 55 | return {team1: dfs[0], team2: dfs[1]} 56 | else: 57 | raise ConnectionError('Request to basketball reference failed') 58 | 59 | def _process_box(df): 60 | """ Perform basic processing on a box score - common to both methods 61 | 62 | Args: 63 | df (DataFrame): the raw box score df 64 | 65 | Returns: 66 | DataFrame: processed box score 67 | """ 68 | df.columns = list(map(lambda x: x[1], list(df.columns))) 69 | df.rename(columns = {'Starters': 'PLAYER'}, inplace=True) 70 | if 'Tm' in df: 71 | df.rename(columns = {'Tm': 'TEAM'}, inplace=True) 72 | reserve_index = df[df['PLAYER']=='Reserves'].index[0] 73 | df = df.drop(reserve_index).reset_index().drop('index', axis=1) 74 | return df 75 | 76 | 77 | 78 | def get_all_star_box_score(year: int): 79 | """ Returns box star for all star game in a given year 80 | 81 | Args: 82 | year (int): the year of the all star game 83 | 84 | Raises: 85 | ValueError: if invalid year is intered 86 | ConnectionError: when server cannot be reached 87 | 88 | Returns: 89 | dict: dictionary containing entries (team name, box score dataframe) for each team 90 | """ 91 | if year >= datetime.now().year or year < 1951: 92 | raise ValueError('Please enter a valid year') 93 | r = get_wrapper(f'https://www.basketball-reference.com/allstar/NBA_{year}.html') 94 | if r.status_code == 200: 95 | dfs = [] 96 | soup = BeautifulSoup(r.content, 'html.parser') 97 | team_names = list(map(lambda el: el.text, soup.select('div.section_heading > h2')[1:3])) 98 | for table in soup.find_all('table')[1:3]: 99 | raw_df = pd.read_html(str(table))[0] 100 | df = _process_box(raw_df) 101 | #drop team totals row (always last), totals row 102 | totals_index = df[df['MP'] == 'Totals'].index[0] 103 | df = df.drop(totals_index).reset_index().drop('index', axis=1) 104 | df = df.drop(df.tail(1).index).reset_index().drop('index', axis=1) 105 | df['PLAYER'] = df['PLAYER'].apply(lambda x: unidecode(x)) 106 | dfs.append(df) 107 | res = {team_names[0]: dfs[0], team_names[1]: dfs[1]} 108 | # add DNPs for all-star roster purposes 109 | # the all-star team each dnp is on is in parens. for some reasons this captures parens 110 | dnp_allstar_teams = re.findall(r'\((.*?)\)', soup.select('ul.page_index > li > div')[0].text) 111 | for i, dnp in enumerate(map(lambda el: el.text, soup.select('ul.page_index > li > div > a'))): 112 | # check if the player is already in the dataframe because sometimes replacements are 113 | # listed twice (e.g. 1980) 114 | as_team = dnp_allstar_teams[i] 115 | if dnp not in res[as_team]['PLAYER'].values: 116 | # infer the added player's real team 117 | stats_df = get_stats(dnp, ask_matches=False) 118 | team = stats_df[stats_df['SEASON'] == f'{year-1}-{str(year)[-2:]}'].head(1)['TEAM'].values[0] 119 | new_row = {'PLAYER': dnp, 'TEAM': team} 120 | # set players allstar team from regexp 121 | res[as_team] = res[as_team].append(new_row, ignore_index=True) 122 | return res 123 | else: 124 | raise ConnectionError('Request to basketball reference failed') -------------------------------------------------------------------------------- /basketball_reference_scraper/utils.py: -------------------------------------------------------------------------------- 1 | from requests import get 2 | from bs4 import BeautifulSoup 3 | import pandas as pd 4 | import unicodedata, unidecode 5 | 6 | try: 7 | from request_utils import get_wrapper 8 | except: 9 | from basketball_reference_scraper.request_utils import get_wrapper 10 | 11 | def get_game_suffix(date, team1, team2): 12 | r = get_wrapper(f'https://www.basketball-reference.com/boxscores/?month={date.month}&year={date.year}&day={date.day}') 13 | if r.status_code==200: 14 | soup = BeautifulSoup(r.content, 'html.parser') 15 | for table in soup.find_all('table', attrs={'class': 'teams'}): 16 | for anchor in table.find_all('a'): 17 | if 'boxscores' in anchor.attrs['href']: 18 | if team1 in str(anchor.attrs['href']) or team2 in str(anchor.attrs['href']): 19 | suffix = anchor.attrs['href'] 20 | return suffix 21 | """ 22 | Helper function for inplace creation of suffixes--necessary in order 23 | to fetch rookies and other players who aren't in the /players 24 | catalogue. Added functionality so that players with abbreviated names 25 | can still have a suffix created. 26 | """ 27 | def create_last_name_part_of_suffix(potential_last_names): 28 | last_names = ''.join(potential_last_names) 29 | if len(last_names) <= 5: 30 | return last_names[:].lower() 31 | else: 32 | return last_names[:5].lower() 33 | 34 | """ 35 | Amended version of the original suffix function--it now creates all 36 | suffixes in place. 37 | 38 | Since basketball reference standardizes URL codes, it is much more efficient 39 | to create them locally and compare names to the page results. The maximum 40 | amount of times a player code repeats is 5, but only 2 players have this 41 | problem--meaning most player URLs are correctly accessed within 1 to 2 42 | iterations of the while loop below. 43 | 44 | Added unidecode to make normalizing incoming string characters more 45 | consistent. 46 | 47 | This implementation dropped player lookup fail count from 306 to 35 to 0. 48 | """ 49 | def get_player_suffix(name): 50 | normalized_name = unidecode.unidecode(unicodedata.normalize('NFD', name).encode('ascii', 'ignore').decode("utf-8")) 51 | if normalized_name == 'Metta World Peace' : 52 | suffix = '/players/a/artesro01.html' 53 | else: 54 | split_normalized_name = normalized_name.split(' ') 55 | if len(split_normalized_name) < 2: 56 | return None 57 | initial = normalized_name.split(' ')[1][0].lower() 58 | all_names = name.split(' ') 59 | first_name_part = unidecode.unidecode(all_names[0][:2].lower()) 60 | first_name = all_names[0] 61 | other_names = all_names[1:] 62 | other_names_search = other_names 63 | last_name_part = create_last_name_part_of_suffix(other_names) 64 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html' 65 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}') 66 | while player_r.status_code == 404: 67 | other_names_search.pop(0) 68 | last_name_part = create_last_name_part_of_suffix(other_names_search) 69 | initial = last_name_part[0].lower() 70 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html' 71 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}') 72 | while player_r.status_code==200: 73 | player_soup = BeautifulSoup(player_r.content, 'html.parser') 74 | h1 = player_soup.find('h1') 75 | if h1: 76 | page_name = h1.find('span').text 77 | """ 78 | Test if the URL we constructed matches the 79 | name of the player on that page; if it does, 80 | return suffix, if not add 1 to the numbering 81 | and recheck. 82 | """ 83 | if ((unidecode.unidecode(page_name)).lower() == normalized_name.lower()): 84 | return suffix 85 | else: 86 | page_names = unidecode.unidecode(page_name).lower().split(' ') 87 | page_first_name = page_names[0] 88 | if first_name.lower() == page_first_name.lower(): 89 | return suffix 90 | # if players have same first two letters of last name then just 91 | # increment suffix 92 | elif first_name.lower()[:2] == page_first_name.lower()[:2]: 93 | player_number = int(''.join(c for c in suffix if c.isdigit())) + 1 94 | if player_number < 10: 95 | player_number = f"0{str(player_number)}" 96 | suffix = f"/players/{initial}/{last_name_part}{first_name_part}{player_number}.html" 97 | else: 98 | other_names_search.pop(0) 99 | last_name_part = create_last_name_part_of_suffix(other_names_search) 100 | initial = last_name_part[0].lower() 101 | suffix = '/players/'+initial+'/'+last_name_part+first_name_part+'01.html' 102 | 103 | player_r = get_wrapper(f'https://www.basketball-reference.com{suffix}') 104 | 105 | return None 106 | 107 | 108 | def remove_accents(name, team, season_end_year): 109 | alphabet = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY ') 110 | if len(set(name).difference(alphabet))==0: 111 | return name 112 | r = get_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html') 113 | team_df = None 114 | best_match = name 115 | if r.status_code==200: 116 | soup = BeautifulSoup(r.content, 'html.parser') 117 | table = soup.find('table') 118 | team_df = pd.read_html(str(table))[0] 119 | max_matches = 0 120 | for p in team_df['Player']: 121 | matches = sum(l1 == l2 for l1, l2 in zip(p, name)) 122 | if matches>max_matches: 123 | max_matches = matches 124 | best_match = p 125 | return best_match 126 | -------------------------------------------------------------------------------- /basketball_reference_scraper/players.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from requests import get 3 | from bs4 import BeautifulSoup 4 | 5 | try: 6 | from utils import get_player_suffix 7 | from lookup import lookup 8 | from request_utils import get_wrapper, get_selenium_wrapper 9 | except: 10 | from basketball_reference_scraper.utils import get_player_suffix 11 | from basketball_reference_scraper.request_utils import get_wrapper, get_selenium_wrapper 12 | from basketball_reference_scraper.lookup import lookup 13 | 14 | def get_stats(_name, stat_type='PER_GAME', playoffs=False, career=False, ask_matches = True): 15 | name = lookup(_name, ask_matches) 16 | suffix = get_player_suffix(name) 17 | if not suffix: 18 | return pd.DataFrame() 19 | stat_type = stat_type.lower() 20 | table = None 21 | if stat_type in ['per_game', 'totals', 'advanced'] and not playoffs: 22 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}') 23 | if r.status_code == 200: 24 | soup = BeautifulSoup(r.content, 'html.parser') 25 | table = soup.find('table', { 'id': stat_type }) 26 | table = str(table) 27 | else: 28 | raise ConnectionError('Request to basketball reference failed') 29 | elif stat_type in ['per_minute', 'per_poss'] or playoffs: 30 | if playoffs: 31 | xpath = f"//table[@id='playoffs_{stat_type}']" 32 | else: 33 | xpath = f"//table[@id='{stat_type}']" 34 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/{suffix}', xpath) 35 | if table is None: 36 | return pd.DataFrame() 37 | df = pd.read_html(table)[0] 38 | df.rename(columns={'Season': 'SEASON', 'Age': 'AGE', 39 | 'Tm': 'TEAM', 'Lg': 'LEAGUE', 'Pos': 'POS', 'Awards': 'AWARDS'}, inplace=True) 40 | if 'FG.1' in df.columns: 41 | df.rename(columns={'FG.1': 'FG%'}, inplace=True) 42 | if 'eFG' in df.columns: 43 | df.rename(columns={'eFG': 'eFG%'}, inplace=True) 44 | if 'FT.1' in df.columns: 45 | df.rename(columns={'FT.1': 'FT%'}, inplace=True) 46 | 47 | career_index = df[df['SEASON']=='Career'].index[0] 48 | if career: 49 | df = df.iloc[career_index+2:, :] 50 | else: 51 | df = df.iloc[:career_index, :] 52 | 53 | df = df.reset_index().drop('index', axis=1) 54 | return df 55 | 56 | 57 | def get_game_logs(_name, year, playoffs=False, ask_matches=True): 58 | name = lookup(_name, ask_matches) 59 | suffix = get_player_suffix(name).replace('.html', '') 60 | if playoffs: 61 | selector = 'pgl_basic_playoffs' 62 | url = f'https://www.basketball-reference.com/{suffix}/gamelog-playoffs' 63 | else: 64 | selector = 'pgl_basic' 65 | url = f'https://www.basketball-reference.com/{suffix}/gamelog/{year}' 66 | r = get_wrapper(url) 67 | if r.status_code == 200: 68 | soup = BeautifulSoup(r.content, 'html.parser') 69 | table = soup.find('table', { 'id': selector }) 70 | df = pd.read_html(str(table))[0] 71 | df.rename(columns = {'Date': 'DATE', 'Age': 'AGE', 'Tm': 'TEAM', 'Unnamed: 5': 'HOME/AWAY', 'Opp': 'OPPONENT', 72 | 'Unnamed: 7': 'RESULT', 'GmSc': 'GAME_SCORE', 'Series': 'SERIES' }, inplace=True) 73 | df['HOME/AWAY'] = df['HOME/AWAY'].apply(lambda x: 'AWAY' if x=='@' else 'HOME') 74 | df = df[df['Rk']!='Rk'] 75 | df = df.drop(['Rk', 'G'], axis=1).reset_index(drop=True) 76 | if not playoffs: 77 | df['DATE'] = pd.to_datetime(df['DATE']) 78 | return df 79 | else: 80 | raise ConnectionError('Request to basketball reference failed') 81 | 82 | def get_player_headshot(_name, ask_matches=True): 83 | name = lookup(_name, ask_matches) 84 | suffix = get_player_suffix(name) 85 | jpg = suffix.split('/')[-1].replace('html', 'jpg') 86 | url = 'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/'+jpg 87 | return url 88 | 89 | def get_player_splits(_name, season_end_year, stat_type='PER_GAME', ask_matches=True): 90 | name = lookup(_name, ask_matches) 91 | suffix = get_player_suffix(name)[:-5] 92 | r = get_wrapper(f'https://www.basketball-reference.com/{suffix}/splits/{season_end_year}') 93 | if r.status_code==200: 94 | soup = BeautifulSoup(r.content, 'html.parser') 95 | table = soup.find('table') 96 | if table: 97 | df = pd.read_html(str(table))[0] 98 | for i in range(1, len(df['Unnamed: 0_level_0','Split'])): 99 | if isinstance(df['Unnamed: 0_level_0','Split'][i], float): 100 | df['Unnamed: 0_level_0','Split'][i] = df['Unnamed: 0_level_0','Split'][i-1] 101 | df = df[~df['Unnamed: 1_level_0','Value'].str.contains('Total|Value')] 102 | 103 | headers = df.iloc[:,:2] 104 | headers = headers.droplevel(0, axis=1) 105 | 106 | if stat_type.lower() in ['per_game', 'shooting', 'advanced', 'totals']: 107 | if stat_type.lower() == 'per_game': 108 | df = df['Per Game'] 109 | df['Split'] = headers['Split'] 110 | df['Value'] = headers['Value'] 111 | cols = df.columns.tolist() 112 | cols = cols[-2:] + cols[:-2] 113 | df = df[cols] 114 | return df 115 | elif stat_type.lower() == 'shooting': 116 | df = df['Shooting'] 117 | df['Split'] = headers['Split'] 118 | df['Value'] = headers['Value'] 119 | cols = df.columns.tolist() 120 | cols = cols[-2:] + cols[:-2] 121 | df = df[cols] 122 | return df 123 | 124 | elif stat_type.lower() == 'advanced': 125 | df = df['Advanced'] 126 | df['Split'] = headers['Split'] 127 | df['Value'] = headers['Value'] 128 | cols = df.columns.tolist() 129 | cols = cols[-2:] + cols[:-2] 130 | df = df[cols] 131 | return df 132 | elif stat_type.lower() == 'totals': 133 | df = df['Totals'] 134 | df['Split'] = headers['Split'] 135 | df['Value'] = headers['Value'] 136 | cols = df.columns.tolist() 137 | cols = cols[-2:] + cols[:-2] 138 | df = df[cols] 139 | return df 140 | else: 141 | raise Exception('The "stat_type" you entered does not exist. The following options are: PER_GAME, SHOOTING, ADVANCED, TOTALS') 142 | else: 143 | raise ConnectionError('Request to basketball reference failed') -------------------------------------------------------------------------------- /basketball_reference_scraper/teams.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from bs4 import BeautifulSoup 3 | 4 | try: 5 | from constants import TEAM_TO_TEAM_ABBR, TEAM_SETS 6 | from utils import remove_accents 7 | from request_utils import get_wrapper, get_selenium_wrapper 8 | except: 9 | from basketball_reference_scraper.constants import TEAM_TO_TEAM_ABBR, TEAM_SETS 10 | from basketball_reference_scraper.utils import remove_accents 11 | from basketball_reference_scraper.request_utils import get_wrapper, get_selenium_wrapper 12 | 13 | 14 | def get_roster(team, season_end_year): 15 | r = get_wrapper( 16 | f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html') 17 | df = None 18 | if r.status_code == 200: 19 | soup = BeautifulSoup(r.content, 'html.parser') 20 | table = soup.find('table', {'id': 'roster'}) 21 | df = pd.read_html(str(table))[0] 22 | df.columns = ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 'BIRTH_DATE', 23 | 'NATIONALITY', 'EXPERIENCE', 'COLLEGE'] 24 | # remove rows with no player name (this was the issue above) 25 | df = df[df['PLAYER'].notna()] 26 | df['PLAYER'] = df['PLAYER'].apply( 27 | lambda name: remove_accents(name, team, season_end_year)) 28 | # handle rows with empty fields but with a player name. 29 | df['BIRTH_DATE'] = df['BIRTH_DATE'].apply( 30 | lambda x: pd.to_datetime(x) if pd.notna(x) else pd.NaT) 31 | df['NATIONALITY'] = df['NATIONALITY'].apply( 32 | lambda x: x.upper() if pd.notna(x) else '') 33 | 34 | return df 35 | 36 | 37 | def get_team_stats(team, season_end_year, data_format='TOTALS'): 38 | xpath = '//table[@id="team_and_opponent"]' 39 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath) 40 | if not table: 41 | raise ConnectionError('Request to basketball reference failed') 42 | df = pd.read_html(table)[0] 43 | opp_idx = df[df['Unnamed: 0'] == 'Opponent'].index[0] 44 | df = df[:opp_idx] 45 | if data_format == 'TOTALS': 46 | row_idx = 'Team' 47 | elif data_format == 'PER_GAME': 48 | row_idx = 'Team/G' 49 | elif data_format == 'RANK': 50 | row_idx = 'Lg Rank' 51 | elif data_format == 'YEAR/YEAR': 52 | row_idx = 'Year/Year' 53 | else: 54 | print('Invalid data format') 55 | return pd.DataFrame() 56 | 57 | s = df[df['Unnamed: 0'] == row_idx] 58 | s = s.drop(columns=['Unnamed: 0']).reindex() 59 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0]) 60 | 61 | 62 | def get_opp_stats(team, season_end_year, data_format='PER_GAME'): 63 | xpath = '//table[@id="team_and_opponent"]' 64 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath) 65 | if not table: 66 | raise ConnectionError('Request to basketball reference failed') 67 | df = pd.read_html(table)[0] 68 | opp_idx = df[df['Unnamed: 0'] == 'Opponent'].index[0] 69 | df = df[opp_idx:] 70 | if data_format == 'TOTALS': 71 | row_idx = 'Opponent' 72 | elif data_format == 'PER_GAME': 73 | row_idx = 'Opponent/G' 74 | elif data_format == 'RANK': 75 | row_idx = 'Lg Rank' 76 | elif data_format == 'YEAR/YEAR': 77 | row_idx = 'Year/Year' 78 | else: 79 | print('Invalid data format') 80 | return pd.DataFrame() 81 | 82 | s = df[df['Unnamed: 0'] == row_idx] 83 | s = s.drop(columns=['Unnamed: 0']).reindex() 84 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0]) 85 | 86 | 87 | def get_team_misc(team, season_end_year, data_format='TOTALS'): 88 | xpath = '//table[@id="team_misc"]' 89 | table = get_selenium_wrapper(f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath) 90 | if not table: 91 | raise ConnectionError('Request to basketball reference failed') 92 | df = pd.read_html(table)[0] 93 | if data_format == 'TOTALS': 94 | row_idx = 'Team' 95 | elif data_format == 'RANK': 96 | row_idx = 'Lg Rank' 97 | else: 98 | print('Invalid data format') 99 | return pd.DataFrame() 100 | df.columns = df.columns.droplevel() 101 | df.rename(columns={'Arena': 'ARENA', 102 | 'Attendance': 'ATTENDANCE'}, inplace=True) 103 | s = df[df['Unnamed: 0_level_1'] == row_idx] 104 | s = s.drop(columns=['Unnamed: 0_level_1']).reindex() 105 | return pd.Series(index=list(s.columns), data=s.values.tolist()[0]) 106 | 107 | def get_roster_stats(team: list, season_end_year: int, data_format='PER_GAME', playoffs=False): 108 | if playoffs: 109 | xpath=f'//table[@id="playoffs_{data_format.lower()}"]' 110 | else: 111 | xpath=f'//table[@id="{data_format.lower()}"]' 112 | table = get_selenium_wrapper( 113 | f'https://www.basketball-reference.com/teams/{team}/{season_end_year}.html', xpath) 114 | if not table: 115 | raise ConnectionError('Request to basketball reference failed') 116 | df = pd.read_html(table)[0] 117 | df.rename(columns={'Player': 'PLAYER', 'Age': 'AGE', 118 | 'Tm': 'TEAM', 'Pos': 'POS'}, inplace=True) 119 | df['PLAYER'] = df['PLAYER'].apply( 120 | lambda name: remove_accents(name, team, season_end_year)) 121 | df = df.reset_index().drop(['Rk', 'index'], axis=1) 122 | return df 123 | 124 | def get_team_ratings(season_end_year: int, team=[]): 125 | r = get_wrapper(f'https://www.basketball-reference.com/leagues/NBA_{season_end_year}_ratings.html') 126 | if r.status_code == 200: 127 | soup = BeautifulSoup(r.content, 'html.parser') 128 | table = soup.find('table', { 'id': 'ratings' }) 129 | 130 | df = pd.read_html(str(table))[0] 131 | # Clean columns and indexes 132 | df = df.droplevel(level=0, axis=1) 133 | 134 | upper_cols = list(pd.Series(df.columns).apply(lambda x: x.upper())) 135 | df.columns = upper_cols 136 | df.dropna(inplace=True) 137 | df = df[df['RK'] != 'Rk'] 138 | df['TEAM'] = df['TEAM'].apply(lambda x: x.upper()) 139 | df['TEAM'] = df['TEAM'].apply(lambda x: TEAM_TO_TEAM_ABBR[x]) 140 | 141 | # Add 'Season' column in and change order of columns 142 | df['SEASON'] = f'{season_end_year-1}-{str(season_end_year)[2:]}' 143 | cols = df.columns.tolist() 144 | cols = cols[0:1] + cols[-1:] + cols[1:-1] 145 | df = df[cols] 146 | 147 | # Add the ability to either pass no teams (empty list), one team (str), or multiple teams (list) 148 | if len(team) > 0: 149 | if isinstance(team, str): 150 | list_team = [] 151 | list_team.append(team) 152 | df = df[df['TEAM'].isin(list_team)] 153 | else: 154 | df = df[df['TEAM'].isin(team)] 155 | df = df.reindex() 156 | return df 157 | else: 158 | raise ConnectionError('Request to basketball reference failed') 159 | -------------------------------------------------------------------------------- /API.md: -------------------------------------------------------------------------------- 1 | ## Teams 2 | 3 | Usage 4 | 5 | ``` 6 | from basketball_reference_scraper.teams import get_roster, get_team_stats, get_opp_stats, get_roster_stats, get_team_misc 7 | ``` 8 | 9 | ### `get_roster(team, season)` 10 | Parameters: 11 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`) 12 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`) 13 | 14 | Returns: 15 | 16 | A Pandas Dataframe containing the following columns: 17 | 18 | ``` 19 | ['NUMBER', 'PLAYER', 'POS', 'HEIGHT', 'WEIGHT', 'BIRTH_DATE', 20 | 'NATIONALITY', 'EXPERIENCE', 'COLLEGE'] 21 | ``` 22 | 23 | ### `get_team_stats(team, season_end_year, data_format='TOTALS')` 24 | 25 | Parameters: 26 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`) 27 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`) 28 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'RANK'|'YEAR/YEAR'`. Default value is `'TOTALS'` 29 | 30 | Returns: 31 | 32 | A Pandas Series containing the following indices: 33 | 34 | **Note**: Ranks are per game (except for MP, which are total) and sorted descending (except for TOV and PF); opponents ranked are flipped; year/year calculations are also per game 35 | 36 | ``` 37 | ['G', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'FT', 'FTA', 'FT%', 'ORB', 38 | 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 39 | ``` 40 | 41 | 42 | ### `get_opp_stats(team, season_end_year, data_format)` 43 | 44 | Parameters: 45 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`) 46 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`) 47 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'RANK'|'YEAR/YEAR'`. Default value is `'TOTALS'` 48 | 49 | Returns: 50 | 51 | A Pandas Series containing the following indices: 52 | 53 | **Note**: Ranks are per game (except for MP, which are total) and sorted descending (except for TOV and PF); opponents ranked are flipped; year/year calculations are also per game 54 | 55 | ``` 56 | ['OPP_G', 'OPP_MP', 'OPP_FG', 'OPP_FGA', 'OPP_FG%', 'OPP_3P', 'OPP_3PA', 'OPP_3P%', 'OPP_2P', 'OPP_2PA', 'OPP_2P%', 'OPP_FT', 'OPP_FTA', 'OPP_FT%', 57 | 'OPP_ORB', 'OPP_DRB', 'OPP_TRB', 'OPP_AST', 'OPP_STL', 'OPP_BLK', 'OPP_TOV', 'OPP_PF', 'OPP_PTS'] 58 | ``` 59 | 60 | ### `get_team_misc(team, season, data_format)` 61 | 62 | Parameters: 63 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`) 64 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`) 65 | - `data_format` - One of `'TOTALS'|'RANK'`. Default value is `'TOTALS'` 66 | 67 | Returns: 68 | 69 | A Pandas Series containing the following columns: 70 | 71 | ``` 72 | ['W', 'L', 'PW', 'PL', 'MOV', 'SOS', 'SRS', 'ORtg', 'DRtg', 'Pace', 'FTr', '3PAr', 'eFG%', 'TOV%', 'ORB%', 73 | 'FT/FGA', 'eFG%', 'TOV%', 'DRB%', 'FT/FGA', 'Arena', 'Attendance'] 74 | ``` 75 | 76 | ### `get_roster_stats(team, season, data_format='PER_GAME', playoffs=False)` 77 | 78 | Parameters: 79 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`) 80 | - `season_end_year` - Desired end year (e.g. `1988`, `2011`) 81 | - `data_format` - One of `'TOTALS'|'PER_GAME'|'PER_MINUTE'|'PER_POSS'|'ADVANCED'`. Default value is `'PER_GAME'` 82 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False` 83 | 84 | Returns: 85 | 86 | A Pandas Series containing the following columns: 87 | 88 | ``` 89 | ['PLAYER', 'POS', 'AGE', 'TEAM', 'G', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', '2P', '2PA', '2P%', 'eFG%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'SEASON'] 90 | ``` 91 | 92 | ### `get_team_ratings(season, team=[])` 93 | 94 | Parameters: 95 | - `season` - Desired end year (e.g. `1988`, `2011`) 96 | - `team` - NBA team abbreviation (e.g. `'GSW'`, `'SAS'`), list of abbreviations (e.g. `['GSW'`, `'SAS']`), or empty list (indicating all team ratings). Default value is `[]`. 97 | 98 | Returns: 99 | 100 | A Pandas Dataframe containing the following columns: 101 | 102 | ``` 103 | ['RK', 'TEAM', 'CONF', 'DIV', 'W', 'L', 'W/L%', 'MOV', 'ORTG', 'DRTG', 104 | 'NRTG', 'MOV/A', 'ORTG/A', 'DRTG/A', 'NRTG/A'] 105 | ``` 106 | 107 | ## Players 108 | 109 | Usage 110 | 111 | ``` 112 | from basketball_reference_scraper.players import get_stats, get_game_logs, get_player_headshot 113 | ``` 114 | 115 | ### `get_stats(name, stat_type='PER_GAME', playoffs=False, career=False)` 116 | 117 | Parameters: 118 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`) 119 | - `stat_type` - One of `'PER_GAME', 'PER_MINUTE', 'PER_POSS', 'ADVANCED'` 120 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `False` 121 | - `career` - Whether to return career stats or not. One of `True|False`. Default value is `False` 122 | 123 | Returns: 124 | 125 | A Pandas DataFrame that varies based on the parameters passed. 126 | Please refer to a [sample page](https://www.basketball-reference.com/players/a/aldrila01.html) for full details. 127 | 128 | ### `get_game_logs(name, start_date, end_date, playoffs=False)` 129 | 130 | Parameters: 131 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`) 132 | - `start_date` - Date in string format of `'YYYY-MM-DD'`. 133 | - `end_date` - Date in string format of `'YYYY-MM-DD'`. 134 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `False` 135 | 136 | Returns: 137 | 138 | A Pandas DataFrame containing the following columns: 139 | 140 | ``` 141 | ['DATE', 'AGE', 'TEAM', 'HOME/AWAY', 'OPPONENT', 'RESULT', 'GS', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', 'GAME_SCORE', '+/-'] 142 | ``` 143 | 144 | ### `get_player_headshot(name)` 145 | 146 | Parameters: 147 | - `name` - Player full name (e.g. `'LaMarcus Aldridge'`) 148 | 149 | Returns: 150 | A url that points to the Basketball Reference headshot of the individual player. For example, if `name = 'Kobe Bryant'`, the resulting url is `'https://d2cwpp38twqe55.cloudfront.net/req/202006192/images/players/bryanko01.jpg'` 151 | 152 | 153 | ## Seasons 154 | 155 | Usage 156 | 157 | ``` 158 | from basketball_reference_scraper.seasons import get_schedule, get_standings 159 | ``` 160 | 161 | 162 | ### `get_schedule(season, playoffs=False)` 163 | 164 | Parameters: 165 | - `season` - Desired end year (e.g. `1988`, `2011`) 166 | - `playoffs` - Whether to return Playoff stats or not. One of `True|False`. Default value is `'False'` 167 | 168 | Returns: 169 | 170 | A Pandas DataFrame with the following columns: 171 | 172 | ``` 173 | ['DATE', 'VISITOR', 'VISITOR_PTS', 'HOME', 'HOME_PTS'] 174 | ``` 175 | 176 | ### `get_standings(date=None)` 177 | 178 | Parameters: 179 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`). Default value is `NONE`, which returns standings for the current date. 180 | 181 | Returns: 182 | 183 | A dictionary containing standings for the Eastern and Western Conferences along with relevant statistics as a Pandas DataFrame. For example: 184 | 185 | ``` 186 | >>> d = get_standings() 187 | >>> list(d['WESTERN_CONF'].columns) 188 | ['TEAM', 'W', 'L', 'W/L%', 'GB', 'PW', 'PL', 'PS/G', 'PA/G'] 189 | ``` 190 | 191 | ## Box Scores 192 | 193 | Usage 194 | 195 | ``` 196 | from basketball_reference_scraper.box_scores import get_box_scores 197 | ``` 198 | 199 | ### `get_box_scores(date, team1, team2, period='GAME', stat_type='BASIC')` 200 | 201 | Parameters: 202 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`) 203 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`) 204 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`) 205 | - `period` - Period for which to acquire stats. One of `'GAME'|'Q1'|'Q2'|'Q3'|'Q4'|'H1'|'H2'`. Default value is `'GAME'` 206 | - `stat_type` - Period for which to acquire stats. One of `'BASIC'|'ADVANCED'`. Default value is `'BASIC'`. Note that advanced stats are only available for `period='GAME'`. 207 | 208 | Returns: 209 | 210 | A dictionary containing relevant stats for each team as a Pandas DataFrame. For example: 211 | 212 | ``` 213 | >>> d = get_box_scores('2020-01-06', 'DEN', 'ATL') 214 | >>> list(d['ATL'].columns) 215 | ['PLAYER', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS', '+/-'] 216 | ``` 217 | ### `get_all_star_box_score(year: int)` 218 | 219 | Parameters: 220 | - `year` - End year of game in which all-star season ocurred e.g. 2020 for the 2019-20 ASG 221 | 222 | Returns: 223 | 224 | A dictionary containing relevant stats for each team as a Pandas DataFrame. For example: 225 | 226 | ``` 227 | >>> d = get_all_star_box_score(2020) 228 | >>> list(d['Team Lebron'].columns) 229 | ['PLAYER', 'TEAM', 'MP', 'FG', 'FGA', 'FG%', '3P', '3PA', '3P%', 'FT', 'FTA', 'FT%', 'ORB', 'DRB', 'TRB', 'AST', 'STL', 'BLK', 'TOV', 'PF', 'PTS'] 230 | ``` 231 | 232 | ## Play-by-play 233 | 234 | Usage 235 | 236 | ``` 237 | from basketball_reference_scraper.pbp import get_pbp 238 | ``` 239 | 240 | ### get_pbp(date, team1, team2) 241 | 242 | Parameters: 243 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`) 244 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`) 245 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`) 246 | 247 | Returns: 248 | 249 | A Pandas DataFrame containing the actions performed by each team at a time. For example: 250 | 251 | ``` 252 | >>> df = get_pbp('2020-01-06', 'DEN', 'ATL') 253 | >>> list(df.columns) 254 | ['QUARTER', 'TIME_REMAINING', 'DENVER_ACTION', 'ATLANTA_ACTION', 'DENVER_SCORE', 'ATLANTA_SCORE'] 255 | ``` 256 | 257 | Note that the `ACTION` columns (`'DENVER_ACTION'` and `'ATLANTA_ACTION'` in the above example) will contain `nan` if the team did not perform the primary action in the sequence. 258 | 259 | ## Shot Charts 260 | 261 | Usage 262 | 263 | ``` 264 | from basketball_reference_scraper.shot_charts import get_shot_chart 265 | ``` 266 | 267 | ### get_shot_chart(date, team1, team2) 268 | 269 | Parameters: 270 | - `date` - Desired date in a string format (e.g. `'2020-01-06'`) 271 | - `team1` - One of the team abbreviation (e.g. `'DEN'`, `'GSW'`) 272 | - `team2` - Other team abbreviation (e.g. `'DEN'`, `'GSW'`) 273 | 274 | Returns: 275 | 276 | A dictionary containing the shot charts for each team. 277 | The shot charts are Pandas DataFrames with the following columns: 278 | ``` 279 | ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE'] 280 | ``` 281 | 282 | Where `'x'` and `'y'` are half-court coordinates in feet, `QUARTER` and `TIME_REMAINING` provide the time at which the shot occurred, 283 | `player` provides the player who shot the ball, `MAKE_MISS` is either `'MAKE'` or `'MISS'`, `VALUE` is the number of points gained, and `DISTANCE` 284 | is distance from the basket in ft. 285 | 286 | For example: 287 | 288 | ``` 289 | >>> d = get_shot_chart('2019-12-28', 'TOR', 'BOS') 290 | >>> list(d['TOR'].columns) 291 | ['x', 'y', 'QUARTER', 'TIME_REMAINING', 'PLAYER', 'MAKE_MISS', 'VALUE', 'DISTANCE'] 292 | >>> d['TOR'].iloc[1] 293 | x 27.0 ft 294 | y 9.75 ft 295 | QUARTER 1 296 | TIME_REMAINING 11:03.0 297 | PLAYER Serge Ibaka 298 | MAKE_MISS MISS 299 | VALUE 2 300 | DISTANCE 7 ft 301 | Name: 1, dtype: object 302 | ``` 303 | 304 | Note that the team columns (`'Denver'` and `'Atlanta'` in the above example) will contain `nan` if the team did not perform the primary action in the sequence. 305 | 306 | ## Injury Report 307 | 308 | Usage 309 | 310 | ``` 311 | from basketball_reference_scraper.injury_report import get_injury_report 312 | ``` 313 | 314 | 315 | ### get_injury_report() 316 | 317 | Parameters: 318 | 319 | Returns: 320 | 321 | A Pandas DataFrames with the following columns: 322 | ``` 323 | ['PLAYER', 'TEAM', 'DATE', 'INJURY', 'STATUS', 'DESCRIPTION'] 324 | ``` 325 | 326 | ## Draft 327 | 328 | Usage 329 | 330 | ``` 331 | from basketball_reference_scraper.drafts import get_draft_class 332 | ``` 333 | 334 | ### `get_draft_class(year)` 335 | 336 | Parameters: 337 | - `year` - Desired draft year (e.g. 1989, 2020) 338 | 339 | Returns: 340 | 341 | A Pandas DataFrame with the following columns: 342 | ``` 343 | ['PICK', 'TEAM', 'PLAYER', 'COLLEGE', 'YEARS', 'TOTALS_G', 'TOTALS_MP', 'TOTALS_PTS', 'TOTALS_TRB', 'TOTALS_AST', 'SHOOTING_FG%', 'SHOOTING_3P%', 'SHOOTING_FT%', 'PER_GAME_MP', 'PER_GAME_PTS', 'PER_GAME_TRB', 'PER_GAME_AST', 'ADVANCED_WS', 'ADVANCED_WS/48', 'ADVANCED_BPM', 'ADVANCED_VORP'] 344 | ``` 345 | 346 | ## Constants and Parameter Notes 347 | 348 | ### Dates 349 | Dates are parsed using Pandas `to_datetime()` method and should follow appropriate constraints. Refer to the [documentation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html) for more specifications. 350 | 351 | ### Team Abbreviations 352 | These are the team abbreviations used by Basketball Reference and should be used in the above methods. 353 | ``` 354 | ATLANTA HAWKS : ATL 355 | ST. LOUIS HAWKS : SLH 356 | MILWAUKEE HAWKS : MIL 357 | TRI-CITIES BLACKHAWKS : TCB 358 | BOSTON CELTICS : BOS 359 | BROOKLYN NETS : BRK 360 | NEW JERSEY NETS : NJN 361 | CHICAGO BULLS : CHI 362 | CHARLOTTE HORNETS (1988-2004): CHH 363 | CHARLOTTE HORNETS (2014-Present): CHO 364 | CHARLOTTE BOBCATS : CHA 365 | CLEVELAND CAVALIERS : CLE 366 | DALLAS MAVERICKS : DAL 367 | DENVER NUGGETS : DEN 368 | DETROIT PISTONS : DET 369 | FORT WAYNE PISTONS : FWP 370 | GOLDEN STATE WARRIORS : GSW 371 | SAN FRANCISCO WARRIORS : SFW 372 | PHILADELPHIA WARRIORS : PHI 373 | HOUSTON ROCKETS : HOU 374 | INDIANA PACERS : IND 375 | LOS ANGELES CLIPPERS : LAC 376 | SAN DIEGO CLIPPERS : SDC 377 | BUFFALO BRAVES : BUF 378 | LOS ANGELES LAKERS : LAL 379 | MINNEAPOLIS LAKERS : MIN 380 | MEMPHIS GRIZZLIES : MEM 381 | VANCOUVER GRIZZLIES : VAN 382 | MIAMI HEAT : MIA 383 | MILWAUKEE BUCKS : MIL 384 | MINNESOTA TIMBERWOLVES : MIN 385 | NEW ORLEANS PELICANS : NOP 386 | NEW ORLEANS/OKLAHOMA CITY HORNETS : NOK 387 | NEW ORLEANS HORNETS : NOH 388 | NEW YORK KNICKS : NYK 389 | OKLAHOMA CITY THUNDER : OKC 390 | SEATTLE SUPERSONICS : SEA 391 | ORLANDO MAGIC : ORL 392 | PHILADELPHIA 76ERS : PHI 393 | SYRACUSE NATIONALS : SYR 394 | PHOENIX SUNS : PHO 395 | PORTLAND TRAIL BLAZERS : POR 396 | SACRAMENTO KINGS : SAC 397 | KANSAS CITY KINGS : KCK 398 | KANSAS CITY-OMAHA KINGS : KCK 399 | CINCINNATI ROYALS : CIN 400 | ROCHESTER ROYALS : ROR 401 | SAN ANTONIO SPURS : SAS 402 | TORONTO RAPTORS : TOR 403 | UTAH JAZZ : UTA 404 | NEW ORLEANS JAZZ : NOJ 405 | WASHINGTON WIZARDS : WAS 406 | WASHINGTON BULLETS : WAS 407 | CAPITAL BULLETS : CAP 408 | BALTIMORE BULLETS : BAL 409 | CHICAGO ZEPHYRS : CHI 410 | CHICAGO PACKERS : CHI 411 | ANDERSON PACKERS : AND 412 | CHICAGO STAGS : CHI 413 | INDIANAPOLIS OLYMPIANS : IND 414 | SHEBOYGAN RED SKINS : SRS 415 | ST. LOUIS BOMBERS : SLB 416 | WASHINGTON CAPITOLS : WAS 417 | WATERLOO HAWKS : WAT 418 | SAN DIEGO ROCKETS : SDR 419 | ``` 420 | 421 | ### Units 422 | All units are imperial. This means that distances and heights are provided in ft and inches. Additionally, weights are provided in lbs. 423 | -------------------------------------------------------------------------------- /basketball_reference_scraper/br_names.txt: -------------------------------------------------------------------------------- 1 | James Wiseman 2 | Killian Hayes 3 | Tyrese Haliburton 4 | LaMelo Ball 5 | Aleksej Pokusevski 6 | Anthony Edwards 7 | Facundo Campazzo 8 | Isaac Okoro 9 | Deni Avdija 10 | Onyeka Okongwu 11 | Chuma Okeke 12 | Obi Toppin 13 | Patrick Williams 14 | Devin Vassell 15 | Aaron Nesmith 16 | Xavier Tillman 17 | Cole Anthony 18 | Desmond Bane 19 | Isaiah Stewart 20 | Tyrese Maxey 21 | Saddiq Bey 22 | Dylan Windler 23 | Vernon Carey Jr. 24 | Kira Lewis 25 | Jalen Smith 26 | Malachi Flynn 27 | Robert Woodard 28 | Paul Reed 29 | Cassius Winston 30 | Sam Merrill 31 | Elijah Hughes 32 | Zeke Nnaji 33 | Tyler Bey 34 | Josh Green 35 | Grant Riller 36 | Theo Maledon 37 | Jordan Nwora 38 | R.J. Hampton 39 | Devon Dotson 40 | Tre Jones 41 | Precious Achiuwa 42 | Will Magnay 43 | Nick Richards 44 | Kenyon Martin Jr. 45 | Isaiah Joe 46 | Udoka Azubuike 47 | Killian Tillie 48 | Payton Pritchard 49 | Jalen Harris 50 | Jaden McDaniels 51 | Lamar Stevens 52 | Skylar Mays 53 | Nate Hinton 54 | Jay Scrubb 55 | Mamadi Diakite 56 | Cassius Stanley 57 | Trent Forrest 58 | Nathan Knight 59 | Jahmi'us Ramsey 60 | Sean McDermott 61 | Nico Mannion 62 | Mason Jones 63 | Immanuel Quickley 64 | Deividas Sirvydis 65 | Ty-Shon Alexander 66 | Markus Howard 67 | Daniel Oturu 68 | Reggie Perry 69 | Tyrell Terry 70 | Dwayne Sutton 71 | CJ Elleby 72 | Saben Lee 73 | Ashton Hagans 74 | Naji Marshall 75 | Nate Darling 76 | Josh Hall 77 | Karim Mane 78 | Keljin Blevins 79 | Quinton Rose 80 | Xavier Sneed 81 | Charles Matthews 82 | Keandre Cook 83 | Ade Murkey 84 | Jordan Bowden 85 | Javin DeLaurier 86 | E.J. Montgomery 87 | Nate Sestina 88 | Zavier Simpson 89 | Omer Yurtseven 90 | LiAngelo Ball 91 | Romaro Gill 92 | Jahlil Tripp 93 | Anthony Lamb 94 | Yam Madar 95 | Jake Toolson 96 | Malik Fitts 97 | Caleb Homesley 98 | Paul Eboua 99 | Kaleb Wesson 100 | Leandro Bolmaro 101 | Myles Powell 102 | Trevelin Queen 103 | Marko Simonovic 104 | Freddie Gillespie 105 | Rayshaun Hammonds 106 | Jon Teske 107 | Yoeli Childs 108 | Brodric Thomas 109 | Marlon Taylor 110 | Kahlil Whitney 111 | Devin Cannady 112 | Justinian Jessup 113 | Tres Tinkle 114 | Devonte Patterson 115 | Jordan Ford 116 | Alaa Abdelnaby 117 | Zaid Abdul-Aziz 118 | Kareem Abdul-Jabbar 119 | Mahmoud Abdul-Rauf 120 | Tariq Abdul-Wahad 121 | Shareef Abdur-Rahim 122 | Tom Abernethy 123 | Forest Able 124 | John Abramovic 125 | Alex Abrines 126 | Alex Acker 127 | Don Ackerman 128 | Mark Acres 129 | Bud Acton 130 | Quincy Acy 131 | Alvan Adams 132 | Don Adams 133 | George Adams 134 | Hassan Adams 135 | Jaylen Adams 136 | Jordan Adams 137 | Michael Adams 138 | Steven Adams 139 | Rafael Addison 140 | Bam Adebayo 141 | Deng Adel 142 | Rick Adelman 143 | Jeff Adrien 144 | Arron Afflalo 145 | Maurice Ager 146 | Mark Aguirre 147 | Blake Ahearn 148 | Danny Ainge 149 | Matthew Aitch 150 | Alexis Ajinca 151 | Henry Akin 152 | Josh Akognon 153 | DeVaughn Akoon-Purcell 154 | Solomon Alabi 155 | Mark Alarie 156 | Gary Alcorn 157 | Furkan Aldemir 158 | Cole Aldrich 159 | LaMarcus Aldridge 160 | Chuck Aleksinas 161 | Cliff Alexander 162 | Cory Alexander 163 | Courtney Alexander 164 | Gary Alexander 165 | Joe Alexander 166 | Kyle Alexander 167 | Victor Alexander 168 | Nickeil Alexander-Walker 169 | Steve Alford 170 | Rawle Alkins 171 | Bill Allen 172 | Bob Allen 173 | Grayson Allen 174 | Jarrett Allen 175 | Jerome Allen 176 | Kadeem Allen 177 | Lavoy Allen 178 | Lucius Allen 179 | Malik Allen 180 | Randy Allen 181 | Ray Allen 182 | Tony Allen 183 | Willie Allen 184 | Odis Allison 185 | Lance Allred 186 | Darrell Allums 187 | Morris Almond 188 | Derrick Alston 189 | Rafer Alston 190 | Peter Aluma 191 | John Amaechi 192 | Ashraf Amaya 193 | Al-Farouq Aminu 194 | Lou Amundson 195 | Bob Anderegg 196 | Chris Andersen 197 | David Andersen 198 | Alan Anderson 199 | Andrew Anderson 200 | Antonio Anderson 201 | Cliff Anderson 202 | Dan Anderson 203 | Dan Anderson 204 | Derek Anderson 205 | Dwight Anderson 206 | Eric Anderson 207 | Greg Anderson 208 | J.J. Anderson 209 | James Anderson 210 | Jerome Anderson 211 | Justin Anderson 212 | Kenny Anderson 213 | Kim Anderson 214 | Kyle Anderson 215 | Michael Anderson 216 | Nick Anderson 217 | Richard Anderson 218 | Ron Anderson 219 | Ryan Anderson 220 | Shandon Anderson 221 | Willie Anderson 222 | Wally Anderzunas 223 | Martynas Andriuskevicius 224 | Don Anielak 225 | Ike Anigbogu 226 | Michael Ansley 227 | Chris Anstey 228 | Giannis Antetokounmpo 229 | Kostas Antetokounmpo 230 | Thanasis Antetokounmpo 231 | Carmelo Anthony 232 | Greg Anthony 233 | Joel Anthony 234 | Pero Antic 235 | OG Anunoby 236 | Keith Appling 237 | Rafael Araujo 238 | Stacey Arceneaux 239 | Robert Archibald 240 | Tiny Archibald 241 | Ryan Arcidiacono 242 | Jim Ard 243 | Gilbert Arenas 244 | Trevor Ariza 245 | Paul Arizin 246 | Joe Arlauckas 247 | B.J. Armstrong 248 | Bob Armstrong 249 | Brandon Armstrong 250 | Curly Armstrong 251 | Darrell Armstrong 252 | Hilton Armstrong 253 | Tate Armstrong 254 | Jesse Arnelle 255 | Jay Arnette 256 | Bob Arnzen 257 | Carlos Arroyo 258 | Darrell Arthur 259 | John Arthurs 260 | Jamel Artis 261 | Omer Asik 262 | Vincent Askew 263 | Keith Askins 264 | Don Asmonga 265 | Dick Atha 266 | Chucky Atkins 267 | Al Attles 268 | Chet Aubuchon 269 | Stacey Augmon 270 | D.J. Augustin 271 | James Augustine 272 | Isaac Austin 273 | Johnny Austin 274 | Ken Austin 275 | Anthony Avent 276 | Bird Averitt 277 | William Avery 278 | Dennis Awtrey 279 | Gustavo Ayon 280 | Jeff Ayres 281 | Deandre Ayton 282 | Kelenna Azubuike 283 | Chris Babb 284 | Luke Babbitt 285 | Milos Babic 286 | Johnny Bach 287 | Dwayne Bacon 288 | Henry Bacon 289 | Jim Baechtold 290 | Dalibor Bagaric 291 | John Bagley 292 | Marvin Bagley 293 | Carl Bailey 294 | Gus Bailey 295 | James Bailey 296 | Thurl Bailey 297 | Toby Bailey 298 | Cameron Bairstow 299 | Jimmie Baker 300 | LaMark Baker 301 | Maurice Baker 302 | Norm Baker 303 | Ron Baker 304 | Vin Baker 305 | Wade Baldwin 306 | Renaldo Balkman 307 | Cedric Ball 308 | Lonzo Ball 309 | Greg Ballard 310 | Herschel Baltimore 311 | Mohamed Bamba 312 | Gene Banks 313 | Marcus Banks 314 | Walker Banks 315 | Ken Bannister 316 | Mike Bantom 317 | John Barber 318 | Leandro Barbosa 319 | Steve Bardo 320 | J.J. Barea 321 | Andrea Bargnani 322 | Cliff Barker 323 | Tom Barker 324 | Charles Barkley 325 | Erick Barkley 326 | Don Barksdale 327 | Harrison Barnes 328 | Harry Barnes 329 | Jim Barnes 330 | Marvin Barnes 331 | Matt Barnes 332 | Dick Barnett 333 | Jim Barnett 334 | Nathaniel Barnett 335 | John Barnhill 336 | Norton Barnhill 337 | Leo Barnhorst 338 | John Barr 339 | Mike Barr 340 | Moe Barr 341 | Andre Barrett 342 | Ernie Barrett 343 | Mike Barrett 344 | RJ Barrett 345 | Earl Barron 346 | Dana Barros 347 | Brent Barry 348 | Drew Barry 349 | Jon Barry 350 | Rick Barry 351 | Ed Bartels 352 | Vic Bartolome 353 | Will Barton 354 | Eddie Basden 355 | Jerry Baskerville 356 | Brandon Bass 357 | Tim Bassett 358 | Maceo Baston 359 | Mengke Bateer 360 | Billy Ray Bates 361 | Keita Bates-Diop 362 | Esteban Batista 363 | Mike Batiste 364 | Tony Battie 365 | Shane Battier 366 | John Battle 367 | Kenny Battle 368 | Dave Batton 369 | Lloyd Batts 370 | Nicolas Batum 371 | Johnny Baum 372 | Frankie Baumholtz 373 | Lonny Baxter 374 | Jerryd Bayless 375 | Elgin Baylor 376 | Howard Bayne 377 | Aron Baynes 378 | Sergei Bazarevich 379 | Kent Bazemore 380 | Darius Bazley 381 | Ed Beach 382 | Bradley Beal 383 | Al Beard 384 | Butch Beard 385 | Ralph Beard 386 | Charles Beasley 387 | Jerome Beasley 388 | John Beasley 389 | Malik Beasley 390 | Michael Beasley 391 | Zelmo Beaty 392 | Rodrigue Beaubois 393 | Byron Beck 394 | Corey Beck 395 | Ernie Beck 396 | Arthur Becker 397 | Moe Becker 398 | Bob Bedell 399 | William Bedford 400 | Hank Beenders 401 | Ron Behagen 402 | Elmer Behnke 403 | Marco Belinelli 404 | Charlie Bell 405 | Dennis Bell 406 | Jordan Bell 407 | Raja Bell 408 | Troy Bell 409 | Whitey Bell 410 | Walt Bellamy 411 | DeAndre' Bembry 412 | Irv Bemoras 413 | Leon Benbow 414 | Dragan Bender 415 | Jonathan Bender 416 | Jerrelle Benimon 417 | Benoit Benjamin 418 | Corey Benjamin 419 | Anthony Bennett 420 | Elmer Bennett 421 | Mario Bennett 422 | Mel Bennett 423 | Spider Bennett 424 | Tony Bennett 425 | Winston Bennett 426 | David Benoit 427 | Keith Benson 428 | Kent Benson 429 | Ben Bentil 430 | Gene Berce 431 | Gary Bergen 432 | Larry Bergh 433 | Ricky Berry 434 | Walter Berry 435 | Dairis Bertans 436 | Davis Bertans 437 | Del Beshore 438 | Travis Best 439 | Patrick Beverley 440 | Sim Bhullar 441 | Wesley Bialosuknia 442 | Al Bianchi 443 | Hank Biasatti 444 | Henry Bibby 445 | Mike Bibby 446 | Ed Biedenbach 447 | Andris Biedrins 448 | Don Bielke 449 | Bob Bigelow 450 | Lionel Billingy 451 | Chauncey Billups 452 | Dave Bing 453 | Joe Binion 454 | Khem Birch 455 | Jabari Bird 456 | Jerry Bird 457 | Larry Bird 458 | Otis Birdsong 459 | Gale Bishop 460 | Goga Bitadze 461 | Bismack Biyombo 462 | Nemanja Bjelica 463 | Uwe Blab 464 | Charlie Black 465 | Norman Black 466 | Tarik Black 467 | Tom Black 468 | Rolando Blackman 469 | Alex Blackwell 470 | Cory Blackwell 471 | James Blackwell 472 | Nate Blackwell 473 | DeJuan Blair 474 | Steve Blake 475 | Antonio Blakeney 476 | Will Blalock 477 | George Blaney 478 | Lance Blanks 479 | Ricky Blanton 480 | Andray Blatche 481 | Mookie Blaylock 482 | Eric Bledsoe 483 | Leon Blevins 484 | John Block 485 | Mike Bloom 486 | Jaron Blossomgame 487 | Corie Blount 488 | Mark Blount 489 | Vander Blue 490 | Ray Blume 491 | Nelson Bobb 492 | Tony Bobbitt 493 | Bucky Bockhorn 494 | Tom Boerwinkle 495 | Keith Bogans 496 | Bogdan Bogdanovic 497 | Bojan Bogdanovic 498 | Muggsy Bogues 499 | Andrew Bogut 500 | Etdrick Bohannon 501 | Bol Bol 502 | Manute Bol 503 | Jonah Bolden 504 | Marques Bolden 505 | Bill Bolger 506 | Joel Bolomboy 507 | Doug Bolstorff 508 | George Bon Salle 509 | Phil Bond 510 | Walter Bond 511 | Jordan Bone 512 | Dexter Boney 513 | Isaac Bonga 514 | Ron Bonham 515 | Anthony Bonner 516 | Matt Bonner 517 | Butch Booker 518 | Devin Booker 519 | Melvin Booker 520 | Trevor Booker 521 | Josh Boone 522 | Ron Boone 523 | Calvin Booth 524 | Keith Booth 525 | Bob Boozer 526 | Carlos Boozer 527 | Curtis Borchardt 528 | Jake Bornheimer 529 | Lazaro Borrell 530 | Ike Borsavage 531 | Vince Boryla 532 | Chris Bosh 533 | Jim Bostic 534 | Lawrence Boston 535 | Tom Boswell 536 | Chris Boucher 537 | Ruben Boumtje-Boumtje 538 | Don Boven 539 | Cal Bowdler 540 | Brian Bowen 541 | Bruce Bowen 542 | Ryan Bowen 543 | Tommie Bowens 544 | Anthony Bowie 545 | Sam Bowie 546 | Orbie Bowling 547 | Ira Bowman 548 | Ky Bowman 549 | Nate Bowman 550 | Donnie Boyce 551 | Dennis Boyd 552 | Freddie Boyd 553 | Ken Boyd 554 | Earl Boykins 555 | Harry Boykoff 556 | Winford Boynes 557 | Cedric Bozeman 558 | Steve Bracey 559 | Craig Brackins 560 | Gary Bradds 561 | Alex Bradley 562 | Alonzo Bradley 563 | Avery Bradley 564 | Bill Bradley 565 | Bill Bradley 566 | Charles Bradley 567 | Dudley Bradley 568 | Jim Bradley 569 | Joe Bradley 570 | Michael Bradley 571 | Shawn Bradley 572 | Tony Bradley 573 | Mark Bradtke 574 | Marques Bragg 575 | Torraye Braggs 576 | A.J. Bramlett 577 | Adrian Branch 578 | Elton Brand 579 | Terrell Brandon 580 | Bob Brannum 581 | Brad Branson 582 | Jesse Branson 583 | Jarrell Brantley 584 | Jim Brasco 585 | Mike Bratz 586 | Carl Braun 587 | Ignas Brazdeikis 588 | Tim Breaux 589 | J.R. Bremer 590 | Pete Brennan 591 | Tom Brennan 592 | Randy Breuer 593 | Corey Brewer 594 | Jamison Brewer 595 | Jim Brewer 596 | Ron Brewer 597 | Ronnie Brewer 598 | Primoz Brezec 599 | Frankie Brian 600 | Frank Brickowski 601 | Junior Bridgeman 602 | Bill Bridges 603 | Mikal Bridges 604 | Miles Bridges 605 | Al Brightman 606 | Aud Brindley 607 | Isaiah Briscoe 608 | John Brisker 609 | Oshae Brissett 610 | Allan Bristow 611 | Tyrone Britt 612 | Wayman Britt 613 | Mike Brittain 614 | Dave Britton 615 | Jon Brockman 616 | Ryan Broekhoff 617 | Jim Brogan 618 | Malcolm Brogdon 619 | Gary Brokaw 620 | Price Brookfield 621 | Clarence Brookins 622 | Aaron Brooks 623 | Dillon Brooks 624 | Kevin Brooks 625 | MarShon Brooks 626 | Michael Brooks 627 | Scott Brooks 628 | Andre Brown 629 | Anthony Brown 630 | Bob Brown 631 | Bobby Brown 632 | Bruce Brown 633 | Charlie Brown 634 | Chucky Brown 635 | Damone Brown 636 | Darrell Brown 637 | Dee Brown 638 | Dee Brown 639 | Derrick Brown 640 | Devin Brown 641 | Ernest Brown 642 | Fred Brown 643 | George Brown 644 | Gerald Brown 645 | Harold Brown 646 | Jabari Brown 647 | Jaylen Brown 648 | John Brown 649 | Kedrick Brown 650 | Kwame Brown 651 | Larry Brown 652 | Leon Brown 653 | Lewis Brown 654 | Lorenzo Brown 655 | Marcus Brown 656 | Markel Brown 657 | Mike Brown 658 | Moses Brown 659 | Myron Brown 660 | P.J. Brown 661 | Randy Brown 662 | Raymond Brown 663 | Rickey Brown 664 | Roger Brown 665 | Roger Brown 666 | Shannon Brown 667 | Stan Brown 668 | Sterling Brown 669 | Tierre Brown 670 | Tony Brown 671 | Troy Brown 672 | Jim Browne 673 | Stanley Brundy 674 | Brian Brunkhorst 675 | George Bruns 676 | Jalen Brunson 677 | Rick Brunson 678 | Nicolas Brussino 679 | Em Bryant 680 | Joe Bryant 681 | Kobe Bryant 682 | Mark Bryant 683 | Thomas Bryant 684 | Wallace Bryant 685 | Torgeir Bryn 686 | George Bucci 687 | Joe Buckhalter 688 | Steve Bucknall 689 | Cleveland Buckner 690 | Greg Buckner 691 | Quinn Buckner 692 | Dave Budd 693 | Chase Budinger 694 | Walt Budko 695 | Jud Buechler 696 | Rodney Buford 697 | Matt Bullard 698 | Reggie Bullock 699 | Larry Bunce 700 | Greg Bunch 701 | Dick Bunt 702 | Bill Buntin 703 | Bill Bunting 704 | Ticky Burden 705 | Pat Burke 706 | Trey Burke 707 | Roger Burkman 708 | Alec Burks 709 | Antonio Burks 710 | Kevin Burleson 711 | Tom Burleson 712 | Jack Burmaster 713 | David Burns 714 | Evers Burns 715 | Jim Burns 716 | Scott Burrell 717 | Art Burris 718 | Junior Burrough 719 | Bob Burrow 720 | Deonte Burton 721 | Ed Burton 722 | Willie Burton 723 | Steve Burtt 724 | Don Buse 725 | David Bustion 726 | Donnie Butcher 727 | Al Butler 728 | Caron Butler 729 | Greg Butler 730 | Jackie Butler 731 | Jimmy Butler 732 | Mike Butler 733 | Mitchell Butler 734 | Rasual Butler 735 | Dwight Buycks 736 | Derrick Byars 737 | Andrew Bynum 738 | Will Bynum 739 | Walter Byrd 740 | Marty Byrnes 741 | Tommy Byrnes 742 | Michael Bytzura 743 | Zarko Cabarkapa 744 | Barney Cable 745 | Bruno Caboclo 746 | Devontae Cacok 747 | Jason Caffey 748 | Michael Cage 749 | Gerry Calabrese 750 | Nick Calathes 751 | Jose Calderon 752 | Adrian Caldwell 753 | Jim Caldwell 754 | Joe Caldwell 755 | Kentavious Caldwell-Pope 756 | Bill Calhoun 757 | Corky Calhoun 758 | Demetrius Calip 759 | Tom Callahan 760 | Rick Calloway 761 | Ernie Calverley 762 | Mack Calvin 763 | Dexter Cambridge 764 | Marcus Camby 765 | Elden Campbell 766 | Tony Campbell 767 | Isaiah Canaan 768 | Vlatko Cancar 769 | Larry Cannon 770 | Clint Capela 771 | Derrick Caracter 772 | Frank Card 773 | Brian Cardinal 774 | Howie Carl 775 | Chet Carlisle 776 | Geno Carlisle 777 | Rick Carlisle 778 | Don Carlos 779 | Al Carlson 780 | Don Carlson 781 | Bob Carney 782 | Rodney Carney 783 | Bob Carpenter 784 | Antoine Carr 785 | Austin Carr 786 | Chris Carr 787 | Cory Carr 788 | Kenny Carr 789 | M.L. Carr 790 | Darel Carrier 791 | Bob Carrington 792 | DeMarre Carroll 793 | Joe Barry Carroll 794 | Matt Carroll 795 | Jimmy Carruth 796 | Anthony Carter 797 | Butch Carter 798 | Fred Carter 799 | George Carter 800 | Howard Carter 801 | Jake Carter 802 | Jevon Carter 803 | Maurice Carter 804 | Reggie Carter 805 | Ron Carter 806 | Vince Carter 807 | Wendell Carter 808 | Michael Carter-Williams 809 | Bill Cartwright 810 | Jay Carty 811 | Alex Caruso 812 | Cornelius Cash 813 | Sam Cash 814 | Sam Cassell 815 | Omri Casspi 816 | Harvey Catchings 817 | Terry Catledge 818 | Sid Catlett 819 | Kelvin Cato 820 | Bobby Cattage 821 | Willie Cauley-Stein 822 | Troy Caupain 823 | Duane Causwell 824 | Tyler Cavanaugh 825 | Ron Cavenall 826 | Cedric Ceballos 827 | John Celestand 828 | Al Cervi 829 | Lionel Chalmers 830 | Mario Chalmers 831 | Bill Chamberlain 832 | Wilt Chamberlain 833 | Jerry Chambers 834 | Tom Chambers 835 | Mike Champion 836 | Tyson Chandler 837 | Wilson Chandler 838 | Don Chaney 839 | John Chaney 840 | Rex Chapman 841 | Wayne Chapman 842 | Len Chappell 843 | Ken Charles 844 | Lorenzo Charles 845 | Joe Chealey 846 | Calbert Cheaney 847 | Zylan Cheatham 848 | Maurice Cheeks 849 | Phil Chenier 850 | Will Cherry 851 | Derrick Chievous 852 | Pete Chilcutt 853 | Josh Childress 854 | Randolph Childress 855 | Chris Childs 856 | Chris Chiozza 857 | Leroy Chollet 858 | Jim Chones 859 | Marquese Chriss 860 | Fred Christ 861 | Cal Christensen 862 | Bob Christian 863 | Doug Christie 864 | Dionte Christmas 865 | Rakeem Christmas 866 | Semaj Christon 867 | Patrick Christopher 868 | Stephen Chubin 869 | Robert Churchwell 870 | Archie Clark 871 | Carlos Clark 872 | Earl Clark 873 | Gary Clark 874 | Ian Clark 875 | Keon Clark 876 | Richard Clark 877 | Brandon Clarke 878 | Coty Clarke 879 | Jordan Clarkson 880 | Gian Clavell 881 | Victor Claver 882 | John Clawson 883 | Charles Claxton 884 | Nicolas Claxton 885 | Speedy Claxton 886 | Jim Cleamons 887 | Mateen Cleaves 888 | Barry Clemens 889 | Chris Clemons 890 | Antonius Cleveland 891 | Nat Clifton 892 | Bill Closs 893 | Keith Closs 894 | Paul Cloyd 895 | Bob Cluggish 896 | Ben Clyde 897 | Amir Coffey 898 | Richard Coffey 899 | Fred Cofield 900 | John Coker 901 | Norris Cole 902 | Ben Coleman 903 | Derrick Coleman 904 | E.C. Coleman 905 | Jack Coleman 906 | Norris Coleman 907 | Bimbo Coles 908 | Jason Collier 909 | Art Collins 910 | Don Collins 911 | Doug Collins 912 | James Collins 913 | Jarron Collins 914 | Jason Collins 915 | Jimmy Collins 916 | John Collins 917 | Mardy Collins 918 | Sherron Collins 919 | Zach Collins 920 | Kyle Collinsworth 921 | Darren Collison 922 | Nick Collison 923 | Joe Colone 924 | Bonzie Colson 925 | Sean Colson 926 | Steve Colter 927 | Glen Combs 928 | Leroy Combs 929 | John Comeaux 930 | Dallas Comegys 931 | Larry Comley 932 | Jeffrey Congdon 933 | Gene Conley 934 | Larry Conley 935 | Mike Conley 936 | Ed Conlin 937 | Marty Conlon 938 | Pat Connaughton 939 | Jimmy Conner 940 | Lester Conner 941 | Chuck Connors 942 | Will Conroy 943 | Anthony Cook 944 | Bert Cook 945 | Bobby Cook 946 | Brian Cook 947 | Daequan Cook 948 | Darwin Cook 949 | Jeff Cook 950 | Norm Cook 951 | Omar Cook 952 | Quinn Cook 953 | Tyler Cook 954 | Charles Cooke 955 | David Cooke 956 | Joe Cooke 957 | Jack Cooley 958 | Chuck Cooper 959 | Duane Cooper 960 | Joe Cooper 961 | Michael Cooper 962 | Wayne Cooper 963 | Tom Copa 964 | Chris Copeland 965 | Hollis Copeland 966 | Lanard Copeland 967 | Tyrone Corbin 968 | Chris Corchiani 969 | Ken Corley 970 | Ray Corley 971 | Dave Corzine 972 | Larry Costello 973 | Matt Costello 974 | Bryce Cotton 975 | Jack Cotton 976 | James Cotton 977 | John Coughran 978 | Mel Counts 979 | Steve Courtin 980 | Joe Courtney 981 | Marcus Cousin 982 | DeMarcus Cousins 983 | Bob Cousy 984 | Robert Covington 985 | Dave Cowens 986 | Chubby Cox 987 | Johnny Cox 988 | Wesley Cox 989 | Allen Crabbe 990 | Torrey Craig 991 | Chris Crawford 992 | Freddie Crawford 993 | Jamal Crawford 994 | Joe Crawford 995 | Jordan Crawford 996 | Mitch Creek 997 | Jim Creighton 998 | Ron Crevier 999 | Hal Crisler 1000 | Joe Crispin 1001 | Charlie Criss 1002 | Russell Critchfield 1003 | Winston Crite 1004 | Javaris Crittenton 1005 | Dillard Crocker 1006 | Bobby Croft 1007 | Geoff Crompton 1008 | Terry Crosby 1009 | Austin Croshere 1010 | Jeff Cross 1011 | Pete Cross 1012 | Russell Cross 1013 | Chink Crossin 1014 | John Crotty 1015 | Bill Crow 1016 | Mark Crow 1017 | Corey Crowder 1018 | Jae Crowder 1019 | Al Cueto 1020 | Jarrett Culver 1021 | Pat Cummings 1022 | Terry Cummings 1023 | Vonteego Cummings 1024 | Billy Cunningham 1025 | Dante Cunningham 1026 | Dick Cunningham 1027 | Jared Cunningham 1028 | William Cunningham 1029 | Radisav Curcic 1030 | Armand Cure 1031 | Earl Cureton 1032 | Bill Curley 1033 | Fran Curran 1034 | Dell Curry 1035 | Eddy Curry 1036 | JamesOn Curry 1037 | Michael Curry 1038 | Seth Curry 1039 | Stephen Curry 1040 | Rastko Cvetkovic 1041 | Mike D'Antoni 1042 | Mike Dabich 1043 | Ed Dahler 1044 | Quintin Dailey 1045 | Samuel Dalembert 1046 | Howie Dallmar 1047 | Erick Dampier 1048 | Louie Dampier 1049 | Bob Dandridge 1050 | Antonio Daniels 1051 | Erik Daniels 1052 | Lloyd Daniels 1053 | Marquis Daniels 1054 | Mel Daniels 1055 | Troy Daniels 1056 | Sasha Danilovic 1057 | Adrian Dantley 1058 | Pete Darcey 1059 | Jimmy Darden 1060 | Ollie Darden 1061 | Yinka Dare 1062 | Jesse Dark 1063 | Rick Darnell 1064 | Jimmy Darrow 1065 | Luigi Datome 1066 | Brad Daugherty 1067 | Mack Daughtry 1068 | Kornel David 1069 | Jermareo Davidson 1070 | Bob Davies 1071 | Brandon Davies 1072 | Anthony Davis 1073 | Antonio Davis 1074 | Aubrey Davis 1075 | Baron Davis 1076 | Ben Davis 1077 | Bill Davis 1078 | Bob Davis 1079 | Brad Davis 1080 | Brian Davis 1081 | Charles Davis 1082 | Charlie Davis 1083 | Dale Davis 1084 | Deyonta Davis 1085 | Dwight Davis 1086 | Ed Davis 1087 | Emanual Davis 1088 | Glen Davis 1089 | Harry Davis 1090 | Hubert Davis 1091 | Jim Davis 1092 | Johnny Davis 1093 | Josh Davis 1094 | Lee Davis 1095 | Mark Davis 1096 | Mark Davis 1097 | Mel Davis 1098 | Mickey Davis 1099 | Mike Davis 1100 | Mike Davis 1101 | Monti Davis 1102 | Paul Davis 1103 | Ralph Davis 1104 | Red Davis 1105 | Ricky Davis 1106 | Ron Davis 1107 | Terence Davis 1108 | Terry Davis 1109 | Tyler Davis 1110 | Walt Davis 1111 | Walter Davis 1112 | Warren Davis 1113 | Willie Davis 1114 | Andre Dawkins 1115 | Darryl Dawkins 1116 | Johnny Dawkins 1117 | Paul Dawkins 1118 | Branden Dawson 1119 | Eric Dawson 1120 | Jimmy Dawson 1121 | Tony Dawson 1122 | Todd Day 1123 | Austin Daye 1124 | Darren Daye 1125 | Nando De Colo 1126 | Billy DeAngelis 1127 | Dave DeBusschere 1128 | Andrew DeClercq 1129 | Nate DeLong 1130 | Joe DePre 1131 | DeMar DeRozan 1132 | Hank DeZonie 1133 | Greg Deane 1134 | Dewayne Dedmon 1135 | Don Dee 1136 | Archie Dees 1137 | Terry Dehere 1138 | Red Dehnert 1139 | Bryce Dejean-Jones 1140 | Sam Dekker 1141 | Vinny Del Negro 1142 | Malcolm Delaney 1143 | Bison Dele 1144 | Carlos Delfino 1145 | Angel Delgado 1146 | Tony Delk 1147 | Matthew Dellavedova 1148 | Fennis Dembo 1149 | Larry Demic 1150 | Dell Demps 1151 | George Dempsey 1152 | Luol Deng 1153 | Kenny Dennard 1154 | Blaine Denning 1155 | Justin Dentmon 1156 | Randy Denton 1157 | Rod Derline 1158 | Marcus Derrickson 1159 | Dave Deutsch 1160 | Corky Devlin 1161 | Ernie DiGregorio 1162 | Donte DiVincenzo 1163 | Derrick Dial 1164 | Cheick Diallo 1165 | Hamidou Diallo 1166 | Boris Diaw 1167 | Yakhouba Diawara 1168 | Guillermo Diaz 1169 | Dan Dickau 1170 | Kaniel Dickens 1171 | Henry Dickerson 1172 | Michael Dickerson 1173 | Clyde Dickey 1174 | Derrek Dickey 1175 | Dick Dickey 1176 | John Dickson 1177 | Travis Diener 1178 | Gorgui Dieng 1179 | Connie Dierking 1180 | Coby Dietrick 1181 | Craig Dill 1182 | Dwaine Dillard 1183 | Mickey Dillard 1184 | Bob Dille 1185 | Hook Dillon 1186 | Byron Dinkins 1187 | Jackie Dinkins 1188 | Harry Dinnel 1189 | Bill Dinwiddie 1190 | Spencer Dinwiddie 1191 | Ike Diogu 1192 | DeSagana Diop 1193 | Terry Dischinger 1194 | Fred Diute 1195 | Vlade Divac 1196 | Juan Dixon 1197 | Earl Dodd 1198 | Michael Doleac 1199 | Joe Dolhon 1200 | Bob Doll 1201 | James Donaldson 1202 | Luka Doncic 1203 | Bob Donham 1204 | Billy Donovan 1205 | Harry Donovan 1206 | Keyon Dooling 1207 | Aleksandar Dordevic 1208 | Jacky Dorsey 1209 | Joey Dorsey 1210 | Ron Dorsey 1211 | Tyler Dorsey 1212 | Luguentz Dort 1213 | Damyean Dotson 1214 | Quincy Douby 1215 | Bruce Douglas 1216 | John Douglas 1217 | Leon Douglas 1218 | Sherman Douglas 1219 | Toney Douglas 1220 | Chris Douglas-Roberts 1221 | Sekou Doumbouya 1222 | Sonny Dove 1223 | Jerry Dover 1224 | Zabian Dowdell 1225 | Bill Downey 1226 | Steve Downing 1227 | Danny Doyle 1228 | Milton Doyle 1229 | PJ Dozier 1230 | Terry Dozier 1231 | Goran Dragic 1232 | Zoran Dragic 1233 | Greg Dreiling 1234 | Bryce Drew 1235 | John Drew 1236 | Larry Drew 1237 | Larry Drew 1238 | Clyde Drexler 1239 | Nate Driggers 1240 | Terry Driscoll 1241 | Predrag Drobnjak 1242 | Ralph Drollinger 1243 | Andre Drummond 1244 | Dennis DuVal 1245 | Dick Duckett 1246 | Kevin Duckworth 1247 | Charles Dudley 1248 | Chris Dudley 1249 | Jared Dudley 1250 | Terry Duerod 1251 | Bob Duffy 1252 | Bob Duffy 1253 | Chris Duhon 1254 | Duje Dukan 1255 | Walter Dukes 1256 | Joe Dumars 1257 | Rich Dumas 1258 | Richard Dumas 1259 | Tony Dumas 1260 | Andy Duncan 1261 | Tim Duncan 1262 | Mike Dunleavy 1263 | Mike Dunleavy 1264 | Kris Dunn 1265 | Pat Dunn 1266 | T.R. Dunn 1267 | Ronald Dupree 1268 | Kevin Durant 1269 | John Duren 1270 | Jarrett Durham 1271 | Pat Durham 1272 | Devin Durrant 1273 | Ken Durrett 1274 | Trevon Duval 1275 | Jack Dwan 1276 | Craig Dykema 1277 | Gene Dyker 1278 | Jerome Dyson 1279 | Ledell Eackles 1280 | Jim Eakins 1281 | Acie Earl 1282 | Ed Earle 1283 | Cleanthony Early 1284 | Penny Early 1285 | Mark Eaton 1286 | Jerry Eaves 1287 | Devin Ebanks 1288 | Bill Ebben 1289 | Al Eberhard 1290 | Ndudi Ebi 1291 | Roy Ebron 1292 | Jarell Eddie 1293 | Patrick Eddie 1294 | Dike Eddleman 1295 | Kenton Edelin 1296 | Charles Edge 1297 | Bobby Edmonds 1298 | Keith Edmonson 1299 | Tyus Edney 1300 | Bill Edwards 1301 | Blue Edwards 1302 | Carsen Edwards 1303 | Corsley Edwards 1304 | Doug Edwards 1305 | Franklin Edwards 1306 | James Edwards 1307 | Jay Edwards 1308 | John Edwards 1309 | Kevin Edwards 1310 | Shane Edwards 1311 | Vince Edwards 1312 | Johnny Egan 1313 | Lonnie Eggleston 1314 | Bulbs Ehlers 1315 | Craig Ehlo 1316 | Rich Eichhorst 1317 | Howard Eisley 1318 | Obinna Ekezie 1319 | Khalid El-Amin 1320 | Don Eliason 1321 | Mario Elie 1322 | Ray Ellefson 1323 | Henry Ellenson 1324 | Wayne Ellington 1325 | Bob Elliott 1326 | Sean Elliott 1327 | Bo Ellis 1328 | Boo Ellis 1329 | Dale Ellis 1330 | Harold Ellis 1331 | Joe Ellis 1332 | LaPhonso Ellis 1333 | LeRon Ellis 1334 | Leroy Ellis 1335 | Monta Ellis 1336 | Pervis Ellison 1337 | Len Elmore 1338 | Francisco Elson 1339 | Darrell Elston 1340 | Melvin Ely 1341 | Joel Embiid 1342 | Wayne Embry 1343 | Andre Emmett 1344 | Ned Endress 1345 | Chris Engler 1346 | Wayne Englestad 1347 | A.J. English 1348 | Alex English 1349 | Claude English 1350 | Jo Jo English 1351 | Kim English 1352 | Scott English 1353 | Gene Englund 1354 | James Ennis 1355 | Tyler Ennis 1356 | Ray Epps 1357 | Semih Erden 1358 | Bo Erias 1359 | Keith Erickson 1360 | Julius Erving 1361 | Evan Eschmeyer 1362 | Jack Eskridge 1363 | Vincenzo Esposito 1364 | Drew Eubanks 1365 | Billy Evans 1366 | Bob Evans 1367 | Brian Evans 1368 | Earl Evans 1369 | Jacob Evans 1370 | Jawun Evans 1371 | Jeremy Evans 1372 | Maurice Evans 1373 | Mike Evans 1374 | Reggie Evans 1375 | Tyreke Evans 1376 | Daniel Ewing 1377 | Patrick Ewing 1378 | Patrick Ewing 1379 | Dante Exum 1380 | Christian Eyenga 1381 | Festus Ezeli 1382 | Johnny Ezersky 1383 | Joe Fabel 1384 | John Fairchild 1385 | Tacko Fall 1386 | Phil Farbman 1387 | Kenneth Faried 1388 | Dick Farley 1389 | Jordan Farmar 1390 | Desmon Farmer 1391 | Jim Farmer 1392 | Mike Farmer 1393 | Tony Farmer 1394 | Bob Faught 1395 | Vitor Faverani 1396 | Derrick Favors 1397 | Nick Fazekas 1398 | Dave Fedor 1399 | Bob Feerick 1400 | Butch Feher 1401 | Jamie Feick 1402 | Ron Feiereisel 1403 | George Feigenbaum 1404 | Dave Feitl 1405 | Kay Felder 1406 | Cristiano Felicio 1407 | Carrick Felix 1408 | Noel Felix 1409 | Ray Felix 1410 | Raymond Felton 1411 | Jake Fendley 1412 | Warren Fenley 1413 | Desmond Ferguson 1414 | Terrance Ferguson 1415 | Rudy Fernandez 1416 | Bruno Fernando 1417 | Eric Fernsten 1418 | Al Ferrari 1419 | Rolando Ferreira 1420 | Duane Ferrell 1421 | Yogi Ferrell 1422 | Arnie Ferrin 1423 | Bob Ferry 1424 | Danny Ferry 1425 | Kyrylo Fesenko 1426 | Bobby Fields 1427 | Kenny Fields 1428 | Landry Fields 1429 | Ron Filipek 1430 | Greg Fillmore 1431 | Larry Finch 1432 | Hank Finkel 1433 | Michael Finley 1434 | Danny Finn 1435 | Dorian Finney-Smith 1436 | Matt Fish 1437 | Derek Fisher 1438 | Richard Fisher 1439 | Gerald Fitch 1440 | Bob Fitzgerald 1441 | Dick Fitzgerald 1442 | Marcus Fizer 1443 | Jerry Fleishman 1444 | Al Fleming 1445 | Ed Fleming 1446 | Vern Fleming 1447 | Luis Flores 1448 | Bruce Flowers 1449 | Sleepy Floyd 1450 | Jonny Flynn 1451 | Mike Flynn 1452 | Larry Fogle 1453 | Jack Foley 1454 | Isaac Fontaine 1455 | Levi Fontaine 1456 | Jeff Foote 1457 | Bryn Forbes 1458 | Gary Forbes 1459 | Alphonso Ford 1460 | Alton Ford 1461 | Bob Ford 1462 | Chris Ford 1463 | Don Ford 1464 | Jake Ford 1465 | Phil Ford 1466 | Sharrod Ford 1467 | Sherell Ford 1468 | T.J. Ford 1469 | Donnie Forman 1470 | Bayard Forrest 1471 | Joseph Forte 1472 | Courtney Fortson 1473 | Danny Fortson 1474 | Fred Foster 1475 | Greg Foster 1476 | Jeff Foster 1477 | Jimmy Foster 1478 | Rod Foster 1479 | Antonis Fotsis 1480 | Evan Fournier 1481 | Larry Foust 1482 | Calvin Fowler 1483 | Jerry Fowler 1484 | Tremaine Fowlkes 1485 | De'Aaron Fox 1486 | Harold Fox 1487 | Jim Fox 1488 | Rick Fox 1489 | Randy Foye 1490 | Adonal Foyle 1491 | Richie Frahm 1492 | Steve Francis 1493 | Tellis Frank 1494 | Nat Frankel 1495 | Jamaal Franklin 1496 | William Franklin 1497 | Ronald Franz 1498 | Melvin Frazier 1499 | Michael Frazier 1500 | Tim Frazier 1501 | Walt Frazier 1502 | Will Frazier 1503 | Anthony Frederick 1504 | Jimmer Fredette 1505 | World B. Free 1506 | Joel Freeland 1507 | Donnie Freeman 1508 | Gary Freeman 1509 | Rod Freeman 1510 | Matt Freije 1511 | Frido Frey 1512 | Larry Friend 1513 | Pat Frink 1514 | Jim Fritsche 1515 | Channing Frye 1516 | Bernie Fryer 1517 | Frank Fucarino 1518 | Herm Fuetsch 1519 | Joe Fulks 1520 | Carl Fuller 1521 | Hiram Fuller 1522 | Todd Fuller 1523 | Tony Fuller 1524 | Markelle Fultz 1525 | Lawrence Funderburke 1526 | Terry Furlow 1527 | Bill Gabor 1528 | Wenyen Gabriel 1529 | Dan Gadzuric 1530 | Daniel Gafford 1531 | Deng Gai 1532 | Elmer Gainer 1533 | Bill Gaines 1534 | Corey Gaines 1535 | David Gaines 1536 | Reece Gaines 1537 | Sundiata Gaines 1538 | Mike Gale 1539 | Chad Gallagher 1540 | Harry Gallatin 1541 | Gene Gallette 1542 | Danilo Gallinari 1543 | Langston Galloway 1544 | Dave Gambee 1545 | Kevin Gamble 1546 | Bob Gantt 1547 | Jorge Garbajosa 1548 | Ruben Garces 1549 | Alex Garcia 1550 | Francisco Garcia 1551 | Chuck Gardner 1552 | Earl Gardner 1553 | Kenneth Gardner 1554 | Thomas Gardner 1555 | Vern Gardner 1556 | Jack Garfinkel 1557 | Patricio Garino 1558 | Darius Garland 1559 | Gary Garland 1560 | Winston Garland 1561 | Dick Garmaker 1562 | Bill Garner 1563 | Chris Garner 1564 | Bill Garnett 1565 | Kevin Garnett 1566 | Marlon Garnett 1567 | Billy Garrett 1568 | Calvin Garrett 1569 | Dean Garrett 1570 | Diante Garrett 1571 | Dick Garrett 1572 | Rowland Garrett 1573 | Tom Garrick 1574 | John Garris 1575 | Kiwane Garris 1576 | Pat Garrity 1577 | Jim Garvin 1578 | Marc Gasol 1579 | Pau Gasol 1580 | Frank Gates 1581 | Chris Gatling 1582 | Kenny Gattison 1583 | Rudy Gay 1584 | Ed Gayda 1585 | Andrew Gaze 1586 | Michael Gbinije 1587 | Reggie Geary 1588 | Alonzo Gee 1589 | Matt Geiger 1590 | Mickael Gelabale 1591 | Devean George 1592 | Jack George 1593 | Paul George 1594 | Tate George 1595 | Marcus Georges-Hunt 1596 | Gus Gerard 1597 | Derrick Gervin 1598 | George Gervin 1599 | Gorham Getchell 1600 | John Gianelli 1601 | Dick Gibbs 1602 | Daniel Gibson 1603 | Dee Gibson 1604 | Hoot Gibson 1605 | Jonathan Gibson 1606 | Mel Gibson 1607 | Mike Gibson 1608 | Taj Gibson 1609 | J.R. Giddens 1610 | Trey Gilder 1611 | Harry Giles 1612 | Shai Gilgeous-Alexander 1613 | Eddie Gill 1614 | Kendall Gill 1615 | Ben Gillery 1616 | Jack Gillespie 1617 | Armen Gilliam 1618 | Herm Gilliam 1619 | Artis Gilmore 1620 | Walt Gilmore 1621 | Chuck Gilmur 1622 | Manu Ginobili 1623 | Gordan Giricek 1624 | Jack Givens 1625 | Mickell Gladness 1626 | George Glamack 1627 | Gerald Glass 1628 | Mike Glenn 1629 | Normie Glick 1630 | Georgi Glouchkov 1631 | Clarence Glover 1632 | Dion Glover 1633 | Andreas Glyniadakis 1634 | Mike Gminski 1635 | Rudy Gobert 1636 | Dan Godfread 1637 | Tom Gola 1638 | Ben Goldfaden 1639 | Anthony Goldwire 1640 | Ryan Gomes 1641 | Glen Gondrezick 1642 | Grant Gondrezick 1643 | Drew Gooden 1644 | Gail Goodrich 1645 | Steve Goodrich 1646 | Archie Goodwin 1647 | Brandon Goodwin 1648 | Pop Goodwin 1649 | Aaron Gordon 1650 | Ben Gordon 1651 | Drew Gordon 1652 | Eric Gordon 1653 | Lancaster Gordon 1654 | Paul Gordon 1655 | Marcin Gortat 1656 | Leo Gottlieb 1657 | Andrew Goudelock 1658 | Gerald Govan 1659 | Bato Govedarica 1660 | Joe Graboski 1661 | Ricky Grace 1662 | Calvin Graham 1663 | Devonte' Graham 1664 | Greg Graham 1665 | Joey Graham 1666 | Mal Graham 1667 | Orlando Graham 1668 | Paul Graham 1669 | Stephen Graham 1670 | Treveon Graham 1671 | Jim Grandholm 1672 | Ron Grandison 1673 | Danny Granger 1674 | Stewart Granger 1675 | Brian Grant 1676 | Bud Grant 1677 | Gary Grant 1678 | Greg Grant 1679 | Harvey Grant 1680 | Horace Grant 1681 | Jerami Grant 1682 | Jerian Grant 1683 | Josh Grant 1684 | Paul Grant 1685 | Travis Grant 1686 | Donte Grantham 1687 | Don Grate 1688 | Butch Graves 1689 | Aaron Gray 1690 | Devin Gray 1691 | Ed Gray 1692 | Evric Gray 1693 | Gary Gray 1694 | Josh Gray 1695 | Leonard Gray 1696 | Stuart Gray 1697 | Sylvester Gray 1698 | Wyndol Gray 1699 | Jeff Grayer 1700 | Bob Greacen 1701 | A.C. Green 1702 | Danny Green 1703 | Devin Green 1704 | Draymond Green 1705 | Erick Green 1706 | Gerald Green 1707 | JaMychal Green 1708 | Javonte Green 1709 | Jeff Green 1710 | Johnny Green 1711 | Ken Green 1712 | Kenny Green 1713 | Lamar Green 1714 | Litterial Green 1715 | Luther Green 1716 | Mike Green 1717 | Rickey Green 1718 | Sean Green 1719 | Si Green 1720 | Sidney Green 1721 | Steve Green 1722 | Taurean Green 1723 | Tommie Green 1724 | Willie Green 1725 | Donte Greene 1726 | Orien Greene 1727 | Jerry Greenspan 1728 | Dave Greenwood 1729 | Hal Greer 1730 | Lynn Greer 1731 | Gary Gregor 1732 | Claude Gregory 1733 | John Greig 1734 | Norm Grekin 1735 | Kevin Grevey 1736 | Dennis Grey 1737 | Adrian Griffin 1738 | Blake Griffin 1739 | Eddie Griffin 1740 | Greg Griffin 1741 | Paul Griffin 1742 | Taylor Griffin 1743 | Darrell Griffith 1744 | Chuck Grigsby 1745 | Derek Grimm 1746 | Woody Grimshaw 1747 | Dick Groat 1748 | Bob Gross 1749 | Mike Grosso 1750 | Jerry Grote 1751 | Alex Groza 1752 | Dick Grubar 1753 | Anthony Grundy 1754 | Ernie Grunfeld 1755 | Gene Guarilia 1756 | Petur Gudmundsson 1757 | Marko Guduric 1758 | Richie Guerin 1759 | Tom Gugliotta 1760 | Andres Guibert 1761 | Jay Guidinger 1762 | Coulby Gunther 1763 | Dave Gunther 1764 | Al Guokas 1765 | Matt Guokas 1766 | Matt Guokas 1767 | Jorge Gutierrez 1768 | Kyle Guy 1769 | A.J. Guyton 1770 | Rui Hachimura 1771 | Rudy Hackett 1772 | Hamed Haddadi 1773 | Jim Hadnot 1774 | Scott Haffner 1775 | Cliff Hagan 1776 | Glenn Hagan 1777 | Tom Hagan 1778 | Robert Hahn 1779 | Al Hairston 1780 | Happy Hairston 1781 | Lindsay Hairston 1782 | Malik Hairston 1783 | P.J. Hairston 1784 | Marcus Haislip 1785 | Chick Halbert 1786 | Swede Halbrook 1787 | Bruce Hale 1788 | Hal Hale 1789 | Jack Haley 1790 | Shaler Halimon 1791 | Devon Hall 1792 | Donta Hall 1793 | Mike Hall 1794 | Jeff Halliburton 1795 | Darvin Ham 1796 | Steve Hamer 1797 | Dale Hamilton 1798 | Daniel Hamilton 1799 | Dennis Hamilton 1800 | Joe Hamilton 1801 | Jordan Hamilton 1802 | Justin Hamilton 1803 | Ralph Hamilton 1804 | Richard Hamilton 1805 | Roy Hamilton 1806 | Steve Hamilton 1807 | Tang Hamilton 1808 | Thomas Hamilton 1809 | Zendon Hamilton 1810 | Geert Hammink 1811 | Julian Hammond 1812 | Tom Hammonds 1813 | A.J. Hammons 1814 | Joe Hamood 1815 | Darrin Hancock 1816 | Ben Handlogten 1817 | Cecil Hankins 1818 | Phil Hankinson 1819 | Dusty Hannahs 1820 | Alex Hannum 1821 | Don Hanrahan 1822 | Rollen Hans 1823 | Ben Hansbrough 1824 | Tyler Hansbrough 1825 | Bob Hansen 1826 | Glenn Hansen 1827 | Lars Hansen 1828 | Travis Hansen 1829 | Reggie Hanson 1830 | Bill Hanzlik 1831 | Luke Harangody 1832 | Anfernee Hardaway 1833 | Tim Hardaway 1834 | Tim Hardaway Jr. 1835 | James Harden 1836 | Reggie Harding 1837 | Charlie Hardnett 1838 | Alan Hardy 1839 | Darrell Hardy 1840 | James Hardy 1841 | Ira Harge 1842 | John Hargis 1843 | Maurice Harkless 1844 | Jerry Harkness 1845 | Skip Harlicka 1846 | Jerome Harmon 1847 | Derek Harper 1848 | Jared Harper 1849 | Justin Harper 1850 | Mike Harper 1851 | Ron Harper 1852 | Matt Harpring 1853 | Montrezl Harrell 1854 | Josh Harrellson 1855 | Adam Harrington 1856 | Al Harrington 1857 | Junior Harrington 1858 | Othella Harrington 1859 | Art Harris 1860 | Bernie Harris 1861 | Billy Harris 1862 | Bob Harris 1863 | Chris Harris 1864 | Devin Harris 1865 | Elias Harris 1866 | Gary Harris 1867 | Joe Harris 1868 | Lucious Harris 1869 | Manny Harris 1870 | Mike Harris 1871 | Steve Harris 1872 | Terrel Harris 1873 | Tobias Harris 1874 | Tony Harris 1875 | Aaron Harrison 1876 | Andrew Harrison 1877 | Bob Harrison 1878 | David Harrison 1879 | Shaquille Harrison 1880 | Jason Hart 1881 | Josh Hart 1882 | Isaiah Hartenstein 1883 | Antonio Harvey 1884 | Donnell Harvey 1885 | Scott Haskin 1886 | Clem Haskins 1887 | Udonis Haslem 1888 | Trenton Hassell 1889 | Billy Hassett 1890 | Joe Hassett 1891 | Scott Hastings 1892 | Kirk Haston 1893 | Vern Hatton 1894 | John Havlicek 1895 | Spencer Hawes 1896 | Steve Hawes 1897 | Bubbles Hawkins 1898 | Connie Hawkins 1899 | Hersey Hawkins 1900 | Juaquin Hawkins 1901 | Marshall Hawkins 1902 | Michael Hawkins 1903 | Tom Hawkins 1904 | Nate Hawthorne 1905 | Chuck Hayes 1906 | Elvin Hayes 1907 | Jarvis Hayes 1908 | Jaxson Hayes 1909 | Jim Hayes 1910 | Nigel Hayes 1911 | Steve Hayes 1912 | Gordon Hayward 1913 | Lazar Hayward 1914 | Brendan Haywood 1915 | Spencer Haywood 1916 | John Hazen 1917 | Walt Hazzard 1918 | Luther Head 1919 | Shane Heal 1920 | Brian Heaney 1921 | Gar Heard 1922 | Reggie Hearn 1923 | Herm Hedderick 1924 | Alvin Heggs 1925 | Tom Heinsohn 1926 | Dick Hemric 1927 | Alan Henderson 1928 | Cedric Henderson 1929 | Cedric Henderson 1930 | Dave Henderson 1931 | Gerald Henderson 1932 | Gerald Henderson 1933 | J.R. Henderson 1934 | Jerome Henderson 1935 | Kevin Henderson 1936 | Tom Henderson 1937 | Mark Hendrickson 1938 | Larry Hennessy 1939 | Don Henriksen 1940 | Al Henry 1941 | Bill Henry 1942 | Carl Henry 1943 | Conner Henry 1944 | Myke Henry 1945 | Skeeter Henry 1946 | Xavier Henry 1947 | John Henson 1948 | Steve Henson 1949 | Charles Hentz 1950 | Bill Herman 1951 | Kleggie Hermsen 1952 | Dewan Hernandez 1953 | Juan Hernangomez 1954 | Willy Hernangomez 1955 | Chris Herren 1956 | Carl Herrera 1957 | Walter Herrmann 1958 | Tyler Herro 1959 | Keith Herron 1960 | Sonny Hertzberg 1961 | Kevin Hervey 1962 | Dan Hester 1963 | Fred Hetzel 1964 | Bill Hewitt 1965 | Jack Hewson 1966 | Art Heyman 1967 | Mario Hezonja 1968 | Roy Hibbert 1969 | Nat Hickey 1970 | Isaiah Hicks 1971 | Phil Hicks 1972 | J.J. Hickson 1973 | Buddy Hield 1974 | Bill Higgins 1975 | Cory Higgins 1976 | Earle Higgins 1977 | Mike Higgins 1978 | Rod Higgins 1979 | Sean Higgins 1980 | Kenny Higgs 1981 | Johnny High 1982 | Haywood Highsmith 1983 | Wayne Hightower 1984 | Nene Hilario 1985 | Armond Hill 1986 | Cleo Hill 1987 | Gary Hill 1988 | George Hill 1989 | Grant Hill 1990 | Jordan Hill 1991 | Simmie Hill 1992 | Solomon Hill 1993 | Steven Hill 1994 | Tyrone Hill 1995 | Art Hillhouse 1996 | Darrun Hilliard 1997 | Darnell Hillman 1998 | Fred Hilton 1999 | Kirk Hinrich 2000 | Roy Hinson 2001 | Mel Hirsch 2002 | Lew Hitch 2003 | Robert Hite 2004 | Jaylen Hoard 2005 | Darington Hobson 2006 | Donald Hodge 2007 | Julius Hodge 2008 | Craig Hodges 2009 | Charlie Hoefer 2010 | Paul Hoffman 2011 | Bob Hogsett 2012 | Paul Hogue 2013 | Fred Hoiberg 2014 | Doug Holcomb 2015 | Randy Holcomb 2016 | Aaron Holiday 2017 | Jrue Holiday 2018 | Justin Holiday 2019 | Brad Holland 2020 | Joe Holland 2021 | John Holland 2022 | Wilbur Holland 2023 | Lionel Hollins 2024 | Ryan Hollins 2025 | Essie Hollis 2026 | Rondae Hollis-Jefferson 2027 | Dennis Holman 2028 | Richaun Holmes 2029 | Jim Holstein 2030 | A.W. Holt 2031 | Michael Holton 2032 | Dick Holub 2033 | Joe Holup 2034 | Red Holzman 2035 | Jerald Honeycutt 2036 | Tyler Honeycutt 2037 | Derek Hood 2038 | Rodney Hood 2039 | Bobby Hooper 2040 | Carroll Hooser 2041 | Tom Hoover 2042 | Bob Hopkins 2043 | Dave Hoppen 2044 | Dennis Hopson 2045 | Scotty Hopson 2046 | Johnny Horan 2047 | Cedrick Hordges 2048 | Al Horford 2049 | Tito Horford 2050 | Ron Horn 2051 | Jeff Hornacek 2052 | Dennis Horner 2053 | Robert Horry 2054 | Ed Horton 2055 | Talen Horton-Tucker 2056 | Bill Hosket 2057 | Bob Houbregs 2058 | Danuel House 2059 | Eddie House 2060 | Allan Houston 2061 | Byron Houston 2062 | Tom Hovasse 2063 | Brian Howard 2064 | Dwight Howard 2065 | Greg Howard 2066 | Josh Howard 2067 | Juwan Howard 2068 | Mo Howard 2069 | Otis Howard 2070 | Stephen Howard 2071 | William Howard 2072 | Bailey Howell 2073 | Bob Hubbard 2074 | Phil Hubbard 2075 | Lester Hudson 2076 | Lou Hudson 2077 | Troy Hudson 2078 | Marcelo Huertas 2079 | Kevin Huerter 2080 | Josh Huestis 2081 | Nate Huffman 2082 | Alfredrick Hughes 2083 | Eddie Hughes 2084 | Kim Hughes 2085 | Larry Hughes 2086 | Rick Hughes 2087 | Robbie Hummel 2088 | John Hummer 2089 | Ryan Humphrey 2090 | Isaac Humphries 2091 | Jay Humphries 2092 | Kris Humphries 2093 | Hot Rod Hundley 2094 | Brandon Hunter 2095 | Cedric Hunter 2096 | Chris Hunter 2097 | De'Andre Hunter 2098 | Les Hunter 2099 | Lindsey Hunter 2100 | Othello Hunter 2101 | R.J. Hunter 2102 | Steven Hunter 2103 | Vince Hunter 2104 | Bobby Hurley 2105 | Roy Hurley 2106 | Geoff Huston 2107 | Paul Huston 2108 | Mel Hutchins 2109 | Chandler Hutchison 2110 | Joe Hutton 2111 | Greg Hyder 2112 | Marc Iavaroni 2113 | Serge Ibaka 2114 | Andre Iguodala 2115 | Zydrunas Ilgauskas 2116 | Mile Ilic 2117 | Didier Ilunga-Mbenga 2118 | Ersan Ilyasova 2119 | Darrall Imhoff 2120 | Tom Ingelsby 2121 | Joe Ingles 2122 | Damien Inglis 2123 | Andre Ingram 2124 | Brandon Ingram 2125 | McCoy Ingram 2126 | Ervin Inniger 2127 | Byron Irvin 2128 | George Irvine 2129 | Kyrie Irving 2130 | Jonathan Isaac 2131 | Dan Issel 2132 | Mike Iuzzolino 2133 | Allen Iverson 2134 | Willie Iverson 2135 | Royal Ivey 2136 | Elvin Ivory 2137 | Wesley Iwundu 2138 | Warren Jabali 2139 | Jarrett Jack 2140 | Aaron Jackson 2141 | Al Jackson 2142 | Bobby Jackson 2143 | Cedric Jackson 2144 | Darnell Jackson 2145 | Demetrius Jackson 2146 | Frank Jackson 2147 | Greg Jackson 2148 | Jaren Jackson 2149 | Jaren Jackson 2150 | Jermaine Jackson 2151 | Jim Jackson 2152 | Josh Jackson 2153 | Justin Jackson 2154 | Luke Jackson 2155 | Luke Jackson 2156 | Marc Jackson 2157 | Mark Jackson 2158 | Mervin Jackson 2159 | Michael Jackson 2160 | Mike Jackson 2161 | Myron Jackson 2162 | Phil Jackson 2163 | Pierre Jackson 2164 | Ralph Jackson 2165 | Randell Jackson 2166 | Reggie Jackson 2167 | Stanley Jackson 2168 | Stephen Jackson 2169 | Tony Jackson 2170 | Tony Jackson 2171 | Tracy Jackson 2172 | Wardell Jackson 2173 | Fred Jacobs 2174 | Casey Jacobsen 2175 | Sam Jacobson 2176 | Dave Jamerson 2177 | Aaron James 2178 | Bernard James 2179 | Billy James 2180 | Damion James 2181 | Gene James 2182 | Henry James 2183 | Jerome James 2184 | Justin James 2185 | LeBron James 2186 | Mike James 2187 | Mike James 2188 | Tim James 2189 | Antawn Jamison 2190 | Harold Jamison 2191 | John Janisch 2192 | Howie Janotta 2193 | Marko Jaric 2194 | Tony Jaros 2195 | Jim Jarvis 2196 | Sarunas Jasikevicius 2197 | Nathan Jawai 2198 | Buddy Jeannette 2199 | Abdul Jeelani 2200 | Chris Jefferies 2201 | Othyus Jeffers 2202 | Al Jefferson 2203 | Amile Jefferson 2204 | Cory Jefferson 2205 | Dontell Jefferson 2206 | Richard Jefferson 2207 | DaQuan Jeffries 2208 | Jared Jeffries 2209 | Charles Jenkins 2210 | Horace Jenkins 2211 | John Jenkins 2212 | Brandon Jennings 2213 | Keith Jennings 2214 | Chris Jent 2215 | Les Jepsen 2216 | Jonas Jerebko 2217 | Ty Jerome 2218 | Grant Jerrett 2219 | Eugene Jeter 2220 | Hal Jeter 2221 | Yi Jianlian 2222 | Britton Johnsen 2223 | Alexander Johnson 2224 | Alize Johnson 2225 | Amir Johnson 2226 | Andy Johnson 2227 | Anthony Johnson 2228 | Armon Johnson 2229 | Arnie Johnson 2230 | Avery Johnson 2231 | B.J. Johnson 2232 | Brice Johnson 2233 | Buck Johnson 2234 | Cameron Johnson 2235 | Carldell Johnson 2236 | Charles Johnson 2237 | Cheese Johnson 2238 | Chris Johnson 2239 | Chris Johnson 2240 | Clay Johnson 2241 | Clemon Johnson 2242 | Dakari Johnson 2243 | Darryl Johnson 2244 | Dave Johnson 2245 | DeMarco Johnson 2246 | Dennis Johnson 2247 | DerMarr Johnson 2248 | Ed Johnson 2249 | Eddie Johnson 2250 | Eddie Johnson 2251 | Eric Johnson 2252 | Ervin Johnson 2253 | Frank Johnson 2254 | George Johnson 2255 | George Johnson 2256 | George Johnson 2257 | Gus Johnson 2258 | Harold Johnson 2259 | Ivan Johnson 2260 | JaJuan Johnson 2261 | James Johnson 2262 | Joe Johnson 2263 | John Johnson 2264 | Kannard Johnson 2265 | Keldon Johnson 2266 | Ken Johnson 2267 | Ken Johnson 2268 | Kevin Johnson 2269 | Larry Johnson 2270 | Larry Johnson 2271 | Lee Johnson 2272 | Linton Johnson 2273 | Magic Johnson 2274 | Marques Johnson 2275 | Mickey Johnson 2276 | Neil Johnson 2277 | Nick Johnson 2278 | Ollie Johnson 2279 | Omari Johnson 2280 | Orlando Johnson 2281 | Ralph Johnson 2282 | Reggie Johnson 2283 | Rich Johnson 2284 | Ron Johnson 2285 | Stanley Johnson 2286 | Steffond Johnson 2287 | Steve Johnson 2288 | Stew Johnson 2289 | Trey Johnson 2290 | Tyler Johnson 2291 | Vinnie Johnson 2292 | Wesley Johnson 2293 | Darius Johnson-Odom 2294 | Nate Johnston 2295 | Neil Johnston 2296 | Jim Johnstone 2297 | Nikola Jokic 2298 | Howie Jolliff 2299 | Alvin Jones 2300 | Anthony Jones 2301 | Askia Jones 2302 | Bill Jones 2303 | Bobby Jones 2304 | Bobby Jones 2305 | Caldwell Jones 2306 | Charles Jones 2307 | Charles Jones 2308 | Charles Jones 2309 | Collis Jones 2310 | Dahntay Jones 2311 | Damian Jones 2312 | Damon Jones 2313 | DeQuan Jones 2314 | Derrick Jones 2315 | Dominique Jones 2316 | Dontae' Jones 2317 | Dwayne Jones 2318 | Dwight Jones 2319 | Earl Jones 2320 | Eddie Jones 2321 | Edgar Jones 2322 | Fred Jones 2323 | Hutch Jones 2324 | Jake Jones 2325 | Jalen Jones 2326 | James Jones 2327 | Jemerrio Jones 2328 | Jimmy Jones 2329 | Johnny Jones 2330 | Jumaine Jones 2331 | K.C. Jones 2332 | Kevin Jones 2333 | Larry Jones 2334 | Major Jones 2335 | Mark Jones 2336 | Mark Jones 2337 | Nick Jones 2338 | Ozell Jones 2339 | Perry Jones 2340 | Popeye Jones 2341 | Rich Jones 2342 | Robin Jones 2343 | Sam Jones 2344 | Shelton Jones 2345 | Solomon Jones 2346 | Steve Jones 2347 | Terrence Jones 2348 | Tyus Jones 2349 | Wah Wah Jones 2350 | Wali Jones 2351 | Wil Jones 2352 | Willie Jones 2353 | Adonis Jordan 2354 | Charles Jordan 2355 | DeAndre Jordan 2356 | Eddie Jordan 2357 | Jerome Jordan 2358 | Michael Jordan 2359 | Reggie Jordan 2360 | Thomas Jordan 2361 | Walter Jordan 2362 | Phil Jordon 2363 | Johnny Jorgensen 2364 | Noble Jorgensen 2365 | Roger Jorgensen 2366 | Cory Joseph 2367 | Garth Joseph 2368 | Kris Joseph 2369 | Yvon Joseph 2370 | Kevin Joyce 2371 | Butch Joyner 2372 | Jeff Judkins 2373 | Mfiondu Kabengele 2374 | Whitey Kachan 2375 | George Kaftan 2376 | Ed Kalafat 2377 | Chris Kaman 2378 | Frank Kaminsky 2379 | Enes Kanter 2380 | Ralph Kaplowitz 2381 | Jason Kapono 2382 | Tony Kappen 2383 | Sergey Karasev 2384 | Coby Karl 2385 | George Karl 2386 | Ed Kasid 2387 | Mario Kasun 2388 | Leo Katkaveck 2389 | Bob Kauffman 2390 | Sasha Kaun 2391 | Wilbert Kautz 2392 | Clarence Kea 2393 | Mike Kearns 2394 | Tommy Kearns 2395 | Adam Keefe 2396 | Harold Keeling 2397 | Bill Keller 2398 | Gary Keller 2399 | Ken Keller 2400 | Rich Kelley 2401 | Clark Kellogg 2402 | Arvesta Kelly 2403 | Jerry Kelly 2404 | Ryan Kelly 2405 | Tom Kelly 2406 | Greg Kelser 2407 | Ben Kelso 2408 | Shawn Kemp 2409 | Tim Kempton 2410 | Frank Kendrick 2411 | Luke Kennard 2412 | D.J. Kennedy 2413 | Goo Kennedy 2414 | Joe Kennedy 2415 | Pickles Kennedy 2416 | Larry Kenon 2417 | Billy Kenville 2418 | Jonathan Kerner 2419 | Red Kerr 2420 | Steve Kerr 2421 | Jack Kerris 2422 | Jerome Kersey 2423 | Tom Kerwin 2424 | Alec Kessler 2425 | Lari Ketner 2426 | Julius Keye 2427 | Randolph Keys 2428 | Viktor Khryapa 2429 | Jason Kidd 2430 | Stanton Kidd 2431 | Warren Kidd 2432 | Michael Kidd-Gilchrist 2433 | Irv Kiffin 2434 | Jack Kiley 2435 | Earnie Killum 2436 | Carl Kilpatrick 2437 | Sean Kilpatrick 2438 | Toby Kimball 2439 | Bo Kimble 2440 | Stan Kimbrough 2441 | Chad Kinch 2442 | Albert King 2443 | Bernard King 2444 | Chris King 2445 | Dan King 2446 | Frankie King 2447 | George King 2448 | George King 2449 | Gerard King 2450 | Jim King 2451 | Jimmy King 2452 | Louis King 2453 | Loyd King 2454 | Maurice King 2455 | Reggie King 2456 | Rich King 2457 | Ron King 2458 | Stacey King 2459 | Tom King 2460 | Bob Kinney 2461 | Tarence Kinsey 2462 | Andrei Kirilenko 2463 | Alex Kirk 2464 | Walt Kirk 2465 | Wilbur Kirkland 2466 | Jim Kissane 2467 | Doug Kistler 2468 | Curtis Kitchen 2469 | Greg Kite 2470 | Kerry Kittles 2471 | Maxi Kleber 2472 | Joe Kleine 2473 | Linas Kleiza 2474 | Leo Klier 2475 | Herm Klotz 2476 | Duane Klueh 2477 | Lonnie Kluttz 2478 | Billy Knight 2479 | Bob Knight 2480 | Brandin Knight 2481 | Brandon Knight 2482 | Brevin Knight 2483 | Negele Knight 2484 | Ron Knight 2485 | Toby Knight 2486 | Travis Knight 2487 | Lee Knorek 2488 | Dick Knostman 2489 | Rod Knowles 2490 | Kevin Knox 2491 | Bart Kofoed 2492 | Don Kojis 2493 | Milo Komenich 2494 | Howard Komives 2495 | Jon Koncak 2496 | John Konchar 2497 | Tom Kondla 2498 | Bud Koper 2499 | Joe Kopicki 2500 | Furkan Korkmaz 2501 | Frank Kornet 2502 | Luke Kornet 2503 | Yaroslav Korolev 2504 | Kyle Korver 2505 | Tony Koski 2506 | Len Kosmalski 2507 | Andy Kostecka 2508 | Harold Kottman 2509 | Kosta Koufos 2510 | Tom Kozelko 2511 | Ronald Kozlicki 2512 | Arvid Kramer 2513 | Barry Kramer 2514 | Joel Kramer 2515 | Steven Kramer 2516 | Dan Kraus 2517 | Herb Krautblatt 2518 | Viacheslav Kravtsov 2519 | Jim Krebs 2520 | Wayne Kreklow 2521 | Tommy Kron 2522 | Tom Kropp 2523 | Nenad Krstic 2524 | Larry Krystkowiak 2525 | Steve Kuberski 2526 | Leo Kubiak 2527 | Bruce Kuczenski 2528 | Frank Kudelka 2529 | John Kuester 2530 | Ray Kuka 2531 | Toni Kukoc 2532 | Kevin Kunnert 2533 | Terry Kunze 2534 | Mitch Kupchak 2535 | C.J. Kupec 2536 | Rodions Kurucs 2537 | Rob Kurz 2538 | Ibo Kutluay 2539 | Kyle Kuzma 2540 | Ognjen Kuzmic 2541 | Mindaugas Kuzminskas 2542 | Fred LaCour 2543 | Raef LaFrentz 2544 | Tom LaGarde 2545 | Rusty LaRue 2546 | Rudy LaRusso 2547 | Zach LaVine 2548 | Skal Labissiere 2549 | Reggie Lacefield 2550 | Edgar Lacey 2551 | Sam Lacey 2552 | Bob Lackey 2553 | Wendell Ladner 2554 | Christian Laettner 2555 | Oliver Lafayette 2556 | Bill Laimbeer 2557 | Pete Lalich 2558 | Bo Lamar 2559 | Doron Lamb 2560 | Jeremy Lamb 2561 | John Lambert 2562 | Jeff Lamp 2563 | Maciej Lampe 2564 | Jim Lampley 2565 | Sean Lampley 2566 | Carl Landry 2567 | Marcus Landry 2568 | Mark Landsberger 2569 | Jerome Lane 2570 | Andrew Lang 2571 | Antonio Lang 2572 | James Lang 2573 | Trajan Langdon 2574 | Keith Langford 2575 | Romeo Langford 2576 | Dan Langhi 2577 | Bob Lanier 2578 | Stu Lantz 2579 | Nicolas Laprovittola 2580 | York Larese 2581 | Shane Larkin 2582 | John Laskowski 2583 | Stephane Lasme 2584 | Dave Lattin 2585 | Priest Lauderdale 2586 | Rich Laurel 2587 | Harry Laurie 2588 | Walt Lautenbach 2589 | Joffrey Lauvergne 2590 | Tony Lavelli 2591 | Bob Lavoy 2592 | Acie Law 2593 | Vic Law 2594 | Gani Lawal 2595 | Edmund Lawrence 2596 | Jason Lawson 2597 | Ty Lawson 2598 | Jake Layman 2599 | Mo Layton 2600 | Caris LeVert 2601 | T.J. Leaf 2602 | Manny Leaks 2603 | Hal Lear 2604 | Allen Leavell 2605 | Jeff Lebo 2606 | Eric Leckner 2607 | Jalen Lecque 2608 | Ricky Ledo 2609 | Butch Lee 2610 | Clyde Lee 2611 | Courtney Lee 2612 | Damion Lee 2613 | David Lee 2614 | David Lee 2615 | Dick Lee 2616 | Doug Lee 2617 | George Lee 2618 | Greg Lee 2619 | Keith Lee 2620 | Kurk Lee 2621 | Malcolm Lee 2622 | Rock Lee 2623 | Ron Lee 2624 | Russ Lee 2625 | Ed Leede 2626 | Hank Lefkowitz 2627 | Tim Legler 2628 | George Lehmann 2629 | Walt Lemon 2630 | Alex Len 2631 | Voshon Lenard 2632 | Leary Lentz 2633 | Gary Leonard 2634 | Kawhi Leonard 2635 | Meyers Leonard 2636 | Slick Leonard 2637 | Jim Les 2638 | Travis Leslie 2639 | Ronnie Lester 2640 | Clifford Lett 2641 | Jon Leuer 2642 | Andrew Levane 2643 | Fat Lever 2644 | Cliff Levingston 2645 | Bobby Lewis 2646 | Cedric Lewis 2647 | Freddie Lewis 2648 | Freddie Lewis 2649 | Grady Lewis 2650 | Martin Lewis 2651 | Mike Lewis 2652 | Quincy Lewis 2653 | Ralph Lewis 2654 | Rashard Lewis 2655 | Reggie Lewis 2656 | Marcus Liberty 2657 | Todd Lichti 2658 | Barry Liebowitz 2659 | DeAndre Liggins 2660 | Bill Ligon 2661 | Goose Ligon 2662 | Damian Lillard 2663 | Jeremy Lin 2664 | Steve Lingenfelter 2665 | Alton Lister 2666 | Nassir Little 2667 | Samuel Little 2668 | Gene Littles 2669 | Randy Livingston 2670 | Shaun Livingston 2671 | Ron Livingstone 2672 | Horacio Llamas Grey 2673 | Bobby Lloyd 2674 | Chuck Lloyd 2675 | Earl Lloyd 2676 | Lewis Lloyd 2677 | Scott Lloyd 2678 | Riney Lochmann 2679 | Bob Lochmueller 2680 | Rob Lock 2681 | Darrell Lockhart 2682 | Ian Lockhart 2683 | Kevin Loder 2684 | Don Lofgran 2685 | Zach Lofton 2686 | Henry Logan 2687 | John Logan 2688 | Brad Lohaus 2689 | Art Long 2690 | Grant Long 2691 | John Long 2692 | Paul Long 2693 | Shawn Long 2694 | Willie Long 2695 | Luc Longley 2696 | Kevon Looney 2697 | Brook Lopez 2698 | Felipe Lopez 2699 | Raul Lopez 2700 | Robin Lopez 2701 | Ryan Lorthridge 2702 | Jim Loscutoff 2703 | Plummer Lott 2704 | Kevin Loughery 2705 | Bob Love 2706 | Kevin Love 2707 | Stan Love 2708 | Clyde Lovellette 2709 | Sidney Lowe 2710 | Charlie Lowery 2711 | Kyle Lowry 2712 | Jordan Loyd 2713 | Al Lucas 2714 | Jerry Lucas 2715 | John Lucas 2716 | Kalin Lucas 2717 | Maurice Lucas 2718 | John Lucas III 2719 | Ted Luckenbill 2720 | Tyronn Lue 2721 | Jim Luisi 2722 | Al Lujack 2723 | Phil Lumpkin 2724 | Ray Lumpp 2725 | Timothe Luwawu-Cabarrot 2726 | Tyler Lydon 2727 | Trey Lyles 2728 | R.B. Lynam 2729 | George Lynch 2730 | Kevin Lynch 2731 | Lonnie Lynn 2732 | Mike Lynn 2733 | Sheldon Mac 2734 | Todd MacCulloch 2735 | Ronnie MacGilvray 2736 | Don MacLean 2737 | Mike Macaluso 2738 | Ed Macauley 2739 | Scott Machado 2740 | Arvydas Macijauskas 2741 | Ollie Mack 2742 | Sam Mack 2743 | Shelvin Mack 2744 | Malcolm Mackey 2745 | Rudy Macklin 2746 | Vernon Macklin 2747 | Johnny Macknowski 2748 | Daryl Macon 2749 | Mark Macon 2750 | J.P. Macura 2751 | Kyle Macy 2752 | Jack Maddox 2753 | Tito Maddox 2754 | Gerald Madkins 2755 | Mark Madsen 2756 | Norm Mager 2757 | Josh Magette 2758 | Corey Maggette 2759 | Dave Magley 2760 | Jamaal Magloire 2761 | Randolph Mahaffey 2762 | Ian Mahinmi 2763 | John Mahnken 2764 | Brian Mahoney 2765 | Mo Mahoney 2766 | Rick Mahorn 2767 | Dan Majerle 2768 | Renaldo Major 2769 | Thon Maker 2770 | Lionel Malamed 2771 | Jeff Malone 2772 | Karl Malone 2773 | Moses Malone 2774 | Matt Maloney 2775 | Steve Malovic 2776 | Mike Maloy 2777 | Ted Manakas 2778 | John Mandic 2779 | Frank Mangiapane 2780 | Terance Mann 2781 | Danny Manning 2782 | Ed Manning 2783 | Guy Manning 2784 | Rich Manning 2785 | Pace Mannion 2786 | Nick Mantis 2787 | Pete Maravich 2788 | Press Maravich 2789 | Devyn Marble 2790 | Roy Marble 2791 | Stephon Marbury 2792 | Sarunas Marciulionis 2793 | Saul Mariaschin 2794 | Jack Marin 2795 | Shawn Marion 2796 | Boban Marjanovic 2797 | Lauri Markkanen 2798 | Damir Markota 2799 | Sean Marks 2800 | Harvey Marlatt 2801 | Jim Marsh 2802 | Ricky Marsh 2803 | Donny Marshall 2804 | Donyell Marshall 2805 | Kendall Marshall 2806 | Rawle Marshall 2807 | Tom Marshall 2808 | Vester Marshall 2809 | Bill Martin 2810 | Bob Martin 2811 | Brian Martin 2812 | Caleb Martin 2813 | Cartier Martin 2814 | Cody Martin 2815 | Cuonzo Martin 2816 | Darrick Martin 2817 | Dino Martin 2818 | Don Martin 2819 | Fernando Martin 2820 | Jarell Martin 2821 | Jeff Martin 2822 | Jeremiah Martin 2823 | Kelan Martin 2824 | Kenyon Martin 2825 | Kevin Martin 2826 | LaRue Martin 2827 | Maurice Martin 2828 | Phil Martin 2829 | Slater Martin 2830 | Whitey Martin 2831 | Jamal Mashburn 2832 | Al Masino 2833 | Anthony Mason 2834 | Desmond Mason 2835 | Frank Mason 2836 | Roger Mason 2837 | Tony Massenburg 2838 | Eddie Mast 2839 | Yante Maten 2840 | Garrison Mathews 2841 | Mangok Mathiang 2842 | Johnny Mathis 2843 | Wes Matthews 2844 | Wesley Matthews 2845 | Ariel Maughan 2846 | Marlon Maxey 2847 | Jason Maxiell 2848 | Cedric Maxwell 2849 | Vernon Maxwell 2850 | Don May 2851 | Scott May 2852 | Sean May 2853 | Lee Mayberry 2854 | Clyde Mayes 2855 | Tharon Mayes 2856 | Bill Mayfield 2857 | Ken Mayfield 2858 | Eric Maynor 2859 | O.J. Mayo 2860 | Travis Mays 2861 | Matt Mazza 2862 | Luc Mbah a Moute 2863 | Bob McAdoo 2864 | James Michael McAdoo 2865 | Ken McBride 2866 | Tahjere McCall 2867 | Ray McCallum 2868 | Bob McCann 2869 | Brendan McCann 2870 | Mel McCants 2871 | Rashad McCants 2872 | Mike McCarron 2873 | Andre McCarter 2874 | Willie McCarter 2875 | Johnny McCarthy 2876 | Howie McCarty 2877 | Kelly McCarty 2878 | Walter McCarty 2879 | Amal McCaskill 2880 | Patrick McCaw 2881 | Dwayne McClain 2882 | Ted McClain 2883 | Dan McClintock 2884 | Jack McCloskey 2885 | George McCloud 2886 | CJ McCollum 2887 | John McConathy 2888 | Bucky McConnell 2889 | T.J. McConnell 2890 | Keith McCord 2891 | Tim McCormick 2892 | Jelani McCoy 2893 | Paul McCracken 2894 | Chris McCray 2895 | Rodney McCray 2896 | Scooter McCray 2897 | Erik McCree 2898 | Chris McCullough 2899 | John McCullough 2900 | Clint McDaniel 2901 | Xavier McDaniel 2902 | Jalen McDaniels 2903 | Jim McDaniels 2904 | K.J. McDaniels 2905 | Doug McDermott 2906 | Ben McDonald 2907 | Glenn McDonald 2908 | Michael McDonald 2909 | Roderick McDonald 2910 | Hank McDowell 2911 | Antonio McDyess 2912 | Jim McElroy 2913 | Patrick McFarland 2914 | Ivan McFarlin 2915 | Mel McGaha 2916 | Mitch McGary 2917 | JaVale McGee 2918 | Mike McGee 2919 | Bill McGill 2920 | George McGinnis 2921 | Jon McGlocklin 2922 | Tracy McGrady 2923 | Gil McGregor 2924 | Elton McGriff 2925 | Rodney McGruder 2926 | Alfred McGuire 2927 | Allie McGuire 2928 | Dick McGuire 2929 | Dominic McGuire 2930 | Kevin McHale 2931 | Maurice McHartley 2932 | Jim McIlvaine 2933 | Jeff McInnis 2934 | Kenny McIntosh 2935 | Bob McIntyre 2936 | Jerry McKee 2937 | Kevin McKenna 2938 | Forrest McKenzie 2939 | Stan McKenzie 2940 | Derrick McKey 2941 | Aaron McKie 2942 | Billy McKinney 2943 | Bones McKinney 2944 | Carlton McKinney 2945 | Trey McKinney-Jones 2946 | Alfonzo McKinnie 2947 | Jordan McLaughlin 2948 | Ben McLemore 2949 | McCoy McLemore 2950 | George McLeod 2951 | Keith McLeod 2952 | Roshown McLeod 2953 | Jack McMahon 2954 | Nate McMillan 2955 | Tom McMillen 2956 | Jim McMillian 2957 | Shellie McMillon 2958 | Mal McMullen 2959 | Chet McNabb 2960 | Mark McNamara 2961 | Joe McNamee 2962 | Jerel McNeal 2963 | Chris McNealy 2964 | Bob McNeill 2965 | Larry McNeill 2966 | Carl McNulty 2967 | Paul McPherson 2968 | Roy McPipe 2969 | Cozell McQueen 2970 | Jordan McRae 2971 | Thales McReynolds 2972 | Josh McRoberts 2973 | Eric McWilliams 2974 | George Mearns 2975 | Stanislav Medvedenko 2976 | Darnell Mee 2977 | Jodie Meeks 2978 | Cliff Meely 2979 | Scott Meents 2980 | Dick Mehen 2981 | Monk Meineke 2982 | Carl Meinhold 2983 | Salah Mejri 2984 | Gal Mekel 2985 | Bill Melchionni 2986 | Gary Melchionni 2987 | Nicolo Melli 2988 | Fab Melo 2989 | De'Anthony Melton 2990 | Ed Melvin 2991 | Dean Meminger 2992 | Chuck Mencel 2993 | John Mengelt 2994 | Ken Menke 2995 | Pops Mensah-Bonsu 2996 | Dewitt Menyard 2997 | Ron Mercer 2998 | Joe Meriweather 2999 | Porter Meriwether 3000 | Tom Meschery 3001 | Chimezie Metu 3002 | Bill Meyer 3003 | Loren Meyer 3004 | Dave Meyers 3005 | Stan Miasek 3006 | Larry Micheaux 3007 | Jordan Mickey 3008 | Khris Middleton 3009 | Red Mihalik 3010 | Chris Mihm 3011 | Eric Mika 3012 | Ed Mikan 3013 | George Mikan 3014 | Larry Mikan 3015 | Vern Mikkelsen 3016 | Al Miksis 3017 | Aaron Miles 3018 | C.J. Miles 3019 | Darius Miles 3020 | Eddie Miles 3021 | Marko Milic 3022 | Darko Milicic 3023 | Nat Militzok 3024 | Andre Miller 3025 | Anthony Miller 3026 | Bill Miller 3027 | Bob Miller 3028 | Brad Miller 3029 | Darius Miller 3030 | Dick Miller 3031 | Eddie Miller 3032 | Harry Miller 3033 | Jay Miller 3034 | Larry Miller 3035 | Malcolm Miller 3036 | Mike Miller 3037 | Oliver Miller 3038 | Quincy Miller 3039 | Reggie Miller 3040 | Walt Miller 3041 | Chris Mills 3042 | John Mills 3043 | Patty Mills 3044 | Terry Mills 3045 | Elijah Millsap 3046 | Paul Millsap 3047 | Shake Milton 3048 | Harold Miner 3049 | Yao Ming 3050 | Dirk Minniefield 3051 | Dave Minor 3052 | Greg Minor 3053 | Mark Minor 3054 | Nikola Mirotic 3055 | Wat Misaka 3056 | Jason Miskiri 3057 | Donovan Mitchell 3058 | Leland Mitchell 3059 | Mike Mitchell 3060 | Murray Mitchell 3061 | Sam Mitchell 3062 | Todd Mitchell 3063 | Tony Mitchell 3064 | Tony Mitchell 3065 | Naz Mitrou-Long 3066 | Steve Mix 3067 | Bill Mlkvy 3068 | Cuttino Mobley 3069 | Eric Mobley 3070 | Evan Mobley 3071 | Doug Moe 3072 | Larry Moffett 3073 | Leo Mogus 3074 | Nazr Mohammed 3075 | Jerome Moiso 3076 | Paul Mokeski 3077 | Adam Mokoka 3078 | Jack Molinas 3079 | Wayne Molis 3080 | Sidney Moncrief 3081 | Eric Money 3082 | Sergei Monia 3083 | Malik Monk 3084 | Earl Monroe 3085 | Greg Monroe 3086 | Rodney Monroe 3087 | Luis Montero 3088 | Howie Montgomery 3089 | Eric Montross 3090 | Jamario Moon 3091 | Jim Mooney 3092 | Matt Mooney 3093 | Andre Moore 3094 | Ben Moore 3095 | E'Twaun Moore 3096 | Gene Moore 3097 | Jackie Moore 3098 | Johnny Moore 3099 | Larry Moore 3100 | Lowes Moore 3101 | Mikki Moore 3102 | Otto Moore 3103 | Richard Moore 3104 | Ron Moore 3105 | Tracy Moore 3106 | Ja Morant 3107 | Eric Moreland 3108 | Jackie Moreland 3109 | Guy Morgan 3110 | Juwan Morgan 3111 | Rex Morgan 3112 | Elmore Morgenthaler 3113 | Darren Morningstar 3114 | Chris Morris 3115 | Darius Morris 3116 | Isaiah Morris 3117 | Jaylen Morris 3118 | Marcus Morris 3119 | Markieff Morris 3120 | Max Morris 3121 | Monte Morris 3122 | Randolph Morris 3123 | Terence Morris 3124 | Adam Morrison 3125 | John Morrison 3126 | Mike Morrison 3127 | Red Morrison 3128 | Anthony Morrow 3129 | Dwayne Morton 3130 | John Morton 3131 | Richard Morton 3132 | Glenn Mosley 3133 | Perry Moss 3134 | Lawrence Moten 3135 | Donatas Motiejunas 3136 | Johnathan Motley 3137 | Hanno Mottola 3138 | Arnett Moultrie 3139 | Rick Mount 3140 | Alonzo Mourning 3141 | Timofey Mozgov 3142 | Chuck Mrazovich 3143 | Emmanuel Mudiay 3144 | Erwin Mueller 3145 | Shabazz Muhammad 3146 | Mychal Mulder 3147 | Joe Mullaney 3148 | Bob Mullens 3149 | Byron Mullens 3150 | Chris Mullin 3151 | Jeff Mullins 3152 | Todd Mundt 3153 | Xavier Munford 3154 | Chris Munk 3155 | George Munroe 3156 | Eric Murdock 3157 | Gheorghe Muresan 3158 | Allen Murphy 3159 | Calvin Murphy 3160 | Dick Murphy 3161 | Erik Murphy 3162 | Jay Murphy 3163 | John Murphy 3164 | Kevin Murphy 3165 | Ronnie Murphy 3166 | Tod Murphy 3167 | Troy Murphy 3168 | Dejounte Murray 3169 | Jamal Murray 3170 | Ken Murray 3171 | Lamond Murray 3172 | Ronald Murray 3173 | Tracy Murray 3174 | Willie Murrell 3175 | Dorie Murrey 3176 | Toure' Murry 3177 | Dzanan Musa 3178 | Mike Muscala 3179 | Angelo Musi 3180 | Jerrod Mustaf 3181 | Dikembe Mutombo 3182 | Martin Muursepp 3183 | Pete Myers 3184 | Sviatoslav Mykhailiuk 3185 | Hamady N'Diaye 3186 | Makhtar N'Diaye 3187 | Mamadou N'Diaye 3188 | Boniface N'Dong 3189 | Bob Naber 3190 | Boris Nachamkin 3191 | Bostjan Nachbar 3192 | Abdel Nader 3193 | Jerry Nagel 3194 | Fritz Nagy 3195 | Lee Nailon 3196 | Eduardo Najera 3197 | Larry Nance 3198 | Larry Nance 3199 | Shabazz Napier 3200 | Paul Napolitano 3201 | Bob Nash 3202 | Cotton Nash 3203 | Steve Nash 3204 | Swen Nater 3205 | Howard Nathan 3206 | Calvin Natt 3207 | Kenny Natt 3208 | Willie Naulls 3209 | Juan Carlos Navarro 3210 | Maurice Ndour 3211 | Craig Neal 3212 | Gary Neal 3213 | Jim Neal 3214 | Lloyd Neal 3215 | Ed Nealy 3216 | Nemanja Nedovic 3217 | Al Negratti 3218 | Barry Nelson 3219 | DeMarcus Nelson 3220 | Don Nelson 3221 | Jameer Nelson 3222 | Louie Nelson 3223 | Ron Nelson 3224 | Ruben Nembhard 3225 | Dick Nemelka 3226 | Tyrone Nesby 3227 | Martin Nessley 3228 | Rasho Nesterovic 3229 | Raul Neto 3230 | Bob Netolicky 3231 | Johnny Neumann 3232 | Paul Neumann 3233 | Chuck Nevitt 3234 | Melvin Newbern 3235 | Ivano Newbill 3236 | Ira Newble 3237 | Mike Newlin 3238 | Johnny Newman 3239 | Malik Newman 3240 | Dave Newmark 3241 | Bill Newton 3242 | Georges Niang 3243 | Demetris Nichols 3244 | Jack Nichols 3245 | Andrew Nicholson 3246 | Gaylon Nickerson 3247 | Carl Nicks 3248 | Rich Niemann 3249 | Richie Niemiera 3250 | Mike Niles 3251 | Kurt Nimphius 3252 | Dyron Nix 3253 | Norm Nixon 3254 | Joakim Noah 3255 | Chuck Noble 3256 | Andres Nocioni 3257 | David Noel 3258 | Nerlens Noel 3259 | Paul Noel 3260 | Lucas Nogueira 3261 | Jim Nolan 3262 | Paul Nolen 3263 | Jeff Nordgaard 3264 | Bevo Nordmann 3265 | Johnny Norlander 3266 | Connie Norman 3267 | Ken Norman 3268 | Audie Norris 3269 | Moochie Norris 3270 | Sylvester Norris 3271 | Zach Norvell 3272 | Willie Norwood 3273 | George Nostrand 3274 | Stan Noszka 3275 | Mike Novak 3276 | Steve Novak 3277 | Jaylen Nowell 3278 | Mel Nowell 3279 | Dirk Nowitzki 3280 | Frank Ntilikina 3281 | Kendrick Nunn 3282 | James Nunnally 3283 | Jusuf Nurkic 3284 | Dennis Nutt 3285 | David Nwaba 3286 | Julius Nwosu 3287 | Charles O'Bannon 3288 | Ed O'Bannon 3289 | John O'Boyle 3290 | Bob O'Brien 3291 | J.J. O'Brien 3292 | Jim O'Brien 3293 | Jimmy O'Brien 3294 | Ralph O'Brien 3295 | Johnny O'Bryant 3296 | Patrick O'Bryant 3297 | Dermie O'Connell 3298 | Andy O'Donnell 3299 | Buddy O'Grady 3300 | Fran O'Hanlon 3301 | Dick O'Keefe 3302 | Tommy O'Keefe 3303 | Mike O'Koren 3304 | Grady O'Malley 3305 | Jermaine O'Neal 3306 | Shaquille O'Neal 3307 | Royce O'Neale 3308 | Mike O'Neill 3309 | Kyle O'Quinn 3310 | Kevin O'Shea 3311 | Garland O'Shields 3312 | Dan O'Sullivan 3313 | Charles Oakley 3314 | Fabricio Oberto 3315 | Daniel Ochefu 3316 | Greg Oden 3317 | Lamar Odom 3318 | Bud Ogden 3319 | Ralph Ogden 3320 | Alan Ogg 3321 | Don Ohl 3322 | Tim Ohlbrecht 3323 | Semi Ojeleye 3324 | Emeka Okafor 3325 | Jahlil Okafor 3326 | Elie Okobo 3327 | Josh Okogie 3328 | KZ Okpala 3329 | Mehmet Okur 3330 | Victor Oladipo 3331 | Hakeem Olajuwon 3332 | Mark Olberding 3333 | Jawann Oldham 3334 | John Oldham 3335 | Frank Oleynick 3336 | John Olive 3337 | Brian Oliver 3338 | Dean Oliver 3339 | Jimmy Oliver 3340 | Kevin Ollie 3341 | Gene Ollrich 3342 | Michael Olowokandi 3343 | Bud Olsen 3344 | Kelly Olynyk 3345 | Miye Oni 3346 | Arinze Onuaku 3347 | Chinanu Onuaku 3348 | Barry Orms 3349 | Johnny Orr 3350 | Louis Orr 3351 | Jose Ortiz 3352 | Daniel Orton 3353 | Chuck Osborne 3354 | Cedi Osman 3355 | Wally Osterkorn 3356 | Greg Ostertag 3357 | Matt Othick 3358 | Don Otten 3359 | Mac Otten 3360 | Kelly Oubre 3361 | Bo Outlaw 3362 | Travis Outlaw 3363 | Claude Overton 3364 | Doug Overton 3365 | Andre Owens 3366 | Billy Owens 3367 | Chris Owens 3368 | Eddie Owens 3369 | Jim Owens 3370 | Keith Owens 3371 | Larry Owens 3372 | Red Owens 3373 | Tariq Owens 3374 | Tom Owens 3375 | Ray Owes 3376 | Olumide Oyedeji 3377 | Joe Pace 3378 | Zaza Pachulia 3379 | Robert Pack 3380 | Wayne Pack 3381 | Gerald Paddio 3382 | Scott Padgett 3383 | Dana Pagett 3384 | Marcus Paige 3385 | Fred Paine 3386 | Milt Palacio 3387 | Togo Palazzi 3388 | Bud Palmer 3389 | Errol Palmer 3390 | Jim Palmer 3391 | Walter Palmer 3392 | Andy Panko 3393 | Georgios Papagiannis 3394 | Kostas Papanikolaou 3395 | Jannero Pargo 3396 | Jeremy Pargo 3397 | Easy Parham 3398 | Robert Parish 3399 | Med Park 3400 | Anthony Parker 3401 | Jabari Parker 3402 | Smush Parker 3403 | Sonny Parker 3404 | Tony Parker 3405 | Barry Parkhill 3406 | Jack Parkinson 3407 | Charles Parks 3408 | Cherokee Parks 3409 | Richard Parks 3410 | Jack Parr 3411 | Doyle Parrack 3412 | Charlie Parsley 3413 | Chandler Parsons 3414 | Eric Paschall 3415 | Anzejs Pasecniks 3416 | Zarko Paspalj 3417 | Marty Passaglia 3418 | George Pastushok 3419 | Myles Patrick 3420 | Stan Patrick 3421 | Andrae Patterson 3422 | George Patterson 3423 | Lamar Patterson 3424 | Patrick Patterson 3425 | Ruben Patterson 3426 | Steve Patterson 3427 | Tom Patterson 3428 | Worthy Patterson 3429 | Justin Patton 3430 | Brandon Paul 3431 | Chris Paul 3432 | Charlie Paulk 3433 | Jerry Paulson 3434 | Billy Paultz 3435 | Sasha Pavlovic 3436 | Jim Paxson 3437 | Jim Paxson 3438 | John Paxson 3439 | Johnny Payak 3440 | Adreian Payne 3441 | Cameron Payne 3442 | Kenny Payne 3443 | Tom Payne 3444 | Elfrid Payton 3445 | Gary Payton 3446 | Gary Payton 3447 | Mel Payton 3448 | George Pearcy 3449 | Henry Pearcy 3450 | Oleksiy Pecherov 3451 | Wiley Peck 3452 | Rich Peek 3453 | Anthony Peeler 3454 | George Peeples 3455 | Nikola Pekovic 3456 | Jake Pelkington 3457 | Norvel Pelle 3458 | Sam Pellom 3459 | Mike Penberthy 3460 | Jerry Pender 3461 | Desmond Penigar 3462 | Kirk Penney 3463 | Mike Peplowski 3464 | Will Perdue 3465 | Kendrick Perkins 3466 | Sam Perkins 3467 | Warren Perkins 3468 | Kosta Perovic 3469 | London Perrantes 3470 | Aulcie Perry 3471 | Curtis Perry 3472 | Elliot Perry 3473 | Ron Perry 3474 | Tim Perry 3475 | Chuck Person 3476 | Wesley Person 3477 | Alec Peters 3478 | Jim Petersen 3479 | Loy Petersen 3480 | Bob Peterson 3481 | Ed Peterson 3482 | Mel Peterson 3483 | Morris Peterson 3484 | Geoff Petrie 3485 | Johan Petro 3486 | Drazen Petrovic 3487 | Richard Petruska 3488 | Bob Pettit 3489 | Jerry Pettway 3490 | Roger Phegley 3491 | Jack Phelan 3492 | James Phelan 3493 | Derrick Phelps 3494 | Michael Phelps 3495 | Andy Phillip 3496 | Eddie Phillips 3497 | Gary Phillips 3498 | Gene Phillips 3499 | Bobby Phills 3500 | Eric Piatkowski 3501 | Walter Piatkowski 3502 | Paul Pierce 3503 | Ricky Pierce 3504 | Stan Pietkiewicz 3505 | Mickael Pietrus 3506 | John Pilch 3507 | Ed Pinckney 3508 | Kevinn Pinkney 3509 | John Pinone 3510 | Theo Pinson 3511 | Dave Piontek 3512 | Tom Piotrowski 3513 | Scottie Pippen 3514 | Charles Pittman 3515 | Dexter Pittman 3516 | Zoran Planinic 3517 | Tibor Pleiss 3518 | Marshall Plumlee 3519 | Mason Plumlee 3520 | Miles Plumlee 3521 | Gary Plummer 3522 | Pavel Podkolzin 3523 | Jakob Poeltl 3524 | Vincent Poirier 3525 | Dwayne Polee 3526 | Jim Pollard 3527 | Scot Pollard 3528 | Ralph Polson 3529 | Olden Polynice 3530 | Cliff Pondexter 3531 | Quincy Pondexter 3532 | Shamorie Ponds 3533 | Jordan Poole 3534 | David Pope 3535 | Mark Pope 3536 | Dave Popson 3537 | Ben Poquette 3538 | Chris Porter 3539 | Howard Porter 3540 | Kevin Porter 3541 | Kevin Porter 3542 | Michael Porter 3543 | Otto Porter 3544 | Terry Porter 3545 | Willie Porter 3546 | Bobby Portis 3547 | Bob Portman 3548 | Kristaps Porzingis 3549 | James Posey 3550 | Lavor Postell 3551 | John Postley 3552 | Vitaly Potapenko 3553 | Leon Powe 3554 | Cincinnatus Powell 3555 | Dwight Powell 3556 | Josh Powell 3557 | Kasib Powell 3558 | Norman Powell 3559 | Roger Powell 3560 | Alex Poythress 3561 | Marlbert Pradd 3562 | Mike Pratt 3563 | Paul Pressey 3564 | Phil Pressey 3565 | Dominic Pressley 3566 | Harold Pressley 3567 | Stephen Previs 3568 | A.J. Price 3569 | Brent Price 3570 | Jim Price 3571 | Mark Price 3572 | Mike Price 3573 | Ronnie Price 3574 | Tony Price 3575 | Bob Priddy 3576 | Pablo Prigioni 3577 | Taurean Prince 3578 | Tayshaun Prince 3579 | John Pritchard 3580 | Kevin Pritchard 3581 | Laron Profit 3582 | Gabe Pruitt 3583 | Joel Przybilla 3584 | Les Pugh 3585 | Roy Pugh 3586 | Anthony Pullard 3587 | Jacob Pullen 3588 | Rodney Purvis 3589 | Don Putman 3590 | Zhou Qi 3591 | Tim Quarterman 3592 | Bob Quick 3593 | Chris Quinn 3594 | Brian Quinnett 3595 | Ivan Rabb 3596 | Luther Rackley 3597 | Howie Rader 3598 | Mark Radford 3599 | Wayne Radford 3600 | Dino Radja 3601 | Vladimir Radmanovic 3602 | Aleksandar Radojevic 3603 | Frank Radovich 3604 | Moe Radovich 3605 | Miroslav Raduljica 3606 | Ray Radziszewski 3607 | Ray Ragelis 3608 | Sherwin Raiken 3609 | Ed Rains 3610 | Igor Rakocevic 3611 | Kurt Rambis 3612 | Peter John Ramos 3613 | Cal Ramsey 3614 | Frank Ramsey 3615 | Ray Ramsey 3616 | Mark Randall 3617 | Chasson Randle 3618 | Julius Randle 3619 | Anthony Randolph 3620 | Shavlik Randolph 3621 | Zach Randolph 3622 | Wally Rank 3623 | Kelvin Ransey 3624 | Sam Ranzino 3625 | Bobby Rascoe 3626 | Blair Rasmussen 3627 | Xavier Rathan-Mayes 3628 | George Ratkovicz 3629 | Ed Ratleff 3630 | Mike Ratliff 3631 | Theo Ratliff 3632 | Andy Rautins 3633 | Leo Rautins 3634 | Allan Ray 3635 | Clifford Ray 3636 | Don Ray 3637 | James Ray 3638 | Jim Ray 3639 | Jimmy Rayl 3640 | Craig Raymond 3641 | Connie Rea 3642 | Joe Reaves 3643 | Josh Reaves 3644 | Zeljko Rebraca 3645 | Eldridge Recasner 3646 | Michael Redd 3647 | Cam Reddish 3648 | Frank Reddout 3649 | J.J. Redick 3650 | Marlon Redmond 3651 | Davon Reed 3652 | Hub Reed 3653 | Justin Reed 3654 | Ron Reed 3655 | Willie Reed 3656 | Willis Reed 3657 | Bryant Reeves 3658 | Khalid Reeves 3659 | Richie Regan 3660 | Don Rehfeldt 3661 | Billy Reid 3662 | Don Reid 3663 | J.R. Reid 3664 | Jim Reid 3665 | Naz Reid 3666 | Robert Reid 3667 | Ryan Reid 3668 | Jared Reiner 3669 | Chick Reiser 3670 | Richard Rellford 3671 | Terrence Rencher 3672 | John Rennicke 3673 | Bob Rensberger 3674 | Efthimi Rentzias 3675 | Shawn Respert 3676 | Kevin Restani 3677 | Cameron Reynolds 3678 | George Reynolds 3679 | Jerry Reynolds 3680 | Kendall Rhine 3681 | Gene Rhodes 3682 | Rodrick Rhodes 3683 | Glen Rice 3684 | Glen Rice 3685 | Chris Richard 3686 | Clint Richardson 3687 | Jason Richardson 3688 | Jeremy Richardson 3689 | Josh Richardson 3690 | Malachi Richardson 3691 | Micheal Ray Richardson 3692 | Norm Richardson 3693 | Pooh Richardson 3694 | Quentin Richardson 3695 | Mitch Richmond 3696 | John Richter 3697 | Dick Ricketts 3698 | Isaiah Rider 3699 | Jackie Ridgle 3700 | Luke Ridnour 3701 | Mel Riebe 3702 | Bob Riedy 3703 | Jim Riffey 3704 | Antoine Rigaudeau 3705 | Tom Riker 3706 | Bob Riley 3707 | Eric Riley 3708 | Pat Riley 3709 | Ron Riley 3710 | Rich Rinaldi 3711 | Mike Riordan 3712 | Arnie Risen 3713 | Tex Ritter 3714 | Ramon Rivas 3715 | Austin Rivers 3716 | David Rivers 3717 | Doc Rivers 3718 | Lee Robbins 3719 | Red Robbins 3720 | Andre Roberson 3721 | Anthony Roberson 3722 | Rick Roberson 3723 | Terrance Roberson 3724 | Anthony Roberts 3725 | Bill Roberts 3726 | Brian Roberts 3727 | Fred Roberts 3728 | Joe Roberts 3729 | Lawrence Roberts 3730 | Marv Roberts 3731 | Stanley Roberts 3732 | Alvin Robertson 3733 | Oscar Robertson 3734 | Ryan Robertson 3735 | Tony Robertson 3736 | Rick Robey 3737 | Bernard Robinson 3738 | Chris Robinson 3739 | Cliff Robinson 3740 | Clifford Robinson 3741 | David Robinson 3742 | Devin Robinson 3743 | Duncan Robinson 3744 | Eddie Robinson 3745 | Flynn Robinson 3746 | Glenn Robinson 3747 | Glenn Robinson 3748 | Jackie Robinson 3749 | Jamal Robinson 3750 | James Robinson 3751 | Jerome Robinson 3752 | Justin Robinson 3753 | Larry Robinson 3754 | Mitchell Robinson 3755 | Nate Robinson 3756 | Oliver Robinson 3757 | Ronnie Robinson 3758 | Rumeal Robinson 3759 | Samuel Robinson 3760 | Thomas Robinson 3761 | Truck Robinson 3762 | Wayne Robinson 3763 | Wilbert Robinson 3764 | Bill Robinzine 3765 | Dave Robisch 3766 | Isaiah Roby 3767 | Red Rocha 3768 | John Roche 3769 | Gene Rock 3770 | Jack Rocker 3771 | Guy Rodgers 3772 | Dennis Rodman 3773 | Sergio Rodriguez 3774 | Lou Roe 3775 | Carlos Rogers 3776 | Harry Rogers 3777 | Johnny Rogers 3778 | Marshall Rogers 3779 | Rodney Rogers 3780 | Roy Rogers 3781 | Willie Rogers 3782 | Al Roges 3783 | Ken Rohloff 3784 | Kenny Rollins 3785 | Phil Rollins 3786 | Tree Rollins 3787 | Lorenzo Romar 3788 | Rajon Rondo 3789 | Jerry Rook 3790 | Sean Rooks 3791 | Derrick Rose 3792 | Jalen Rose 3793 | Malik Rose 3794 | Rob Rose 3795 | Petey Rosenberg 3796 | Lennie Rosenbluth 3797 | Hank Rosenstein 3798 | Dick Rosenthal 3799 | Quinton Ross 3800 | Terrence Ross 3801 | Doug Roth 3802 | Scott Roth 3803 | Irv Rothenberg 3804 | Mickey Rottner 3805 | Dan Roundfield 3806 | Giff Roux 3807 | Ron Rowan 3808 | Curtis Rowe 3809 | Jim Rowinski 3810 | Derrick Rowland 3811 | Brian Rowsom 3812 | Brandon Roy 3813 | Donald Royal 3814 | Reggie Royals 3815 | Bob Royer 3816 | Clifford Rozier 3817 | Terry Rozier 3818 | Ricky Rubio 3819 | Guy Rucker 3820 | Delaney Rudd 3821 | John Rudd 3822 | Damjan Rudez 3823 | John Rudometkin 3824 | Michael Ruffin 3825 | Trevor Ruffin 3826 | Paul Ruffner 3827 | Joe Ruklick 3828 | Jeff Ruland 3829 | Bob Rule 3830 | Jerry Rullo 3831 | Stefano Rusconi 3832 | Brandon Rush 3833 | Kareem Rush 3834 | Bill Russell 3835 | Bryon Russell 3836 | Campy Russell 3837 | Cazzie Russell 3838 | D'Angelo Russell 3839 | Frank Russell 3840 | Pierre Russell 3841 | Rubin Russell 3842 | Walker Russell 3843 | Walker Russell 3844 | Arvydas Sabonis 3845 | Domantas Sabonis 3846 | Robert Sacre 3847 | Ed Sadowski 3848 | Kenny Sailors 3849 | John Salley 3850 | John Salmons 3851 | Al Salvadori 3852 | Kevin Salvadori 3853 | Soumaila Samake 3854 | Luka Samanic 3855 | Cheikh Samb 3856 | Brandon Sampson 3857 | JaKarr Sampson 3858 | Jamal Sampson 3859 | Ralph Sampson 3860 | Samardo Samuels 3861 | Pepe Sanchez 3862 | Al Sanders 3863 | Frankie Sanders 3864 | Jeff Sanders 3865 | Larry Sanders 3866 | Melvin Sanders 3867 | Mike Sanders 3868 | Tom Sanders 3869 | Ron Sanford 3870 | Daniel Santiago 3871 | Bob Santini 3872 | Wayne Sappleton 3873 | Dario Saric 3874 | Jason Sasser 3875 | Jeryl Sasser 3876 | Tomas Satoransky 3877 | Kenny Satterfield 3878 | Pep Saul 3879 | Woody Sauldsberry 3880 | Glynn Saulters 3881 | Fred Saunders 3882 | Don Savage 3883 | Predrag Savovic 3884 | Alan Sawyer 3885 | Brian Scalabrine 3886 | Alex Scales 3887 | DeWayne Scales 3888 | Frank Schade 3889 | Ben Schadler 3890 | Herm Schaefer 3891 | Billy Schaeffer 3892 | Bob Schafer 3893 | Ben Scharnus 3894 | Marv Schatzman 3895 | Fred Schaus 3896 | Danny Schayes 3897 | Dolph Schayes 3898 | Ossie Schectman 3899 | Steve Scheffler 3900 | Tom Scheffler 3901 | Dave Schellhase 3902 | Luke Schenscher 3903 | Herb Scherer 3904 | Dwayne Schintzius 3905 | Dale Schlueter 3906 | Otto Schnellbacher 3907 | Dick Schnittker 3908 | Russ Schoene 3909 | Admiral Schofield 3910 | Dave Scholz 3911 | Milt Schoon 3912 | Detlef Schrempf 3913 | Dennis Schroder 3914 | Howie Schultz 3915 | Dick Schulz 3916 | Roger Schurig 3917 | John Schweitz 3918 | Luis Scola 3919 | Fred Scolari 3920 | Alvin Scott 3921 | Brent Scott 3922 | Byron Scott 3923 | Charlie Scott 3924 | Dennis Scott 3925 | James Scott 3926 | Mike Scott 3927 | Ray Scott 3928 | Shawnelle Scott 3929 | Willie Scott 3930 | Paul Scranton 3931 | Carey Scurry 3932 | Bruce Seals 3933 | Shea Seals 3934 | Malik Sealy 3935 | Ed Searcy 3936 | Kenny Sears 3937 | Wayne See 3938 | Thabo Sefolosha 3939 | Rony Seikaly 3940 | Glen Selbo 3941 | Josh Selby 3942 | Wayne Selden 3943 | Brad Sellers 3944 | Phil Sellers 3945 | Rollie Seltz 3946 | Lester Selvage 3947 | Frank Selvy 3948 | Jim Seminoff 3949 | Mouhamed Sene 3950 | George Senesky 3951 | Kevin Seraphin 3952 | Ansu Sesay 3953 | Ramon Sessions 3954 | Ha Seung-Jin 3955 | Tom Sewell 3956 | Collin Sexton 3957 | Paul Seymour 3958 | Nick Shaback 3959 | Lynn Shackelford 3960 | Charles Shackleford 3961 | Carl Shaeffer 3962 | Lee Shaffer 3963 | Mustafa Shakur 3964 | Landry Shamet 3965 | God Shammgod 3966 | Earl Shannon 3967 | Howie Shannon 3968 | Chuck Share 3969 | Bill Sharman 3970 | Walter Sharpe 3971 | John Shasky 3972 | Ron Shavlik 3973 | Brian Shaw 3974 | Casey Shaw 3975 | Marial Shayok 3976 | Bob Shea 3977 | Fred Sheffield 3978 | Craig Shelton 3979 | Lonnie Shelton 3980 | Tornike Shengelia 3981 | Billy Shepherd 3982 | Jeff Sheppard 3983 | Steve Sheppard 3984 | Ed Sherod 3985 | Charley Shipp 3986 | Paul Shirley 3987 | Gene Short 3988 | Purvis Short 3989 | Dexter Shouse 3990 | Dick Shrider 3991 | Gene Shue 3992 | John Shumate 3993 | Iman Shumpert 3994 | Alexey Shved 3995 | Pascal Siakam 3996 | Jordan Sibert 3997 | Sam Sibert 3998 | Mark Sibley 3999 | Jerry Sichting 4000 | Donald Sidle 4001 | Larry Siegfried 4002 | Ralph Siewert 4003 | Jack Sikma 4004 | James Silas 4005 | Paul Silas 4006 | Xavier Silas 4007 | Garret Siler 4008 | Mike Silliman 4009 | Chris Silva 4010 | Wayne Simien 4011 | Ben Simmons 4012 | Bobby Simmons 4013 | Cedric Simmons 4014 | Connie Simmons 4015 | Grant Simmons 4016 | Johnny Simmons 4017 | Jonathon Simmons 4018 | Kobi Simmons 4019 | Lionel Simmons 4020 | Miles Simon 4021 | Walter Simon 4022 | Anfernee Simons 4023 | Dickey Simpkins 4024 | Ralph Simpson 4025 | Alvin Sims 4026 | Bob Sims 4027 | Courtney Sims 4028 | Doug Sims 4029 | Henry Sims 4030 | Scott Sims 4031 | Kyle Singler 4032 | Sean Singletary 4033 | Chris Singleton 4034 | James Singleton 4035 | McKinley Singleton 4036 | Zeke Sinicola 4037 | Charlie Sitton 4038 | Peyton Siva 4039 | Scott Skiles 4040 | Al Skinner 4041 | Brian Skinner 4042 | Tal Skinner 4043 | Whitey Skoog 4044 | Jeff Slade 4045 | Reggie Slater 4046 | Jim Slaughter 4047 | Jose Slaughter 4048 | Tamar Slay 4049 | Donald Sloan 4050 | Jerry Sloan 4051 | Uros Slokar 4052 | Tom Sluby 4053 | Alen Smailagic 4054 | Keith Smart 4055 | Marcus Smart 4056 | Belus Smawley 4057 | Jack Smiley 4058 | Adrian Smith 4059 | Al Smith 4060 | Bill Smith 4061 | Bingo Smith 4062 | Bobby Smith 4063 | Charles Smith 4064 | Charles Smith 4065 | Charles Smith 4066 | Chris Smith 4067 | Chris Smith 4068 | Clinton Smith 4069 | Craig Smith 4070 | Deb Smith 4071 | Dennis Smith 4072 | Derek Smith 4073 | Don Smith 4074 | Don Smith 4075 | Donta Smith 4076 | Doug Smith 4077 | Ed Smith 4078 | Elmore Smith 4079 | Garfield Smith 4080 | Greg Smith 4081 | Greg Smith 4082 | Ish Smith 4083 | J.R. Smith 4084 | Jabari Smith 4085 | Jason Smith 4086 | Jerry Smith 4087 | Jim Smith 4088 | Joe Smith 4089 | John Smith 4090 | Josh Smith 4091 | Keith Smith 4092 | Ken Smith 4093 | Kenny Smith 4094 | LaBradford Smith 4095 | Larry Smith 4096 | Leon Smith 4097 | Michael Smith 4098 | Michael Smith 4099 | Mike Smith 4100 | Nolan Smith 4101 | Otis Smith 4102 | Pete Smith 4103 | Phil Smith 4104 | Randy Smith 4105 | Reggie Smith 4106 | Robert Smith 4107 | Russ Smith 4108 | Sam Smith 4109 | Sam Smith 4110 | Steve Smith 4111 | Steven Smith 4112 | Stevin Smith 4113 | Theron Smith 4114 | Tony Smith 4115 | William Smith 4116 | Willie Smith 4117 | Zhaire Smith 4118 | Rik Smits 4119 | Mike Smrek 4120 | Joe Smyth 4121 | Tony Snell 4122 | Eric Snow 4123 | Dick Snyder 4124 | Kirk Snyder 4125 | Chips Sobek 4126 | Ricky Sobers 4127 | Ron Sobie 4128 | Mike Sojourner 4129 | Willie Sojourner 4130 | Will Solomon 4131 | Willie Somerset 4132 | Darius Songaila 4133 | Dave Sorenson 4134 | James Southerland 4135 | Gino Sovran 4136 | Pape Sow 4137 | Ken Spain 4138 | Ray Spalding 4139 | Jim Spanarkel 4140 | Vassilis Spanoulis 4141 | Daniel Sparks 4142 | Guy Sparrow 4143 | Rory Sparrow 4144 | Odie Spears 4145 | Art Spector 4146 | Marreese Speights 4147 | Omari Spellman 4148 | Andre Spencer 4149 | Elmore Spencer 4150 | Felton Spencer 4151 | Lou Spicer 4152 | Craig Spitzer 4153 | Tiago Splitter 4154 | Art Spoelstra 4155 | Bruce Spraggins 4156 | Latrell Sprewell 4157 | Larry Spriggs 4158 | Jim Springer 4159 | Jim Spruill 4160 | Ryan Stack 4161 | Jerry Stackhouse 4162 | Kevin Stacom 4163 | Erv Staggs 4164 | Bud Stallworth 4165 | Dave Stallworth 4166 | Ed Stanczak 4167 | Terence Stansbury 4168 | John Starks 4169 | Keith Starr 4170 | Nik Stauskas 4171 | Larry Staverman 4172 | Larry Steele 4173 | Matt Steigenga 4174 | Vladimir Stepania 4175 | D.J. Stephens 4176 | Everette Stephens 4177 | Jack Stephens 4178 | Joe Stephens 4179 | Lance Stephenson 4180 | Alex Stepheson 4181 | Brook Steppe 4182 | Barry Stevens 4183 | Wayne Stevens 4184 | DeShawn Stevenson 4185 | Dennis Stewart 4186 | Kebu Stewart 4187 | Larry Stewart 4188 | Michael Stewart 4189 | Norm Stewart 4190 | Greg Stiemsma 4191 | Steve Stipanovich 4192 | Bryant Stith 4193 | Sam Stith 4194 | Tom Stith 4195 | Alex Stivrins 4196 | David Stockton 4197 | John Stockton 4198 | Peja Stojakovic 4199 | Ed Stokes 4200 | Greg Stokes 4201 | Jarnell Stokes 4202 | Maurice Stokes 4203 | Art Stolkey 4204 | Randy Stoll 4205 | Diamond Stone 4206 | George Stone 4207 | Julyan Stone 4208 | Awvee Storey 4209 | Damon Stoudamire 4210 | Salim Stoudamire 4211 | Amar'e Stoudemire 4212 | Paul Stovall 4213 | D.J. Strawberry 4214 | Joe Strawder 4215 | Bill Stricker 4216 | Erick Strickland 4217 | Mark Strickland 4218 | Rod Strickland 4219 | Roger Strickland 4220 | John Stroeder 4221 | Derek Strong 4222 | Lamont Strothers 4223 | John Stroud 4224 | Red Stroud 4225 | Max Strus 4226 | Rodney Stuckey 4227 | Gene Stump 4228 | Stan Stutz 4229 | Gary Suiter 4230 | Jared Sullinger 4231 | DaJuan Summers 4232 | Edmond Sumner 4233 | Barry Sumpter 4234 | Don Sunderlage 4235 | Bruno Sundov 4236 | Jon Sundvold 4237 | Bob Sura 4238 | Dick Surhoff 4239 | George Sutor 4240 | Dane Suttle 4241 | Greg Sutton 4242 | Keith Swagerty 4243 | Bennie Swain 4244 | Caleb Swanigan 4245 | Norm Swanson 4246 | Dan Swartz 4247 | Mike Sweetney 4248 | Robert Swift 4249 | Skeeter Swift 4250 | Stromile Swift 4251 | Aaron Swinson 4252 | Pape Sy 4253 | Buck Sydnor 4254 | Larry Sykes 4255 | Brett Szabo 4256 | Wally Szczerbiak 4257 | Walt Szczerbiak 4258 | Zan Tabak 4259 | Yuta Tabuse 4260 | Chris Taft 4261 | Sid Tanenbaum 4262 | Dragan Tarlac 4263 | Roy Tarpley 4264 | Levern Tart 4265 | Earl Tatum 4266 | Jayson Tatum 4267 | Edy Tavares 4268 | Anthony Taylor 4269 | Brian Taylor 4270 | Donell Taylor 4271 | Fatty Taylor 4272 | Fred Taylor 4273 | Isaiah Taylor 4274 | Jay Taylor 4275 | Jeff Taylor 4276 | Jeffery Taylor 4277 | Jermaine Taylor 4278 | Johnny Taylor 4279 | Leonard Taylor 4280 | Maurice Taylor 4281 | Mike Taylor 4282 | Oliver Taylor 4283 | Ronald Taylor 4284 | Tyshawn Taylor 4285 | Vince Taylor 4286 | Terry Teagle 4287 | Jeff Teague 4288 | Marquis Teague 4289 | Mirza Teletovic 4290 | Sebastian Telfair 4291 | Collis Temple 4292 | Garrett Temple 4293 | Milos Teodosic 4294 | Ira Terrell 4295 | Jared Terrell 4296 | Carlos Terry 4297 | Chuck Terry 4298 | Claude Terry 4299 | Emanuel Terry 4300 | Jason Terry 4301 | Hasheem Thabeet 4302 | Tom Thacker 4303 | Floyd Theard 4304 | Daniel Theis 4305 | Reggie Theus 4306 | Peter Thibeaux 4307 | Bill Thieben 4308 | Justus Thigpen 4309 | David Thirdkill 4310 | Adonis Thomas 4311 | Billy Thomas 4312 | Carl Thomas 4313 | Charles Thomas 4314 | Etan Thomas 4315 | Irving Thomas 4316 | Isaiah Thomas 4317 | Isiah Thomas 4318 | Jamel Thomas 4319 | James Thomas 4320 | Jim Thomas 4321 | Joe Thomas 4322 | John Thomas 4323 | Kenny Thomas 4324 | Khyri Thomas 4325 | Kurt Thomas 4326 | Lance Thomas 4327 | Malcolm Thomas 4328 | Matt Thomas 4329 | Ronald Thomas 4330 | Terry Thomas 4331 | Tim Thomas 4332 | Tyrus Thomas 4333 | Willis Thomas 4334 | Trey Thompkins 4335 | Bernard Thompson 4336 | Billy Thompson 4337 | Brooks Thompson 4338 | Corny Thompson 4339 | David Thompson 4340 | Dijon Thompson 4341 | George Thompson 4342 | Hollis Thompson 4343 | Jack Thompson 4344 | Jason Thompson 4345 | John Thompson 4346 | Kevin Thompson 4347 | Klay Thompson 4348 | LaSalle Thompson 4349 | Mychal Thompson 4350 | Mychel Thompson 4351 | Paul Thompson 4352 | Stephen Thompson 4353 | Tristan Thompson 4354 | Skip Thoren 4355 | Rod Thorn 4356 | Al Thornton 4357 | Bob Thornton 4358 | Dallas Thornton 4359 | Marcus Thornton 4360 | Sindarius Thornwell 4361 | Otis Thorpe 4362 | Sedale Threatt 4363 | Nate Thurmond 4364 | Mel Thurston 4365 | Matisse Thybulle 4366 | Hal Tidrick 4367 | Dan Tieman 4368 | Darren Tillis 4369 | Jack Tingle 4370 | George Tinsley 4371 | Jamaal Tinsley 4372 | Wayman Tisdale 4373 | Mike Tobey 4374 | Mike Todorovich 4375 | Ray Tolbert 4376 | Tom Tolbert 4377 | Anthony Tolliver 4378 | Dean Tolson 4379 | Rudy Tomjanovich 4380 | Andrew Toney 4381 | Sedric Toney 4382 | Andy Tonkovich 4383 | Andy Toolson 4384 | Jack Toomay 4385 | Bernard Toone 4386 | Irv Torgoff 4387 | Gene Tormohlen 4388 | Oscar Torres 4389 | Juan Toscano-Anderson 4390 | Bill Tosheff 4391 | Bob Tough 4392 | Axel Toupane 4393 | Monte Towe 4394 | Keith Tower 4395 | Blackie Towery 4396 | Linton Townes 4397 | Karl-Anthony Towns 4398 | Raymond Townsend 4399 | George Trapp 4400 | John Trapp 4401 | Robert Traylor 4402 | Gary Trent 4403 | Gary Trent 4404 | Jeff Trepagnier 4405 | John Tresvant 4406 | Allonzo Trier 4407 | Dick Triptow 4408 | Kelly Tripucka 4409 | Ansley Truitt 4410 | Cezary Trybanski 4411 | Jake Tsakalidis 4412 | John Tschogl 4413 | Lou Tsioropoulos 4414 | Nikoloz Tskitishvili 4415 | Al Tucker 4416 | Alando Tucker 4417 | Anthony Tucker 4418 | Jim Tucker 4419 | P.J. Tucker 4420 | Rayjon Tucker 4421 | Trent Tucker 4422 | Ronny Turiaf 4423 | Mirsad Turkcan 4424 | Hedo Turkoglu 4425 | Andre Turner 4426 | Bill Turner 4427 | Elston Turner 4428 | Evan Turner 4429 | Gary Turner 4430 | Henry Turner 4431 | Herschell Turner 4432 | Jack Turner 4433 | Jack Turner 4434 | Jeff Turner 4435 | John Turner 4436 | Myles Turner 4437 | Wayne Turner 4438 | Melvin Turpin 4439 | Dave Twardzik 4440 | Jack Twyman 4441 | B.J. Tyler 4442 | Jeremy Tyler 4443 | Terry Tyler 4444 | Charlie Tyra 4445 | Edwin Ubiles 4446 | Ekpe Udoh 4447 | Ime Udoka 4448 | Beno Udrih 4449 | Roko Ukic 4450 | Tyler Ulis 4451 | Wes Unseld 4452 | Hal Uplinger 4453 | Kelvin Upshaw 4454 | Jarrod Uthoff 4455 | Ben Uzoh 4456 | Stephen Vacendak 4457 | Jonas Valanciunas 4458 | Darnell Valentine 4459 | Denzel Valentine 4460 | Ronnie Valentine 4461 | John Vallely 4462 | Dick Van Arsdale 4463 | Tom Van Arsdale 4464 | Nick Van Exel 4465 | Keith Van Horn 4466 | Norm Van Lier 4467 | Dennis Van Zant 4468 | Fred VanVleet 4469 | Gene Vance 4470 | Logan Vander Velden 4471 | Jarred Vanderbilt 4472 | Ernie Vandeweghe 4473 | Kiki Vandeweghe 4474 | Nick Vanos 4475 | David Vanterpool 4476 | Ratko Varda 4477 | Anderson Varejao 4478 | Jarvis Varnado 4479 | Greivis Vasquez 4480 | Chico Vaughn 4481 | David Vaughn 4482 | David Vaughn 4483 | Jacque Vaughn 4484 | Rashad Vaughn 4485 | Virgil Vaughn 4486 | Loy Vaught 4487 | Bob Verga 4488 | Pete Verhoeven 4489 | Jan Vesely 4490 | Gundars Vetra 4491 | Joao Vianna 4492 | Charlie Villanueva 4493 | Gabe Vincent 4494 | Jay Vincent 4495 | Sam Vincent 4496 | Marcus Vinicius 4497 | Fred Vinson 4498 | Claude Virden 4499 | Gary Voce 4500 | Floyd Volker 4501 | Alexander Volkov 4502 | Whitey Von Nieda 4503 | Noah Vonleh 4504 | Jake Voskuhl 4505 | Danny Vranes 4506 | Slavko Vranes 4507 | Stojko Vrankovic 4508 | Brett Vroman 4509 | Jackson Vroman 4510 | Nikola Vucevic 4511 | Sasha Vujacic 4512 | Butch van Breda Kolff 4513 | Jan van Breda Kolff 4514 | Dean Wade 4515 | Dwyane Wade 4516 | Mark Wade 4517 | Von Wafer 4518 | Clint Wager 4519 | Dajuan Wagner 4520 | Danny Wagner 4521 | Milt Wagner 4522 | Moritz Wagner 4523 | Phillip Wagner 4524 | Dion Waiters 4525 | Granville Waiters 4526 | Andre Wakefield 4527 | Neal Walk 4528 | Andy Walker 4529 | Antoine Walker 4530 | Brady Walker 4531 | Chet Walker 4532 | Darrell Walker 4533 | Foots Walker 4534 | Henry Walker 4535 | Horace Walker 4536 | Jimmy Walker 4537 | Kemba Walker 4538 | Kenny Walker 4539 | Lonnie Walker 4540 | Phil Walker 4541 | Samaki Walker 4542 | Wally Walker 4543 | John Wall 4544 | Ben Wallace 4545 | Gerald Wallace 4546 | John Wallace 4547 | Rasheed Wallace 4548 | Red Wallace 4549 | Tyrone Wallace 4550 | Dwight Waller 4551 | Jamie Waller 4552 | Jim Walsh 4553 | Matt Walsh 4554 | Rex Walters 4555 | Paul Walther 4556 | Isaac Walthour 4557 | Bill Walton 4558 | Derrick Walton 4559 | Lloyd Walton 4560 | Luke Walton 4561 | Brad Wanamaker 4562 | Bobby Wanzer 4563 | Perry Warbington 4564 | Charlie Ward 4565 | Gerry Ward 4566 | Henry Ward 4567 | Casper Ware 4568 | Jim Ware 4569 | Ben Warley 4570 | Bob Warlick 4571 | Cornell Warner 4572 | Jameel Warney 4573 | Bob Warren 4574 | John Warren 4575 | T.J. Warren 4576 | Willie Warren 4577 | Bryan Warrick 4578 | Hakim Warrick 4579 | Chris Washburn 4580 | Julian Washburn 4581 | Bobby Washington 4582 | Darius Washington 4583 | Donald Washington 4584 | Duane Washington 4585 | Eric Washington 4586 | Jim Washington 4587 | Kermit Washington 4588 | P.J. Washington 4589 | Pearl Washington 4590 | Richard Washington 4591 | Stan Washington 4592 | Trooper Washington 4593 | Wilson Washington 4594 | Yuta Watanabe 4595 | Tremont Waters 4596 | Darryl Watkins 4597 | Bobby Watson 4598 | C.J. Watson 4599 | Earl Watson 4600 | Jamie Watson 4601 | Paul Watson 4602 | Ron Watts 4603 | Samuel Watts 4604 | Slick Watts 4605 | Maalik Wayns 4606 | David Wear 4607 | Travis Wear 4608 | Clarence Weatherspoon 4609 | Nick Weatherspoon 4610 | Quinndary Weatherspoon 4611 | Kyle Weaver 4612 | James Webb 4613 | Jeff Webb 4614 | Marcus Webb 4615 | Spud Webb 4616 | Chris Webber 4617 | Briante Weber 4618 | Jake Weber 4619 | Elnardo Webster 4620 | Jeff Webster 4621 | Martell Webster 4622 | Marvin Webster 4623 | Scott Wedman 4624 | Sonny Weems 4625 | Dick Wehr 4626 | Brant Weidner 4627 | Bob Weiss 4628 | Rick Weitzman 4629 | Bonzi Wells 4630 | Bubba Wells 4631 | Owen Wells 4632 | Ralph Wells 4633 | Chris Welp 4634 | Jiri Welsch 4635 | Thomas Welsh 4636 | Bill Wennington 4637 | Matt Wenstrom 4638 | Robert Werdann 4639 | Ray Wertis 4640 | David Wesley 4641 | Walt Wesley 4642 | David West 4643 | Delonte West 4644 | Doug West 4645 | Jerry West 4646 | Mario West 4647 | Mark West 4648 | Roland West 4649 | Dexter Westbrook 4650 | Russell Westbrook 4651 | Paul Westphal 4652 | John Wetzel 4653 | Robert Whaley 4654 | Ennis Whatley 4655 | DeJuan Wheat 4656 | Clinton Wheeler 4657 | Tyson Wheeler 4658 | Skippy Whitaker 4659 | Andrew White 4660 | Coby White 4661 | D.J. White 4662 | Derrick White 4663 | Eric White 4664 | Herb White 4665 | Hubie White 4666 | Jahidi White 4667 | James White 4668 | Jo Jo White 4669 | Okaro White 4670 | Randy White 4671 | Rodney White 4672 | Rory White 4673 | Royce White 4674 | Rudy White 4675 | Tony White 4676 | Willie White 4677 | Isaiah Whitehead 4678 | Jerome Whitehead 4679 | Donald Whiteside 4680 | Hassan Whiteside 4681 | Dwayne Whitfield 4682 | Chris Whitney 4683 | Hank Whitney 4684 | Hawkeye Whitney 4685 | Shayne Whittington 4686 | Sidney Wicks 4687 | Ron Widby 4688 | Murray Wier 4689 | Bob Wiesenhahn 4690 | Andrew Wiggins 4691 | Mitchell Wiggins 4692 | Ken Wilburn 4693 | C.J. Wilcox 4694 | Chris Wilcox 4695 | D.C. Wilcutt 4696 | Gene Wiley 4697 | Jacob Wiley 4698 | Michael Wiley 4699 | Morlon Wiley 4700 | Win Wilfong 4701 | Lenny Wilkens 4702 | Bob Wilkerson 4703 | Jamaal Wilkes 4704 | James Wilkes 4705 | Damien Wilkins 4706 | Dominique Wilkins 4707 | Eddie Lee Wilkins 4708 | Gerald Wilkins 4709 | Jeff Wilkins 4710 | Dale Wilkinson 4711 | Mike Wilks 4712 | Aaron Williams 4713 | Al Williams 4714 | Alan Williams 4715 | Alvin Williams 4716 | Art Williams 4717 | Bernie Williams 4718 | Bob Williams 4719 | Brandon Williams 4720 | Buck Williams 4721 | C.J. Williams 4722 | Charles Williams 4723 | Chuck Williams 4724 | Chuckie Williams 4725 | Cliff Williams 4726 | Corey Williams 4727 | Deron Williams 4728 | Derrick Williams 4729 | Duck Williams 4730 | Earl Williams 4731 | Elliot Williams 4732 | Eric Williams 4733 | Fly Williams 4734 | Frank Williams 4735 | Freeman Williams 4736 | Gene Williams 4737 | Grant Williams 4738 | Gus Williams 4739 | Guy Williams 4740 | Hank Williams 4741 | Herb Williams 4742 | Hot Rod Williams 4743 | Jason Williams 4744 | Jawad Williams 4745 | Jay Williams 4746 | Jayson Williams 4747 | Jerome Williams 4748 | John Williams 4749 | Johnathan Williams 4750 | Jordan Williams 4751 | Justin Williams 4752 | Kenny Williams 4753 | Kenrich Williams 4754 | Kevin Williams 4755 | Lorenzo Williams 4756 | Lou Williams 4757 | Marcus Williams 4758 | Marcus Williams 4759 | Marvin Williams 4760 | Matt Williams 4761 | Micheal Williams 4762 | Mike Williams 4763 | Milt Williams 4764 | Mo Williams 4765 | Monty Williams 4766 | Nate Williams 4767 | Pete Williams 4768 | Ray Williams 4769 | Reggie Williams 4770 | Reggie Williams 4771 | Rickey Williams 4772 | Rob Williams 4773 | Robert Williams 4774 | Ron Williams 4775 | Sam Williams 4776 | Sam Williams 4777 | Scott Williams 4778 | Sean Williams 4779 | Shammond Williams 4780 | Shawne Williams 4781 | Shelden Williams 4782 | Sly Williams 4783 | Terrence Williams 4784 | Travis Williams 4785 | Troy Williams 4786 | Walt Williams 4787 | Ward Williams 4788 | Willie Williams 4789 | Nigel Williams-Goss 4790 | Corliss Williamson 4791 | John Williamson 4792 | Zion Williamson 4793 | Vann Williford 4794 | Kevin Willis 4795 | Bill Willoughby 4796 | Dedric Willoughby 4797 | Bob Wilson 4798 | Bobby Wilson 4799 | Bobby Wilson 4800 | Bubba Wilson 4801 | D.J. Wilson 4802 | George Wilson 4803 | Isaiah Wilson 4804 | Jamil Wilson 4805 | Jasper Wilson 4806 | Jim Wilson 4807 | Michael Wilson 4808 | Nikita Wilson 4809 | Othell Wilson 4810 | Rick Wilson 4811 | Ricky Wilson 4812 | Stephen Wilson 4813 | Trevor Wilson 4814 | Kyle Wiltjer 4815 | Kennard Winchester 4816 | Tony Windis 4817 | John Windsor 4818 | Lee Winfield 4819 | David Wingate 4820 | Dontonio Wingfield 4821 | Harthorne Wingo 4822 | Marv Winkler 4823 | Justise Winslow 4824 | Rickie Winslow 4825 | Trevor Winter 4826 | Brian Winters 4827 | Voise Winters 4828 | Skip Wise 4829 | Willie Wise 4830 | Jeff Withey 4831 | Luke Witte 4832 | Greg Wittman 4833 | Randy Wittman 4834 | Garry Witts 4835 | Dave Wohl 4836 | Joe Wolf 4837 | Ruben Wolkowyski 4838 | Nate Wolters 4839 | Al Wood 4840 | Bob Wood 4841 | Christian Wood 4842 | David Wood 4843 | Howard Wood 4844 | Leon Wood 4845 | Loren Woods 4846 | Qyntel Woods 4847 | Randy Woods 4848 | Tommy Woods 4849 | Mike Woodson 4850 | Bob Woollard 4851 | Orlando Woolridge 4852 | Haywoode Workman 4853 | Mark Workman 4854 | Tom Workman 4855 | Metta World Peace 4856 | Willie Worsley 4857 | Sam Worthen 4858 | James Worthy 4859 | Antoine Wright 4860 | Bracey Wright 4861 | Brad Wright 4862 | Brandan Wright 4863 | Chris Wright 4864 | Chris Wright 4865 | Delon Wright 4866 | Dorell Wright 4867 | Howard Wright 4868 | Howie Wright 4869 | Joby Wright 4870 | Julian Wright 4871 | Larry Wright 4872 | Leroy Wright 4873 | Lonnie Wright 4874 | Lorenzen Wright 4875 | Luther Wright 4876 | Sharone Wright 4877 | Justin Wright-Foreman 4878 | Tony Wroten 4879 | Dennis Wuycik 4880 | A.J. Wynder 4881 | Guerschon Yabusele 4882 | Vincent Yarbrough 4883 | George Yardley 4884 | Barry Yates 4885 | Wayne Yates 4886 | Charlie Yelverton 4887 | Rich Yonakor 4888 | Danny Young 4889 | James Young 4890 | Joe Young 4891 | Korleone Young 4892 | Michael Young 4893 | Nick Young 4894 | Perry Young 4895 | Sam Young 4896 | Thaddeus Young 4897 | Tim Young 4898 | Trae Young 4899 | Sun Yue 4900 | Max Zaslofsky 4901 | Zeke Zawoluk 4902 | Cody Zeller 4903 | Dave Zeller 4904 | Gary Zeller 4905 | Harry Zeller 4906 | Luke Zeller 4907 | Tyler Zeller 4908 | Tony Zeno 4909 | Phil Zevenbergen 4910 | Wang Zhizhi 4911 | George Zidek 4912 | Derrick Zimmerman 4913 | Stephen Zimmerman 4914 | Paul Zipser 4915 | Ante Zizic 4916 | Jim Zoet 4917 | Bill Zopf 4918 | Ivica Zubac 4919 | Matt Zunic 4920 | --------------------------------------------------------------------------------