Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Retrieving Rosters and Players

Five feeds cover who is on an NCAAFB roster, who is available on game day, and who moved: Team Roster, Game Roster, Player Profile, Transfer Portal, and Daily Transactions. This scenario builds team and player pages and keeps them current.

An NCAAFB roster is the lineup of players registered under a team, and two of these feeds are roster-specific: the Team Roster (the complete roster of players for a given team) and the Game Roster (the declared game roster, identifying which players from the full roster will be active for a specific game).

This scenario is commonly used to:

  • Build team pages with rosters, coaches, and program information
  • Build player pages with biographical, eligibility, and season data
  • Show game-day availability and in-game player status
  • Track transfer portal entries, commitments, suspensions, and other roster changes


Relevant Feeds

FeedScopeUse
Team Rosterteam GUIDFull roster, coaches, program record and honors
Game Rostergame GUIDDeclared game roster with participation and in-game status
Player Profileplayer GUIDBio, eligibility, and per-season statistics
NCAAFB Transfer PortalleaguePlayers currently in the NCAA Transfer Portal
Daily Transactionsleague dayTransfer portal entries, commitments, suspensions, releases


Integration Steps

Season-scoped requests that build on these pages (schedules, seasonal statistics) depend on the season being listed, so confirm it first:

To avoid confusion and ensure you're accessing available data, refer to our Seasons feed. This resource lists all the seasons for which we have data.

For example: To ensure data availability for future seasons, such as a schedule in advance of when a season begins, first check the Seasons feed to verify that data for that specific season is already provided.

Starting with this feed can prevent unnecessary errors and streamline your data retrieval process.


1. Build the team page

The Team Roster feed carries the program record (founding year, mascot, fight song, championships and conference titles won, playoff appearances), the coaching staff, and the complete roster. Player rows carry the physical and hometown detail plus an eligibility class year: Team ids come from the Teams feed or the League Hierarchy; the Fundamentals page walks that catalog.

GET https://api.sportradar.com/ncaafb/trial/v7/en/teams/19775492-f1eb-4bc5-9e15-078ebd689c0f/full_roster.json
x-api-key: YOUR_API_KEY
{
    "id": "19775492-f1eb-4bc5-9e15-078ebd689c0f",
    "name": "Crimson Tide",
    "market": "Alabama",
    "alias": "ALA",
    "founded": 1820,
    "mascot": "Big Al",
    "fight_song": "Yea Alabama",
    "championships_won": 18,
    "conference_titles": 30,
    "playoff_appearances": 9,
    "coaches": [
        {
            "id": "5c1a8421-6061-4372-b4e5-385c2d8b0dcf",
            "full_name": "Kalen DeBoer",
            "first_name": "Kalen",
            "last_name": "DeBoer",
            "position": "Head Coach"
        }
    ],
    "players": [
        {
            "id": "00f8bba0-4441-11f1-9c6d-f3aa3e19febe",
            "name": "Xavier Griffin",
            "jersey": "11",
            "last_name": "Griffin",
            "first_name": "Xavier",
            "abbr_name": "X.Griffin",
            "weight": 228.0,
            "height": 75,
            "position": "LB",
            "birth_place": "Gainesville, GA, USA",
            "status": "ACT",
            "eligibility": "FR"
        },
        {
            "id": "02eb7050-9ea5-11ed-975c-37b2dd34d160",
            "name": "Khalifa Keith",
            "jersey": "20",
            "last_name": "Keith",
            "first_name": "Khalifa",
            "abbr_name": "K.Keith",
            "weight": 232.0,
            "height": 73,
            "position": "RB",
            "birth_place": "Birmingham, AL, USA",
            "status": "ACT",
            "eligibility": "SR"
        }
    ]
}
<?xml version="1.0" ?>
<!-- Generation started @ 2026-08-24 16:03:21 +0000 -->
<team xmlns="http://feed.elasticstats.com/schema/football/team-v7.0.xsd" id="19775492-f1eb-4bc5-9e15-078ebd689c0f" name="Crimson Tide" market="Alabama" alias="ALA" founded="1820" mascot="Big Al" fight_song="Yea Alabama" championships_won="18" conference_titles="30" playoff_appearances="9">
  <coaches>
    <coach id="5c1a8421-6061-4372-b4e5-385c2d8b0dcf" full_name="Kalen DeBoer" first_name="Kalen" last_name="DeBoer" position="Head Coach"/>
  </coaches>
  <players>
    <player id="00f8bba0-4441-11f1-9c6d-f3aa3e19febe" name="Xavier Griffin" jersey="11" last_name="Griffin" first_name="Xavier" abbr_name="X.Griffin" weight="228.0" height="75" position="LB" birth_place="Gainesville, GA, USA" status="ACT" eligibility="FR">
    </player>
    <player id="02eb7050-9ea5-11ed-975c-37b2dd34d160" name="Khalifa Keith" jersey="20" last_name="Keith" first_name="Khalifa" abbr_name="K.Keith" weight="232.0" height="73" position="RB" birth_place="Birmingham, AL, USA" status="ACT" eligibility="SR">
    </player>
    <!-- ... omitted for brevity -->
  </players>
  <!-- ... omitted for brevity -->
