Basketball Reference Scraper | NBA Stats and History
Pricing
from $19.00 / 1,000 results
Basketball Reference Scraper | NBA Stats and History
Pull NBA player, team, and game stats from Basketball Reference including box scores, season averages, advanced metrics, standings, awards, and historical records. Perfect for sports analytics, fantasy tools, betting models, and basketball data journalism projects.
Pricing
from $19.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share

🏀 Basketball Reference Scraper
🚀 Export NBA player statistics in seconds. No API key, no login, no limits on what season or stat type you pull.
🕒 Last updated: 2026-05-22 · 📊 19 fields per record · 500+ players per season · NBA seasons 1950-present
The Basketball Reference Scraper extracts NBA player statistics from Basketball Reference, the authoritative source for basketball data. Whether you need scoring leaders, advanced efficiency metrics, or raw season totals, this actor pulls the complete player table for any season and stat type you choose.
Data is scraped in real-time from the official public stats pages - no caching, no stale records, no truncation.
Coverage
- Seasons: NBA 1950-present (75+ seasons of historical data)
- Stat types: Per Game, Totals, Advanced
- Players per season: 450-550 active players
- Fields per player: 19 data points covering scoring, playmaking, defense, and shooting efficiency
Target Audience / Use Cases
| Who | Why |
|---|---|
| Sports analysts | Build season-over-season performance comparisons |
| Fantasy basketball managers | Track player stats across a full season |
| Data scientists | Train prediction models on historical NBA data |
| Sports journalists | Pull quick stats for game previews and recaps |
| Basketball researchers | Study long-term trends in the NBA |
| Developers | Power sports dashboards and apps |
📋 What the Basketball Reference Scraper does
- Fetches the full player stats table for any NBA season from 1950 to present
- Supports three stat types: Per Game averages, Season Totals, and Advanced metrics
- Parses all player rows including name, team, position, age, and full stat line
- Handles traded players correctly (returns the combined TOT row, not duplicates)
- Converts all numeric stats to proper number types (no string parsing needed)
- Limits free users to 10 items as a preview; paid users get the full dataset
💡 Why it matters: Basketball Reference is the gold standard for NBA stats. Every number here is the same one scouts, analysts, and broadcasters rely on. Getting it programmatically means you can build tools that stay current automatically.
🎬 Full Demo
🚧 Coming soon
⚙️ Input
| Field | Type | Default | Description |
|---|---|---|---|
season | integer | 2024 | Season year (e.g. 2024 = 2023-24 season) |
statType | select | per_game | Stats type: per_game, totals, or advanced |
maxItems | integer | 20 | Max players to return (free: 10, paid: up to 1,000,000) |
Example - Per Game leaders 2024:
{"season": 2024,"statType": "per_game","maxItems": 100}
Example - Advanced stats for a historical season:
{"season": 2016,"statType": "advanced","maxItems": 500}
⚠️ Good to Know: Free users are limited to 10 players per run as a preview. Upgrade to a paid plan to unlock the full dataset of 500+ players per season. Create a free account w/ $5 credit
📊 Output
Each record in the dataset contains the following fields:
| Field | Type | Description |
|---|---|---|
👤 playerName | string | Full player name |
🏀 team | string | Team abbreviation (e.g. LAL, BOS) |
📍 position | string | Player position (PG, SG, SF, PF, C) |
🎂 age | number | Player age during that season |
🔗 playerUrl | string | Link to player's page on Basketball Reference |
📅 season | integer | Season year (e.g. 2024) |
📊 statType | string | Stat type scraped (per_game/totals/advanced) |
🎮 gamesPlayed | number | Games played |
⏱️ minutesPerGame | number | Minutes per game (or total minutes for totals) |
🏆 points | number | Points per game (or total) |
🎯 assists | number | Assists per game (or total) |
💪 rebounds | number | Total rebounds per game (or total) |
🛡️ steals | number | Steals per game (or total) |
🧱 blocks | number | Blocks per game (or total) |
❌ turnovers | number | Turnovers per game (or total) |
🎳 fieldGoalPct | number | Field goal percentage (0-1) |
3️⃣ threePointPct | number | 3-point percentage (0-1) |
🆓 freeThrowPct | number | Free throw percentage (0-1) |
🕒 scrapedAt | string | ISO timestamp of when the data was collected |
⚠️ error | string | Error message if something went wrong |
Sample records (2023-24 season, per game):
[{"playerName": "Joel Embiid","team": "PHI","position": "C","age": 29,"playerUrl": "https://www.basketball-reference.com/players/e/embiijo01.html","season": 2024,"statType": "per_game","gamesPlayed": 39,"minutesPerGame": 33.6,"points": 34.7,"assists": 5.6,"rebounds": 11,"steals": 1.2,"blocks": 1.7,"turnovers": 3.8,"fieldGoalPct": 0.529,"threePointPct": 0.388,"freeThrowPct": 0.883,"scrapedAt": "2026-05-22T01:29:47.698Z"},{"playerName": "Luka Dončić","team": "DAL","position": "PG","age": 24,"playerUrl": "https://www.basketball-reference.com/players/d/doncilu01.html","season": 2024,"statType": "per_game","gamesPlayed": 70,"minutesPerGame": 37.5,"points": 33.9,"assists": 9.8,"rebounds": 9.2,"steals": 1.4,"blocks": 0.5,"turnovers": 4,"fieldGoalPct": 0.487,"threePointPct": 0.382,"freeThrowPct": 0.786,"scrapedAt": "2026-05-22T01:29:47.698Z"}]
✨ Why choose this Actor
| Feature | Benefit |
|---|---|
| 🏎️ Fast scraping | Full season of 500+ players in under 5 seconds |
| 📅 Historical depth | Any NBA season from 1950 to present |
| 3️⃣ Three stat types | Per Game, Totals, and Advanced in one actor |
| 🔢 Clean numbers | All stats as proper floats, not strings |
| 🔄 Deduplication | Traded players appear once (TOT row only) |
| 🌐 No login required | Fully public, no credentials needed |
| 💳 Pay-per-item pricing | Only pay for what you actually collect |
📈 How it compares to alternatives
| Feature | This Actor | Manual CSV | NBA API |
|---|---|---|---|
| Historical seasons | ✅ 75+ years | Partial | ✅ |
| Advanced stats | ✅ | Partial | ❌ |
| Automation ready | ✅ | ❌ | ✅ |
| No auth required | ✅ | ✅ | ❌ |
| Structured output | ✅ JSON/CSV/Excel | ❌ | ✅ |
| Per-game + totals | ✅ | Partial | Partial |
🚀 How to use
- Create a free Apify account (includes $5 credit)
- Open the Basketball Reference Scraper actor
- Set your
seasonyear (e.g. 2024) andstatType(per_game, totals, or advanced) - Set
maxItemsto how many players you want (up to 500+ for full season) - Click Run and wait a few seconds
- Download your dataset as JSON, CSV, or Excel
💼 Business use cases
Fantasy Basketball
Pull the full per-game stats table weekly to track player performance trends. Build automated alerts when a player's scoring average changes by more than 20% over 10 games. Identify waiver wire pickups based on recent performance data.
Sports Betting Analytics
Aggregate season totals across multiple years to build historical baselines. Compare team-level stats by grouping player records. Identify over/under value plays by cross-referencing player stats with betting lines.
Content Creation
Auto-generate stat-based content for sports media. Pull the latest season leaders and pipe them into a CMS or newsletter template. Schedule daily runs to keep rankings current during the season.
Academic Research
Build comprehensive datasets of NBA player performance spanning decades. Study how rule changes (hand-checking ban, three-point era, load management) affect scoring and efficiency stats over time.
🔌 Automating Basketball Reference Scraper
Connect this actor to 1,500+ apps with no-code automations:
- Make (Integromat): Trigger nightly to update a Google Sheet with the latest standings
- Zapier: When run completes, post top scorers to a Slack channel
- Webhooks: Pipe results directly to your database API on completion
- Apify Scheduler: Schedule weekly runs at the start of each week to capture fresh data
🌟 Beyond business use cases
Research
Track the evolution of the three-point shot by comparing 3PA/game across decades. Study how player longevity has changed by analyzing age distributions across eras.
Creative Projects
Build a trivia game using real historical stat lines. Create "guess the player" puzzles from anonymized stat profiles.
Non-Profit / Education
Give students a real-world dataset for statistics classes. Visualize income inequality through contract vs. performance data.
Experimentation
Test ML models for predicting MVP candidates or All-Star selections. Experiment with player clustering algorithms using the advanced metrics dataset.
🤖 Ask an AI assistant about this scraper
You can paste this README into any AI chat (Claude, ChatGPT, etc.) and ask:
- "Write a Python script that uses this data to rank players by offensive efficiency"
- "How do I filter this output to only show players averaging 20+ points?"
- "Build a chart showing the top 10 scorers from this dataset"
The structured JSON output makes it easy to plug directly into any AI-assisted analysis workflow.
❓ Frequently Asked Questions
🏀 What seasons does this cover?
Any NBA season from 1950 to the present. Use the season field with the year the season ended (e.g. 2024 = 2023-24 season).
📊 What stat types are available?
Three: per_game (averages), totals (cumulative season stats), and advanced (efficiency metrics like TS%, usage rate).
🔄 Are traded players handled correctly?
Yes. For players traded mid-season, the actor returns only the combined TOT row, avoiding duplicate records.
💾 What formats can I export?
JSON, CSV, Excel, XML - all standard Apify dataset export formats.
🕒 How long does a run take?
Usually 3-8 seconds for a full season. The site is fast and the table loads in a single HTTP request.
🌐 Does it require a login?
No. Basketball Reference's stats tables are fully public.
💳 How is pricing calculated?
Pay per item collected. Only real player records count - errors never charge you.
📅 Can I get current season stats?
Yes. Set season to the current year (e.g. 2025 for the 2024-25 season) to get in-progress stats.
🧱 What does "advanced" stat type include?
Advanced includes efficiency stats: True Shooting % (mapped to fieldGoalPct), 3PA rate (threePointPct), games, and minutes. Scoring stats (points, assists, rebounds) are null for advanced since Basketball Reference doesn't include them in that table.
🔁 Can I run this on a schedule?
Yes. Use Apify Scheduler to trigger weekly runs automatically, keeping your dataset fresh throughout the season.
❌ What happens if data is unavailable for a season?
The actor pushes an error record describing the issue and exits cleanly. No partial data is returned.
🆓 What's included in the free plan?
10 players per run as a preview. Upgrade for full access.
🔌 Integrate with any app
Export and pipe your data to:
Google Sheets - Google BigQuery - PostgreSQL - MySQL - MongoDB - Airtable - Notion - Slack - Discord - Microsoft Excel - Power BI - Tableau - Looker Studio - Zapier - Make - n8n - REST APIs - AWS S3 - Azure Blob Storage - Snowflake - Redshift - dbt
🔗 Recommended Actors
| Actor | Description |
|---|---|
| Transfermarkt Scraper | Football player values and transfer history |
| SofaScore Scraper | Live scores and sports statistics across all leagues |
| Chess.com Scraper | Chess player profiles, ratings, and game history |
💡 Pro Tip: browse the complete ParseForge collection for scrapers across 100+ data sources - sports, finance, jobs, real estate, and more.
This actor is an independent tool and is not affiliated with or endorsed by Sports Reference LLC or Basketball Reference. Data is accessed from publicly available web pages for informational and research purposes.