Flashscore Basketball Box Scores & Team Stats Scraper avatar

Flashscore Basketball Box Scores & Team Stats Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Flashscore Basketball Box Scores & Team Stats Scraper

Flashscore Basketball Box Scores & Team Stats Scraper

Extract basketball match box scores, player statistics, and quarter-by-quarter team performance data from Flashscore. Covers FG%, 3P%, FT%, rebounds, assists, steals, blocks, and 21 per-player stats. No proxy required.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Extractify Labs

Extractify Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

Extract detailed basketball match statistics from Flashscore — 21 per-player box score fields and per-quarter team performance metrics — for any completed or live basketball match. Supply Flashscore match URLs or raw match IDs; the actor returns one structured item per match with a full nested players array and team statistics breakdown.

Data source: Flashscore internal feed endpoints (df_st_1 for team stats, df_psn_1 for player box scores). No proxy required.


What basketball data can you extract?

Player box scores (21 statistics per player)

For every player on both teams, the actor returns:

Stat groupFields
Identityplayer_name, team, team_abbreviation, player_url, nationality, height_cm
Scoringpoints, fg_made, fg_attempted, fg2_made, fg2_attempted, fg3_made, fg3_attempted, ft_made, ft_attempted
Reboundingtotal_rebounds, offensive_rebounds, defensive_rebounds
Playmakingassists, turnovers
Defensesteals, blocks, blocks_against, personal_fouls, technical_fouls
Efficiencyplus_minus, minutes

Per-player fields that are not recorded for a given match (e.g. blocks_against, technical_fouls) are omitted from that player's object — they will not appear as zero or null.

Team statistics (per quarter and match total)

For each period (Match, 1st Quarter, 2nd Quarter, 3rd Quarter, 4th Quarter, OT), the actor returns rows across three categories:

  • Scoring: Field goals %, 3-point field goals %, Free throws %
  • Rebounds: Total rebounds, Offensive rebounds, Defensive rebounds
  • Other: Assists, Blocks, Steals, Turnovers, Personal fouls

Key features

  • 21 player statistics per match — complete box score for all players on both teams
  • Per-quarter team statistics — FG%, 3P%, FT%, rebounds, assists, blocks, steals, turnovers, fouls broken down by quarter and match total
  • Flexible input — supply Flashscore match URLs (startUrls) or raw 8-character match IDs (matchIds), or both
  • Selective data fetching — toggle team stats and player box scores independently; each toggle corresponds to one HTTP request per match
  • No proxy required — direct requests to Flashscore feed APIs; 2 requests per match in the default configuration
  • Covers all basketball leagues — NBA, EuroLeague, national leagues, and any other basketball sport on Flashscore
  • Clean, absent-field output — missing player stats are omitted (not null), compatible with strict dataset schema validation

Limitations

LimitationDetail
Final scores not availablehome_score and away_score are not present in the Flashscore df_st_1 historical feed. This actor does not output a final score field.
Quarter scores not availablequarter_scores is always an empty array ([]). The per-quarter score data (IG÷/IH÷ fields) exists only in live feeds, not in the historical df_st_1 endpoint used by this actor.
Team names require player statshome_team and away_team are sourced from the player stats feed (df_psn_1). If includePlayerStats is disabled, team names will be absent from output.
Height data qualityheight_cm is sourced directly from Flashscore. For some non-NBA leagues the field contains placeholder values (e.g. 102). If the value appears implausible, treat it as not recorded.
Point-in-time snapshotEach run captures data at the moment of execution. The actor does not subscribe to live updates.
Basketball onlySport ID 3 (basketball). For football or other sports, use the relevant Flashscore actor.

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayYes (if matchIds absent)Flashscore basketball match page URLs. The match ID is extracted from the URL path or ?mid= query parameter.
matchIdsarrayYes (if startUrls absent)Raw Flashscore match IDs — 8-character alphanumeric strings (e.g. "OxuYoJH6").
includeTeamStatsbooleanNotrueFetch per-quarter team statistics. Disabling skips the df_st_1 feed request (one fewer HTTP request per match).
includePlayerStatsbooleanNotrueFetch per-player box scores. Disabling skips the df_psn_1 feed request. Also removes home_team and away_team from output.
maxItemsintegerNo(unlimited)Maximum number of matches to process. Leave blank for no limit.

Validation rules:

  • At least one of startUrls or matchIds must be provided and non-empty.
  • At least one of includeTeamStats or includePlayerStats must be true. If both are false, the actor exits immediately with an error.

Supported URL formats

The actor accepts two Flashscore URL formats:

Format A — with ?mid= query parameter:

https://www.flashscore.com/match/basketball/new-york-knicks-WCNO4nbt/philadelphia-76ers-vwRW2QSh/?mid=OxuYoJH6

Match ID extracted from ?mid=OxuYoJH6.

Format B — match ID in trailing path segment:

https://www.flashscore.com/match/basketball/knicks-76ers-OxuYoJH6/