</team>
<!-- Generation ended @ 2026-08-24 16:03:21 +0000 -->

The response is shown trimmed to one coach and two players; the full roster returns every player on the team. The following is an example of how you can display a team roster on your platform, showcasing key details such as player names, positions, class, height, weight, and birthplace:

ALABAMA ROSTERTeam Roster · full_roster
PLAYERPOSCLASSHTWTBIRTHPLACE
John CooperQBJR74205Mountain Brook, AL, USA
John GazzanigaQBSO79241Rancho Santa Margarita, CA, USA
Tayden-Evan KaawaQBFR77238Moloka'i, HI, USA
Austin MackQBSR78237Loomis, CA, USA
Keelon RussellQBSO75207Duncanville, TX, USA
Roster rows carry class eligibility alongside the physical and hometown detail.

Team logos and player headshots come from the Images API; college team logos cover Division I programs (FBS and FCS), as the Images FAQ notes.


2. Drill into Player Profiles

The Player Profile feed goes beyond roster data: biographical detail, eligibility, the current team, and a seasons[] array with one entry per season played, each carrying that stint's team and statistics:

GET https://api.sportradar.com/ncaafb/trial/v7/en/players/000d8f6e-5a71-4214-9bd9-b33f43502527/profile.json
x-api-key: YOUR_API_KEY
{
    "id": "000d8f6e-5a71-4214-9bd9-b33f43502527",
    "name": "Dre Washington",
    "last_name": "Washington",
    "first_name": "Dre",
    "abbr_name": "D.Washington",
    "weight": 216.0,
    "height": 69,
    "position": "RB",
    "birth_place": "Hemphill, TX, USA",
    "status": "NWT",
    "eligibility": "SR",
    "seasons": [
        {
            "id": "d1132b13-2c29-4e6d-9011-b627c7fd9a17",
            "year": 2021,
            "type": "REG",
            "name": "REG",
            "teams": [
                {
                    "id": "2dec939a-f303-43ac-964d-37e81f75e286",
                    "name": "Ragin' Cajuns",
                    "market": "Louisiana",
                    "alias": "ULL"
                }
            ]
        }
    ]
}
<?xml version="1.0" ?>
<!-- Generation started @ 2026-08-23 15:50:38 +0000 -->
<player xmlns="http://feed.elasticstats.com/schema/football/profile-v7.0.xsd" id="000d8f6e-5a71-4214-9bd9-b33f43502527" name="Dre Washington" last_name="Washington" first_name="Dre" abbr_name="D.Washington" weight="216.0" height="69" position="RB" birth_place="Hemphill, TX, USA" status="NWT" eligibility="SR">
  <season id="d1132b13-2c29-4e6d-9011-b627c7fd9a17" year="2021" type="REG" name="REG">
    <team id="2dec939a-f303-43ac-964d-37e81f75e286" name="Ragin' Cajuns" market="Louisiana" alias="ULL">
      <!-- ... omitted for brevity -->
    </team>
  </season>
  <!-- ... omitted for brevity -->
</player>
<!-- Generation ended @ 2026-08-23 15:50:38 +0000 -->

The response is shown trimmed to one season entry with its statistics omitted; the full profile carries complete statistics per stint.


3. Read game-day availability

