NBA Scraper avatar

NBA Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
NBA Scraper

NBA Scraper

NBA, WNBA, G League and NCAA men's basketball games from ESPN, with points by quarter, team records, arenas and betting lines. Read up to 120 days per run, or switch to standings, rosters, team schedules or league news.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

deriverge s.r.o.

deriverge s.r.o.

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

8 days ago

Last modified

Share

NBA Scraper reads ESPN's public basketball scoreboard and returns one row per game: both teams with their records, the points of every quarter, the status and clock, the arena, attendance, TV channels and the betting line when ESPN shows one. The same run can add the WNBA, the G League and NCAA men's basketball. Choose leagues and dates, then click Start. Individual player stats are not included; the optional box score holds team totals and an injury list. It costs $1.00 per 1,000 results on the Free plan ($0.50 on Business), and the $5 of monthly credit in Apify's Free plan covers about 5,000 results.

What data does it return?

Each game is one row with these fields. The other modes (standings, rosters, schedules, news) are described further down.

FieldDescription
leaguenba, wnba, gleague or ncaab, the same keys the Leagues field accepts.
gameId, keyESPN's game ID and a stable row key such as espn:nba:401873198, handy for joining runs.
name, shortNameThe matchup as ESPN writes it, visitors first: San Antonio Spurs at Oklahoma City Thunder and SA @ OKC.
startsAtTip-off as an ISO 8601 timestamp in UTC.
status, statusDetail, completedESPN's state (pre, in or post), its wording such as Final or Final/OT, and whether the game is over.
period, clockThe quarter in the NBA, WNBA and G League, the half in college games; overtime continues the count. The clock is ESPN's display value and means something only while status is in.
seasonYear, seasonTypeESPN's season label, which for the NBA and college is the year the season ends (2027 for 2026-27), and the phase: preseason, regular-season, post-season, or showdown-cup for November G League games.
home, awayEach team's id, name, shortName, score, winner, season record such as 64-18, periodScores (points per quarter or half) and logo.
venueArena name, city, state and indoor. country stays empty for basketball; for games abroad ESPN puts the country in state.
attendanceReported crowd, for example 18203, and 0 until ESPN posts a figure.
neutralSitetrue when ESPN lists the game at a neutral court, as for Notre Dame against Villanova in Rome on 1 November 2026.
broadcastsUS TV and streaming channels, for example NBC and Peacock.
oddsThe pregame line: bookmaker, spread, total and both moneylines with prices. It is null once the game starts and on games ESPN has no line for.
urlThe game page on espn.com.

How to scrape NBA scores

  1. Enter the leagues in Leagues: nba, wnba, gleague, ncaab, or several of them. An empty field reads all four.
  2. Leave What to return on Games and results.
  3. Set From date and To date, for example 2026-05-20 and 2026-05-21. Moving dates such as -7 and yesterday keep a saved task pointed at recent games. One run reads up to 120 days, one request per day.
  4. To keep only finished games, set Game status to Finished. For team totals and injury lists, turn on Include box score and injuries, or pick Injury report in What to return for every injured NBA and WNBA player without dates.
  5. Click Start. The rows fill the Output tab, which exports CSV, Excel or JSON; the API tab shows how to fetch the same dataset from code.

A run started through the API takes the same fields:

{
"leagues": ["nba", "wnba"],
"mode": "scoreboard",
"dateFrom": "2026-05-20",
"dateTo": "2026-05-21",
"statusFilter": "final",
"maxItems": 200
}

Example output

One row from a run on 27 September 2026: a playoff game played on the evening of 20 May 2026, which is already 21 May in UTC. The clock of 12:00 is what ESPN leaves on some finished NBA games; others show 0.0.

{
"key": "espn:nba:401873198",
"type": "game",
"sport": "basketball",
"league": "nba",
"leagueName": "National Basketball Association",
"gameId": "401873198",
"name": "San Antonio Spurs at Oklahoma City Thunder",
"shortName": "SA @ OKC",
"round": null,
"startsAt": "2026-05-21T00:30:00.000Z",
"status": "post",
"statusDetail": "Final",
"completed": true,
"period": 4,
"clock": "12:00",
"seasonYear": 2026,
"seasonType": "post-season",
"home": {
"id": "25",
"kind": "team",
"name": "Oklahoma City Thunder",
"shortName": "OKC",
"location": "Oklahoma City",
"score": 122,
"winner": true,
"record": "64-18",
"position": 0,
"homeAway": "home",
"periodScores": [
31,
31,
34,
26
],
"logo": "https://a.espncdn.com/i/teamlogos/nba/500/scoreboard/okc.png"
},
"away": {
"id": "24",
"kind": "team",
"name": "San Antonio Spurs",
"shortName": "SA",
"location": "San Antonio",
"score": 113,
"winner": false,
"record": "62-20",
"position": 1,
"homeAway": "away",
"periodScores": [
31,
20,
37,
25
],
"logo": "https://a.espncdn.com/i/teamlogos/nba/500/scoreboard/sa.png"
},
"venue": {
"name": "Paycom Center",
"city": "Oklahoma City",
"state": "OK",
"country": null,
"indoor": true
},
"attendance": 18203,
"neutralSite": false,
"broadcasts": [
"NBC",
"Peacock"
],
"odds": null,
"url": "https://www.espn.com/nba/game/_/gameId/401873198/spurs-thunder"
}