Match ID extracted from the final 8-character path segment.

URLs from which a match ID cannot be extracted are logged as warnings and skipped.

Sample input (both toggles enabled)

{
"matchIds": ["OxuYoJH6", "nRQtuO9m"],
"includeTeamStats": true,
"includePlayerStats": true
}

Sample input (player stats only, from URL)

{
"startUrls": [
"https://www.flashscore.com/match/basketball/new-york-knicks-WCNO4nbt/philadelphia-76ers-vwRW2QSh/?mid=OxuYoJH6"
],
"includeTeamStats": false,
"includePlayerStats": true
}

Output fields

Top-level fields (one item per match)

FieldTypeAlways presentDescription
match_idstringYesFlashscore internal match identifier (8 characters)
match_urlstringYesFlashscore match page URL
home_teamstringOnly when includePlayerStats: trueFull home team name
away_teamstringOnly when includePlayerStats: trueFull away team name
quarter_scoresarrayYesAlways [] — see Limitations
team_statsarrayOnly when includeTeamStats: trueTeam statistics rows (see below)
playersarrayOnly when includePlayerStats: truePlayer box scores (see below)
scraped_atstringYesISO 8601 UTC timestamp

team_stats[] element fields

FieldTypeExampleDescription
periodstring"Match"Period label: "Match", "1st Quarter", "2nd Quarter", "3rd Quarter", "4th Quarter", "OT"
categorystring"Scoring"Stat group: "Scoring", "Rebounds", "Other"
stat_namestring"Field goals %"Stat label from Flashscore feed
home_valuestring"50.63%"Home team value (raw string — may include %)
away_valuestring"45.33%"Away team value

players[] element fields

FieldTypeNotes
teamstringFull team name
team_abbreviationstringE.g. "NYK", "PHI"
player_namestringDisplay name as shown on Flashscore
player_urlstringRelative Flashscore player profile URL
nationalitystringPlayer nationality
height_cmintegerHeight in centimetres; absent if not recorded
pointsintegerPoints scored
total_reboundsintegerTotal rebounds
assistsintegerAssists
minutesstringMinutes played in MM:SS format
fg_madeintegerField goals made
fg_attemptedintegerField goals attempted
fg2_madeinteger2-point field goals made
fg2_attemptedinteger2-point field goals attempted
fg3_madeinteger3-point field goals made
fg3_attemptedinteger3-point field goals attempted
ft_madeintegerFree throws made
ft_attemptedintegerFree throws attempted
plus_minusintegerPlus/minus; absent if not recorded
offensive_reboundsintegerOffensive rebounds; absent if not recorded
defensive_reboundsintegerDefensive rebounds; absent if not recorded
personal_foulsintegerPersonal fouls; absent if not recorded
stealsintegerSteals; absent if not recorded
turnoversintegerTurnovers; absent if not recorded
blocksintegerBlocks; absent if not recorded
blocks_againstintegerBlocks against; absent if not recorded
technical_foulsintegerTechnical fouls; absent if not recorded

Sample output

The following is real output from match OxuYoJH6 (New York Knicks vs Philadelphia 76ers, NBA). Two players shown (10 per team in the actual dataset); team_stats truncated to 4 of ~40 rows.

{
"match_id": "OxuYoJH6",
"match_url": "https://www.flashscore.com/match/basketball/OxuYoJH6/",
"home_team": "New York Knicks",
"away_team": "Philadelphia 76ers",
"quarter_scores": [],
"team_stats": [
{
"period": "Match",
"category": "Scoring",
"stat_name": "Field goals %",
"home_value": "50.63%",
"away_value": "45.33%"
},
{
"period": "Match",
"category": "Scoring",
"stat_name": "3-point field goals %",
"home_value": "25.00%",
"away_value": "43.59%"
},
{
"period": "Match",
"category": "Rebounds",
"stat_name": "Total rebounds",
"home_value": "37",
"away_value": "32"
},
{
"period": "1st Quarter",
"category": "Scoring",
"stat_name": "Field goals %",
"home_value": "57.14%",
"away_value": "38.46%"
}
],
"players": [
{
"team": "New York Knicks",
"team_abbreviation": "NYK",
"player_name": "Anunoby OG.",
"player_url": "/player/anunoby-og-ogugua/jiNJMxEa/",
"nationality": "United Kingdom",
"height_cm": 197,
"points": 24,
"total_rebounds": 5,
"assists": 2,
"minutes": "37:25",
"fg_made": 9,
"fg_attempted": 17,
"fg2_made": 7,
"fg2_attempted": 10,
"fg3_made": 2,
"fg3_attempted": 7,
"ft_made": 4,
"ft_attempted": 4,
"plus_minus": 12,
"offensive_rebounds": 2,
"defensive_rebounds": 3,
"personal_fouls": 3,
"steals": 4,
"blocks": 1
},
{
"team": "Philadelphia 76ers",
"team_abbreviation": "PHI",
"player_name": "Maxey T.",
"player_url": "/player/maxey-tyrese/r9DvnZeC/",
"nationality": "USA",
"height_cm": 200,
"points": 26,
"total_rebounds": 3,
"assists": 6,
"minutes": "46:48",
"fg_made": 9,
"fg_attempted": 23,
"fg2_made": 8,
"fg2_attempted": 17,
"fg3_made": 1,
"fg3_attempted": 6,
"ft_made": 7,
"ft_attempted": 9,
"defensive_rebounds": 3,
"personal_fouls": 1,
"steals": 1,
"turnovers": 6
}
],
"scraped_at": "2026-05-09T18:19:58Z"
}