The Game Roster feed shows the declared game roster: which players from the full roster are active for a specific game. The game header repeats the schedule attributes (coverage, neutral_site, conference_game, playoff_game_type), and player rows carry two signals: status is the overall game status of a player (deactivated, did not play (dnp), played, or started), and in_game_status the player's condition during the game (active, probable, questionable, doubtful, out, benched, or unknown). in_game_status updates live, so the Game Roster doubles as an in-game availability tracker:

GET https://api.sportradar.com/ncaafb/trial/v7/en/games/ac60aab5-2638-45de-87f0-037e3f199282/roster.json
x-api-key: YOUR_API_KEY
{
    "id": "ac60aab5-2638-45de-87f0-037e3f199282",
    "status": "closed",
    "scheduled": "2026-01-20T00:30:00+00:00",
    "attendance": 67227,
    "entry_mode": "LDE",
    "clock": "00:00",
    "quarter": 4,
    "coverage": "full",
    "playoff_game_type": "CFP National Championship",
    "sr_id": "sr:match:67621710",
    "neutral_site": true,
    "game_type": "playoff",
    "conference_game": false,
    "title": "CFP National Championship",
    "duration": "3:28",
    "parent_id": "d679c1cd-c879-4d1b-8de0-d88ec1916569",
    "expected_latency": 25,
    "home": {
        "id": "fa0eb091-8e35-49c7-b00f-269794a99a61",
        "name": "Hoosiers",
        "market": "Indiana",
        "alias": "IND",
        "players": [
            {
                "id": "5cfad440-1947-11f0-b8cc-43f888f16ef3",
                "name": "Bryce Taylor",
                "jersey": "43",
                "last_name": "Taylor",
                "first_name": "Bryce",
                "abbr_name": "B.Taylor",
                "weight": 184.0,
                "height": 70,
                "position": "K",
                "birth_place": "Bloomington, IN, USA",
                "status": "dnp",
                "eligibility": "FR",
                "in_game_status": "active"
            }
        ]
    },
    "away": {
        "id": "2f475a40-df87-43a7-b8a9-c36a43edff21",
        "name": "Hurricanes",
        "market": "Miami (FL)",
        "alias": "MIA",
        "players": [
            {
                "id": "4583ac40-b955-11ee-9fd9-7112080b971c",
                "name": "Ny Carr",
                "jersey": "12",
                "last_name": "Carr",
                "first_name": "Ny",
                "abbr_name": "N.Carr",
                "weight": 185.0,
                "height": 72,
                "position": "WR",
                "birth_place": "Moultrie, GA, USA",
                "status": "dnp",
                "eligibility": "SO",
                "in_game_status": "active"
            }
        ]
    }
}
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" charset="UTF-8" href="/xslt/football/roster-v7.0.xsl"?>
<!-- Generation started @ 2026-08-25 07:30:10 +0000 -->
<game xmlns="http://feed.elasticstats.com/schema/football/roster-v7.0.xsd" id="ac60aab5-2638-45de-87f0-037e3f199282" status="closed" scheduled="2026-01-20T00:30:00+00:00" attendance="67227" entry_mode="LDE" clock="00:00" quarter="4" coverage="full" playoff_game_type="CFP National Championship" sr_id="sr:match:67621710" neutral_site="true" game_type="playoff" conference_game="false" title="CFP National Championship" duration="3:28" parent_id="d679c1cd-c879-4d1b-8de0-d88ec1916569" expected_latency="25">
  <home id="fa0eb091-8e35-49c7-b00f-269794a99a61" name="Hoosiers" market="Indiana" alias="IND">
    <player id="5cfad440-1947-11f0-b8cc-43f888f16ef3" name="Bryce Taylor" jersey="43" last_name="Taylor" first_name="Bryce" abbr_name="B.Taylor" weight="184.0" height="70" position="K" birth_place="Bloomington, IN, USA" status="dnp" eligibility="FR" in_game_status="active">
    </player>
    <!-- ... omitted for brevity -->
    <!-- ... omitted for brevity -->
  </home>
  <away id="2f475a40-df87-43a7-b8a9-c36a43edff21" name="Hurricanes" market="Miami (FL)" alias="MIA">
    <player id="4583ac40-b955-11ee-9fd9-7112080b971c" name="Ny Carr" jersey="12" last_name="Carr" first_name="Ny" abbr_name="N.Carr" weight="185.0" height="72" position="WR" birth_place="Moultrie, GA, USA" status="dnp" eligibility="SO" in_game_status="active">
    </player>
    <!-- ... omitted for brevity -->
    <!-- ... omitted for brevity -->
  </away>
  <!-- ... omitted for brevity -->
