Barttorvik College Basketball Scraper
Pricing
from $4.45 / 1,000 team ratings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
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 it | What they use T-Rank data for |
|---|---|
| Bettors and modellers | Tempo-free efficiency inputs and per-game four factors for a rating model |
| College coaching staffs and analysts | Opponent scouting: four factors for and against, form and schedule strength |
| Bracketologists and media | Wins above bubble, quality wins and bad losses by team |
| Fantasy and DFS tools | Pace and efficiency by team to project game totals |
| Sports data researchers | Nineteen 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 guessed | The 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 round | The 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 schema | Ratings and games in the same run, with rowType telling them apart |
| Nineteen seasons | 2008 onward, the same fields throughout |
| Fast and cheap to run | One request per season file: 3,000 game rows written in about three seconds |
| No proxy, no browser | Plain 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.
| Feature | ParseForge | barttorvik.com | NCAA box score actors |
|---|---|---|---|
| Adjusted efficiency and barthag | Yes | Yes, as a table | No |
| Four factors for and against | Yes | Yes | Partly, unadjusted |
| Per-game adjusted performance | Yes | Yes | No |
| Form and schedule strength computed | Yes | Work it out yourself | No |
| Seasons back to 2008 | Yes | Yes | Varies |
| Export | CSV, JSON, Excel, XML | No | Yes |
| Price per row | $0.005 ratings, $0.002 games | Free, 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.
| Event | Price | When |
|---|---|---|
team-rating | $0.005 | Every team-season row written |
game-row | $0.002 | Every game row written |
season-scan | $0.003 | Each season file read, never more than the rows written |
team-form | $0.003 | Form splits computed for a team with games on file |
schedule-strength | $0.003 | Schedule strength computed for a team with games on file |
game-context | $0.002 | Ratings found for either side of the game |
| Run | Approximate 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
- Create a free Apify account with $5 in credit.
- Open the Barttorvik College Basketball Scraper.
- Pick ratings or games, choose the seasons and filters, then click Start.
- 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
| Question | Answer |
|---|---|
| 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. |
Related actors
- ESPN College Basketball Scraper: scores, schedules and box scores from ESPN.
- Sports Reference Scraper: season and career tables from the Reference family of sites.
- TeamRankings Scraper: team ratings, trends and betting stats across sports.
- SportsLine Scraper: projections and picks across leagues.
- Covers Scraper: odds, matchups and consensus by sportsbook.
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.
