Barttorvik College Basketball Scraper avatar

Barttorvik College Basketball Scraper

Pricing

from $4.45 / 1,000 team ratings

Go to Apify Store
Barttorvik College Basketball Scraper

Barttorvik College Basketball Scraper

Scrape Barttorvik T-Rank college basketball analytics: adjusted efficiency ratings and four factors for every Division I team since 2008, plus every game with its box-score four factors.

Pricing

from $4.45 / 1,000 team ratings

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

ParseForge

NCAA Basketball Rankings Scraper - Barttorvik T-Rank

Barttorvik's T-Rank as data: adjusted efficiency ratings and four factors for all 365 Division I teams, every season since 2008, plus every game with its own four factors. No login, no API key, no proxy. Export to CSV, JSON, Excel, or XML.

T-Rank is the public tempo-free rating system college basketball analysts actually use, but the site gives you a table to look at, not a file to work with. This Actor reads the ratings table and the season game file, returns them as flat rows, and adds what the site leaves you to work out by hand: form splits, schedule strength, and the rank and barthag of both sides on every game.

Who uses itWhat they use T-Rank data for
Bettors and modellersTempo-free efficiency inputs and per-game four factors for a rating model
College coaching staffs and analystsOpponent scouting: four factors for and against, form and schedule strength
Bracketologists and mediaWins above bubble, quality wins and bad losses by team
Fantasy and DFS toolsPace and efficiency by team to project game totals
Sports data researchersNineteen seasons of tempo-free ratings in one schema

What it does

Two datasets, both from the season files the site publishes:

  • 🏀 Team ratings: one row per team per season. T-Rank position, conference, record, adjusted offense and defense, barthag, effective field goal percentage for and against, turnover rate for and against, offensive and defensive rebound percentage, free throw rate for and against, two and three point percentages and rates for and against, adjusted tempo, wins above bubble, and the tournament note the site prints next to the name ("1 seed, CHAMPS").
  • 📅 Games: one row per team per game, so each game appears twice, once from each side. Date, opponent, both conferences, venue, result, score, margin, the adjusted offense and defense of that performance, the four factors for and against, game score, adjusted margin, tempo and both head coaches. The 2026 season carries 11,504 game rows.

And three blocks computed from the same files, so they cost no extra request:

  • 📈 Team form: last-10 record, home, away and neutral splits, conference and non-conference records, the last game played and its result.
  • 💪 Schedule strength: average opponent rank and barthag, the toughest opponent faced, wins against the top 50 and losses to teams outside the top 200.
  • 🔍 Game context: the season rank, barthag and record of both sides on each game row, which is what turns a result into a quality win or a bad loss.

Coverage runs from the 2008 season (341 teams) to the current one (365).

What you can do with T-Rank data

Build a rating model.

Pull the games for several seasons with the four factors and the adjusted margin already computed per performance, and you have a training set without touching a box score.

Scout an opponent.

One team, one season, with form and schedule strength: how they score and defend, how they have played in the last ten, and against whom.

Find quality wins and bad losses.

Game context puts the opponent's rank on the row, so filtering wins against the top 50 or losses to teams outside the top 200 is a spreadsheet filter, not a join.

Compare conferences.

Filter by conference across seasons and compare adjusted efficiency, tempo and wins above bubble.

Why choose this scraper

What you get
Columns that are verified, not guessedThe site's JSON is an unlabelled array; every field here was aligned against its own labelled table, and the positions that could not be confirmed are left out rather than mislabelled
Scores the right way roundThe site writes the score winner first, so "L, 96-62" means the team scored 62. Every row carries the team's own score, the opponent's, and the signed margin
Two datasets, one schemaRatings and games in the same run, with rowType telling them apart
Nineteen seasons2008 onward, the same fields throughout
Fast and cheap to runOne request per season file: 3,000 game rows written in about three seconds
No proxy, no browserPlain HTTP; the site's browser check is answered by posting the form it ships

How it compares

No Apify Actor publishes tempo-free college basketball ratings. The NCAA actors on the Store return box scores, which are the raw counting stats behind the game rather than the adjusted ratings.

FeatureParseForgebarttorvik.comNCAA box score actors
Adjusted efficiency and barthagYesYes, as a tableNo
Four factors for and againstYesYesPartly, unadjusted
Per-game adjusted performanceYesYesNo
Form and schedule strength computedYesWork it out yourselfNo
Seasons back to 2008YesYesVaries
ExportCSV, JSON, Excel, XMLNoYes
Price per row$0.005 ratings, $0.002 gamesFree, manual$0.00002 to $0.004

What a team rating looks like

{
"rowType": "team-rating",
"season": 2026,
"rank": 1,
"team": "Michigan",
"tournamentNote": "1 seed, CHAMPS",
"conference": "B10",
"games": 40,
"record": "37-3",
"wins": 37,
"losses": 3,
"adjustedOffense": 129.54,
"adjustedDefense": 91.51,
"barthag": 0.98191,
"effectiveFgPct": 58.38,
"effectiveFgPctDefense": 44.61,
"turnoverPct": 16.3154,
"turnoverPctDefense": 15.1271,
"offensiveReboundPct": 34.754,
"defensiveReboundPct": 28.269,
"freeThrowRate": 38.0102,
"freeThrowRateDefense": 26.013,
"twoPointPct": 60.64,
"twoPointPctDefense": 43.82,
"threePointPct": 36.831,
"threePointPctDefense": 30.416,
"threePointRate": 41.4141,
"threePointRateDefense": 42.3275,
"adjustedTempo": 71.121,
"winsAboveBubble": 14.21,
"scrapedAt": "2026-08-27T20:30:46.346Z"
}