</game>
<!-- Generation ended @ 2026-08-25 07:30:10 +0000 -->

The response is shown trimmed to one player per team. For play-by-play and statistics during the game, see Tracking Live Games.


4. Track player movement

In NCAA Football, players can switch schools by entering the NCAA Transfer Portal, even mid-season. Mid-season transfers make the player ineligible to play until the next season, while off-season transfers help players avoid losing playing time and maintain academic progress. The NCAAFB Transfer Portal feed lists all players currently in the NCAA Transfer Portal. A player's ID remains constant even after transferring, ensuring you can track their career across teams without losing data continuity.

GET https://api.sportradar.com/ncaafb/trial/v7/en/league/transfer_portal.json
x-api-key: YOUR_API_KEY

While the Transfer Portal feed shows players who are currently in the portal, the Daily Transactions feed reports the individual transactions recorded for players on a given league-defined day. Transfer portal moves make up the majority of these transactions, so this is the feed that confirms when a player has officially transferred to a school, but it also captures other roster changes such as suspensions, commitments, and releases:

GET https://api.sportradar.com/ncaafb/trial/v7/en/league/2026/09/02/transactions.json
x-api-key: YOUR_API_KEY

Each transaction returns a code and type identifying what happened. The supported codes are:

CodeType
TPTransfer Portal Entry
COMCommitted
DCOMDecommitted
ACTActivated
RELReleased
NWTNot with Team
SUSLeague Suspension
RSUSReinstated from Suspension
TSUSTeam Suspension
TRANOther Transaction

Use Daily Transactions to:

  • Identify the specific day a player's transfer to a new school is recorded (TP entries)
  • Update a player's team affiliation or availability on your platform once a transaction is official
  • Power a daily transactions feed or roster-change notification without re-pulling full team rosters

Because the feed is keyed to the league-defined day a transaction is created, poll it once per day to capture all transactions recorded that day, regardless of when each one takes effect.

🔄

Pair with the Transfer Portal Feed

Use the Transfer Portal feed to monitor players who are actively in the portal, then use Daily Transactions to confirm the official completion of a move with a TP (Transfer Portal Entry) transaction. A player's ID remains constant across both feeds, so you can follow their movement end to end.



Player Statuses and Positions

Roster rows carry a league status such as ACT (active) or NWT (not with team, as on the profile above) alongside an eligibility class year (FR, SO, JR, SR, 5TH for a fifth-year player, GR for a graduate student; the NCAAFB FAQ lists them under "What are the valid player eligibility values?"); the transaction codes above share that vocabulary (ACT, NWT, SUS). Game Roster rows carry a separate participation status (deactivated, dnp, played, started) and an in_game_status (active, probable, questionable, doubtful, out, benched, unknown).



Best Practices

  • Key players by GUID; a player's ID stays constant through a transfer, so profiles and statistics follow them across schools
  • Seasonal rosters are maintained and updated starting in the summer and continuing up to the start of the season. Offseason maintenance runs continuously from the end of one season to the start of the next: player removals, experience, and measurement updates land through the spring; class years advance as part of that refresh rather than on a fixed date; incoming freshman classes are added from late July; and rosters are broadly consistent across teams by early August, with updates continuing until each team's opener
  • Poll Daily Transactions once per league day and confirm a move with a TP entry before changing a player's team affiliation; the Transfer Portal feed shows who is in the portal right now
  • Treat the Daily Change Log as the trigger to refresh: it lists roster adjustments and corrections to player stats without exhausting your API call quota, so a team ID means re-pull that Team Roster and a game ID in results a post-game Game Roster correction; Monitoring Data Changes carries the roster scenario table and the full workflow
  • Treat the Game Roster as the game-day truth for who dressed and started; the Team Roster is the program-level view
  • For recommended pull intervals and timing for each roster-related feed, see Update Frequencies

Did this page help you?