Nimbryxo Studio

Use NCAA Stats & Scores: Leaderboards, Polls & Standings with Python

NCAA stats and scores: team and player leaderboards, polls, standings, school directory, schedules, team seasons, brackets, game details and championship history for 14 sports across Divisions I-III.

1. Choose the data you need

Review the published README for supported collection modes, examples, and limits. The recipe below uses the current published input definition.

2. Prepare a source-based input

This JSON contains published prefills and required-field defaults. Review every value for your task before running it; it is not a promise of successful collection.

{
  "conference": "all",
  "division": "d1",
  "finalOnly": false,
  "gameIds": [],
  "includeBoxscore": false,
  "includeGameDetails": false,
  "includePlayByPlay": false,
  "maxItems": 3,
  "mode": "teamStats",
  "pollSlug": "di-mens-basketball-associated-press",
  "season": "current",
  "sport": "basketball-men",
  "statCategory": "Scoring Offense"
}

Download input.example.json and save your reviewed copy as input.json.

FieldTypeRequiredDescription
modestringrequiredWhat to scrape from NCAA.com. `listOptions` returns the valid modes, sports, divisions, categories, polls, and conferences from the built-in catalog (optionally scoped with `sport`/`division`) without making any NCAA.com requests. `teamSchedule` returns one team's full season (no 31-day limit); `brackets` returns championship / March Madness bracket games from NCAA.com's official championship route.
sportstringoptionalNCAA sport to scrape. Required for the sport-specific modes; ignored by `mode=teams` and `mode=gameDetail`; optional scope for `mode=listOptions`.
divisionstringoptionalNCAA competition division. Football uses FBS/FCS; men's volleyball and women's ice hockey use `nc` (National Collegiate) for polls and history. The actor maps women's ice hockey `nc` schedules to NCAA.com's d1 scoreboard page. Not every division is offered for every sport; an unsupported combination returns a clear status message instead of data. Optional scope for `mode=listOptions`.
statCategorystringoptional(mode=teamStats or individualStats) The statistic to rank by. Every NCAA.com category is listed; the valid set depends on the chosen sport and mode. If the default `Scoring Offense` is not valid for the chosen sport/mode, the actor uses a curated per-sport default (for example Points Per Game for men's/women's basketball players, Passing Yards Per Game for FBS players, Batting Average for baseball/softball) and reports the substitution in the run status. An explicitly unavailable category returns a clear status message.
seasonstringoptional(mode=teamStats, individualStats, teamSchedule, or brackets) Season/year. `Current season` follows whichever season NCAA.com is actively showing. `YYYY-YY` labels such as `2025-26` are accepted and mapped to their starting year for leaderboards and team schedules. For `mode=brackets`, enter the tournament year shown in NCAA.com's bracket URL (for example `2026`); a `YYYY-YY` label tries the ending year first and then the starting year, and `current` tries the current calendar year then the previous year. Historical depth varies by sport; unsupported seasons return a clear status message.
pollSlugstringoptional(mode=rankings) Which NCAA-hosted poll to scrape. The valid set depends on the chosen sport and division. If the default poll is not valid for the chosen sport/division, the actor uses a curated default (AP for D1 basketball and FBS football, AFCA Coaches for FCS, and the primary coaches/RPI/AVCA poll elsewhere) and reports the substitution in the run status. An explicitly unavailable poll returns a clear status message.
gameIdsarrayoptional(mode=gameDetail) NCAA game IDs or game-page URLs, e.g. `6649632` or `https://www.ncaa.com/game/6649632`.
teamstringoptionalOptional case-insensitive team/school name or NCAA.com school slug filter. Applies to leaderboards, polls, standings, schedules, teamSchedule, brackets, game detail, and the school directory. `mode=teamSchedule` requires this field; for example `duke` or `Duke` matches either team in each contest. Leave empty for all teams in the other modes.
playerNamestringoptional(mode=individualStats) Optional case-insensitive player-name filter, e.g. `Dybantsa`. Searches the rows of the selected player leaderboard.
conferencestringoptional(mode=standings or schedules) Optional conference filter. Standings are fetched from the chosen conference's own page; schedules keep games involving a team from that conference. Not every conference is offered for every sport. When set, records without a published conference are excluded.
rankFromintegeroptionalOptional lowest rank to keep (inclusive) for leaderboards and polls. Records without a published rank are excluded.
rankTointegeroptionalOptional highest rank to keep (inclusive) for leaderboards and polls. Records without a published rank are excluded.
minGamesintegeroptional(mode=teamStats or individualStats) Optional minimum games-played filter. Rows without a games-played column pass through.
scheduleDateFromstringoptional(mode=schedules) Optional first date in YYYY-MM-DD format. Leave both date fields empty to use NCAA.com's current game date. Date ranges are capped at 31 days. This field does not apply to `teamSchedule`, which scans the full season.
scheduleDateTostringoptional(mode=schedules) Optional last date in YYYY-MM-DD format (inclusive).
weekintegeroptional(mode=schedules, sport=football) Week number. Football schedules are week-based; leave empty to use the current NCAA.com week. `mode=teamSchedule` uses the full season calendar automatically and does not need this field.
finalOnlybooleanoptional(mode=schedules) Keep only games whose status is final. Records without a final status are excluded.
includeGameDetailsbooleanoptional(mode=schedules or teamSchedule) Add venue, city/state, linescores, records, and hasBoxscore/hasPbp to each game. Adds one game-page request plus one game-detail request per record.
includeBoxscorebooleanoptional(mode=gameDetail) Include team and player box-score blocks when NCAA.com publishes them.
includePlayByPlaybooleanoptional(mode=gameDetail) Include the play-by-play timeline when NCAA.com publishes it. This can make each record large.
maxItemsintegeroptionalHard cap on the number of records emitted in this run, 1-5,000. When omitted, a mode-aware default is used (2,000 for leaderboards, 1,000 for polls/standings/history, 5,000 for the school directory and listOptions, 500 for schedules and brackets, 100 for teamSchedule and game detail). Leaderboard modes are also capped at 2,000 source rows (40 pages). The actor sets a status message whenever maxItems or the page cap actually truncates the output.