A game row from the same season, with context on:

{
"rowType": "game",
"date": "2026-04-06",
"team": "Michigan",
"teamConference": "B10",
"opponent": "Connecticut",
"opponentConference": "BE",
"venue": "Neutral",
"isConferenceGame": "No",
"result": "W, 69-63",
"outcome": "Win",
"teamScore": 69,
"opponentScore": 63,
"margin": 6,
"coach": "Dusty May",
"opponentRank": 9,
"opponentBarthag": 0.95619
}

Configure the run

Leave everything empty for the current season's ratings. Pick games for the game file, or both to get the ratings first and then the games.

The top 25 teams this season:

{ "dataset": "team-ratings", "maxRank": 25, "maxItems": 25 }

One conference with form and schedule strength:

{
"dataset": "team-ratings",
"conferences": ["B10"],
"includeTeamForm": true,
"includeScheduleStrength": true,
"maxItems": 20
}

Every game one team played, with the opponent's rating on each row:

{
"dataset": "games",
"teamNameContains": "Michigan",
"includeGameContext": true,
"maxItems": 45
}

Three seasons of conference games for a model:

{
"dataset": "games",
"seasons": ["2024", "2025", "2026"],
"conferenceGamesOnly": true,
"maxItems": 20000
}

Pricing

Pay-per-event. $5 per 1,000 team ratings and $2 per 1,000 game rows, plus $0.02 per run start and $0.003 per season file read. Game rows are priced lower because a season is 11,504 of them and NCAA box score actors already sit in that range.

EventPriceWhen
team-rating$0.005Every team-season row written
game-row$0.002Every game row written
season-scan$0.003Each season file read, never more than the rows written
team-form$0.003Form splits computed for a team with games on file
schedule-strength$0.003Schedule strength computed for a team with games on file
game-context$0.002Ratings found for either side of the game
RunApproximate cost
Top 25 teams$0.15
All 365 teams of a season$1.85
All 365 teams with form and schedule strength$4.03
A full season of games (11,504 rows) with context$46.04

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 rows as a preview. Upgrade your Apify plan to pull whole seasons.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Barttorvik College Basketball Scraper.
  3. Pick ratings or games, choose the seasons and filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab, or schedule a daily run during the season.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent tempo-free college basketball data through the Model Context Protocol:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/barttorvik-college-basketball-scraper"

Then ask: "Which Big Ten team had the best adjusted defense this season?", "List Michigan's wins against top 50 opponents" or "Compare tempo across the ACC and the Big 12".

Troubleshooting

Why does every game appear twice?

Because the season file records each game from both sides, once for each team, with that team's own offensive and defensive numbers. Filter by team, or keep one row per gameKey if you want a single row per game.

Why is the score reversed from what I expected?

It is not: the site writes the score winner first, so a loss reads "L, 96-62" even though the team scored 62. Every row carries teamScore, opponentScore and a signed margin so you never have to read the string.

Why is the current season empty in the summer?

Because it has not started. A season is named for the year it ends in, and the run falls back to the previous season with a warning until November.

Why are the form and schedule strength fields missing?

They are computed from that season's game file, so a team with no games on file gets neither, and neither block is charged.

Why do some columns from the site not appear here?

The site's JSON is an unlabelled array. Every field this Actor ships was matched against the site's own labelled table for a known team and a known game; four positions whose meaning that comparison did not settle were left out rather than published under a guessed name.

FAQ

QuestionAnswer
What is T-Rank?Barttorvik's tempo-free rating system: adjusted offensive and defensive efficiency per 100 possessions, plus a win probability rating called barthag.
How far back does it go?The 2008 season, which carries 341 teams; the current season carries 365.
Is this the same as KenPom?No. Both are tempo-free rating systems; this Actor reads Barttorvik, which is free and public.
What is wins above bubble?How many more games a team has won than a bubble team would have, given the same schedule. It is the bracket metric on the ratings row.
Do I get player stats?Not in this Actor. It covers team ratings and games.
How current is it?The site updates through the season; the ratings row carries the record and the game file carries every game played to date.
What is game score?Barttorvik's single-number rating of a team's performance in that game, on the same scale the site shows in its results table.
Can I get one row per game instead of two?Filter by team, or deduplicate on gameKey, which is the same for both sides of a game.
How many rows per run?Free plan: 10. Paid: a whole season of games is 11,504 rows, and nineteen seasons of ratings is about 6,800.
Is this an official Barttorvik product?No. It is unofficial and reads only public pages.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Barttorvik, the NCAA or any conference or school. It reads only publicly available pages. Use the data in line with the site's terms and applicable law.