How much does it cost to scrape NBA data?

Free planStarterScaleBusiness
1,000 results$1.00$0.80$0.65$0.50
Box score and injuries, per 1,000$1.00$0.80$0.65$0.50

You pay only for the events in the table. There is no start fee, and compute time and proxies are included.

An NBA regular season has 1,230 games, so all of them cost $1.23 on the Free plan and $0.615 on Business, and box scores for every one add $1.23. Games removed by Game status, games without a line when the betting filter is on, and unchanged games in the change mode are not charged.

Limits

  • College basketball means men's Division I only, with every game ESPN lists for the day: 32 on 8 March 2026.
  • The standings (League table) always show the current season, one row per team grouped by conference. Before opening night every NBA team stands at 0-0, as on 28 September 2026.
  • For college basketball, Teams lists 362 Division I programs and League table 365. Rosters or schedules without Team identifiers read every program, one request each, so name the schools you need.
  • The Team schedules mode merges the preseason, the regular season and the playoffs, and its rows leave seasonType empty. Boston's 2026 season came back as 93 games on 30 September 2026: 4 preseason, 82 regular-season and 7 playoff games.
  • Betting lines leave the feed at tip-off, so past games have none. NBA preseason games carried no line in our runs; WNBA playoff games had DraftKings lines a day ahead.
  • The injury list of the box score option never held more than five players per team in our runs.
  • Moving dates are counted in UTC. Evening games in the US start after midnight UTC but belong to their US date, so in the late evening today already means the next US day. For a live feed, leave both dates empty.

Box scores and injury lists

With Include box score and injuries on, every game gets a detail object from ESPN's game summary, billed as a separate event. For NBA and college games it holds 25 totals per team, among them fieldGoalsMade-fieldGoalsAttempted (37-84 for Boston at Cleveland on 8 March 2026), threePointFieldGoalPct, totalRebounds, assists, turnovers, pointsInPaint, fastBreakPoints, largestLead and leadChanges. The values are ESPN's display strings. injuries lists players with a status such as Day-To-Day, read at run time, and attendance repeats the crowd figure. headlines and lastPlay were empty on finished games in our runs.

Injury report is a separate mode with one injury row per player for nba and wnba; the G League and college basketball have none. On 11 October 2026, in the NBA preseason, it listed 132 NBA players on all 30 teams, 113 of them Day-To-Day and 19 Out, with Rest as the most common entry in injuryType, and 48 WNBA players during the WNBA postseason, all Out. injurySide and injuryDetail (Left, Tendinitis) are filled when ESPN reports them, and returnDate is ESPN's estimate.

Standings, rosters and news

League table returns one row per team with the conference in group and a stats object: wins, losses, winPercent, gamesBehind, streak, playoffSeed and records such as Home and Road. College rows add vs AP Top 25. Teams lists each team's teamId, abbreviation, color and logo. Team rosters gives one row per player with jersey, position, heightCm and weightKg (ESPN's inches and pounds converted), age, experienceYears and status. League news returns the stories in ESPN's feed with headline, summary, byline, image and link: 6 for the NBA and 15 for the WNBA on 30 September 2026.

FAQ

Game results, schedules and standings are facts, and ESPN shows them on public pages that need no account. The actor reads ESPN's public JSON feed, returns team and game data, and keeps only the headline, summary and link of news stories. Rosters and injury lists name players as ESPN publishes them. You are responsible for how you use the data and for any republishing.

Can I follow games live?

Leave both dates empty, turn on Return only what changed since the last run, give it a Watch name and schedule it every few minutes. Each run returns only new games and games whose score or status moved, and the CHANGES record in the run's key-value store lists what changed. A moved line counts as a change only with Only games with a betting line turned on.

How do WNBA and college games differ in the data?

WNBA quarters last 10 minutes, and finished WNBA games in our runs show a leftover clock of 10:00. College games have two halves, so periodScores has two entries, or three after one overtime, as in IOWA @ NEB (Final/OT) on 8 March 2026.

Support

This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.