3. Start an Actor run

Set APIFY_TOKEN in your environment. Python 3.10 or newer is sufficient; this recipe uses no third-party packages.

Execution may incur charges. Review current pricing on Apify. The request asks for a 120-second timeout and a charge limit; these settings are subject to Apify’s pricing and do not guarantee an all-inclusive spending cap.

import json
import os
import urllib.request

# Save the schema-derived example as input.json; review and edit it first.
with open("input.json", encoding="utf-8") as stream:
    actor_input = json.load(stream)

token = os.environ["APIFY_TOKEN"]
request = urllib.request.Request(
    "https://api.apify.com/v2/acts/ZD3dF6oZeDkYaf2hk/runs?timeout=120&maxTotalChargeUsd=0.50",
    data=json.dumps(actor_input).encode("utf-8"),
    headers={"Authorization": "Bearer " + token, "Content-Type": "application/json"},
    method="POST",
)
# This starts a potentially billable run. Do not automatically retry this POST.
with urllib.request.urlopen(request, timeout=40) as response:
    run = json.load(response)["data"]
print("Run ID:", run["id"])
print("Status:", run["status"])
# Inspect and download results in Apify Console once the run succeeds.

4. Inspect the actual results

Open the run in Apify Console and wait for a successful completion. Use the published output schema to locate results and the dataset schema to understand declared views. Missing or optional record fields must not be treated as guaranteed values.

Official NCAA.com stats and scores: team and player leaderboards, ranking polls, conference standings, school directory entries, schedules/scores, full team season schedules, championship / March Madness bracket games, game details (venue, linescores, box score, play-by-play), championship history, and the listOptions capability catalog.

Questions before you run

Which inputs are required?

The published required fields are mode

What does this guide verify?

The fields, prefills, and schema links are rendered from the published build. This is a usage recipe, not a paid live extraction test. Source availability and collection results can vary.

What if the run request times out?

Check Apify Console before retrying. The first request may already have created a run. Do not automatically repeat a run-creation POST.

Generated from source build 0CfvUxrNclxYHLnVM and its README and schemas. Source changes regenerate this guide; no third-party editorial claims are inferred.