Use cases

Fantasy sports developers

Build or power fantasy basketball applications with per-match player box score data. The 21-field player output covers every statistic used in standard fantasy scoring systems: points, rebounds, assists, steals, blocks, turnovers, three-pointers made, plus/minus, and more. Fetch historical match data to backfill a season, or run the actor on a schedule after each match to keep your scoring engine current.

Betting analytics

Enrich sports betting models with historical per-quarter team performance metrics. The team_stats output provides field goal %, 3-point %, free throw %, and rebounding breakdowns split by quarter — useful for building pre-match and historical spread models, identifying teams that struggle in specific quarters, or validating line movement against statistical trends.

Sports research and analytics

Conduct season-level analysis by extracting box scores across hundreds of matches. Compare player efficiency across different leagues (NBA, EuroLeague, national leagues), study team-level performance patterns, or track individual player progression across a season. All 21 player stat fields are available; absent fields are omitted (not zero), preserving data fidelity.

Sports journalism and fact-checking

Verify game statistics quickly for match reporting and fact-checking. Query a specific match by ID and retrieve the complete box score in seconds — no browser automation, no scraping overhead. Useful for confirming player scoring lines, team shooting percentages, or quarter-by-quarter performance narratives before publication.


How it works

  1. The actor fetches the Flashscore homepage to extract an authentication token from the core JavaScript bundle.
  2. For each match ID (from startUrls or matchIds), the actor makes up to two direct HTTP requests to Flashscore's internal feed endpoints:
    • df_st_1_{matchId} — team statistics (if includeTeamStats: true)
    • df_psn_1_{matchId} — player box scores (if includePlayerStats: true)
  3. Responses are parsed using a state-machine feed parser (delimiter-separated text format used internally by Flashscore).
  4. One dataset item is emitted per match.

Request budget: 2 fixed requests (homepage + token) + up to 2 per match. A 10-match run with both toggles on = 22 HTTP requests total.

No browser, no proxy, no JavaScript rendering. All data comes from lightweight feed endpoints.


ActorWhat it does
Flashscore Basketball Live MatchesLive basketball scores, current quarter, team lineups — for in-progress matches
Flashscore: Match Listings, Scores & FixturesMulti-sport match listings by date — get match IDs for use with this actor
Flashscore ResultsCompleted match results with scores across all sports
Flashscore Team FixturesUpcoming and past fixtures for a specific team
Flashscore Countries & LeaguesFull directory of sports, countries, and league URLs on Flashscore

FAQ

Q: How do I find a Flashscore basketball match ID?

Navigate to any basketball match page on Flashscore. The match ID is the 8-character alphanumeric segment in the URL, or the value of the ?mid= query parameter. You can also use the Flashscore: Match Listings, Scores & Fixtures actor to retrieve match IDs for a given date and sport.

Q: Why is quarter_scores always an empty array?

Quarter score data (IG÷/IH÷ fields) is only available in Flashscore's live feed endpoints, not in the historical df_st_1 feed used by this actor. The field is always present but always empty. Per-quarter team statistics (FG%, rebounds, etc.) are still available through the team_stats array.

Q: Why are home_score and away_score missing from the output?

Final score data is not available in the df_st_1 or df_psn_1 Flashscore feed endpoints. To get final scores, use the Flashscore: Match Listings, Scores & Fixtures or Flashscore Results actor.

Q: Does this actor cover leagues outside the NBA?

Yes. Any basketball match on Flashscore is supported — NBA, EuroLeague, FIBA competitions, national leagues, and more. Data availability depends on Flashscore's coverage for that league. Matches with no team statistics recorded will return an absent team_stats field; player stats are typically available regardless of league.

Q: What happens if a player stat field is not recorded?

Fields are omitted from that player's object entirely — they will never appear as null or 0. For example, if a player did not record any blocks, the blocks field will not be present in their object at all.

Q: Can I use this for live matches?

The actor fetches a point-in-time snapshot. For matches currently in progress, it will return whatever statistics Flashscore has recorded up to the moment of the request. For continuous live monitoring, schedule the actor to run at regular intervals (e.g. every 5 minutes). For dedicated live match tracking, consider the Flashscore Basketball Live Matches actor.