Basketball Reference Scraper | NBA Stats and History avatar

Basketball Reference Scraper | NBA Stats and History

Pricing

from $19.00 / 1,000 results

Go to Apify Store
Basketball Reference Scraper | NBA Stats and History

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

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

ParseForge Banner

🏀 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

WhoWhy
Sports analystsBuild season-over-season performance comparisons
Fantasy basketball managersTrack player stats across a full season
Data scientistsTrain prediction models on historical NBA data
Sports journalistsPull quick stats for game previews and recaps
Basketball researchersStudy long-term trends in the NBA
DevelopersPower 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

FieldTypeDefaultDescription
seasoninteger2024Season year (e.g. 2024 = 2023-24 season)
statTypeselectper_gameStats type: per_game, totals, or advanced
maxItemsinteger20Max 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:

FieldTypeDescription
👤 playerNamestringFull player name
🏀 teamstringTeam abbreviation (e.g. LAL, BOS)
📍 positionstringPlayer position (PG, SG, SF, PF, C)
🎂 agenumberPlayer age during that season
🔗 playerUrlstringLink to player's page on Basketball Reference
📅 seasonintegerSeason year (e.g. 2024)
📊 statTypestringStat type scraped (per_game/totals/advanced)
🎮 gamesPlayednumberGames played
⏱️ minutesPerGamenumberMinutes per game (or total minutes for totals)
🏆 pointsnumberPoints per game (or total)
🎯 assistsnumberAssists per game (or total)
💪 reboundsnumberTotal rebounds per game (or total)
🛡️ stealsnumberSteals per game (or total)
🧱 blocksnumberBlocks per game (or total)
turnoversnumberTurnovers per game (or total)
🎳 fieldGoalPctnumberField goal percentage (0-1)
3️⃣ threePointPctnumber3-point percentage (0-1)
🆓 freeThrowPctnumberFree throw percentage (0-1)
🕒 scrapedAtstringISO timestamp of when the data was collected
⚠️ errorstringError 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

FeatureBenefit
🏎️ Fast scrapingFull season of 500+ players in under 5 seconds
📅 Historical depthAny NBA season from 1950 to present
3️⃣ Three stat typesPer Game, Totals, and Advanced in one actor
🔢 Clean numbersAll stats as proper floats, not strings
🔄 DeduplicationTraded players appear once (TOT row only)
🌐 No login requiredFully public, no credentials needed
💳 Pay-per-item pricingOnly pay for what you actually collect

📈 How it compares to alternatives

FeatureThis ActorManual CSVNBA API
Historical seasons✅ 75+ yearsPartial
Advanced statsPartial
Automation ready
No auth required
Structured output✅ JSON/CSV/Excel
Per-game + totalsPartialPartial

🚀 How to use

  1. Create a free Apify account (includes $5 credit)
  2. Open the Basketball Reference Scraper actor
  3. Set your season year (e.g. 2024) and statType (per_game, totals, or advanced)
  4. Set maxItems to how many players you want (up to 500+ for full season)
  5. Click Run and wait a few seconds
  6. 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

ActorDescription
Transfermarkt ScraperFootball player values and transfer history
SofaScore ScraperLive scores and sports statistics across all leagues
Chess.com ScraperChess 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.