Flashscore Team Statistics Scraper - Football & Basketball
Pricing
from $1.00 / 1,000 results
Flashscore Team Statistics Scraper - Football & Basketball
Extract season-level team stats from Flashscore standings: wins, losses, goals, points and more. Supports football and basketball. No proxy required.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Extractify Labs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
19 hours ago
Last modified
Share
Flashscore Team Statistics Scraper — Football & Basketball
Extract season-level aggregated team statistics from Flashscore standings pages. One item per team row, covering matches played, win/loss/draw records, goals or points for/against, league points, and full team identity. Supports both football and basketball. Historical and current-season standings both accepted. No proxy required.
Pricing: $1 per 1,000 results (PPR) — no proxy surcharge.
What does this actor extract?
This actor scrapes Flashscore league standings pages and returns one structured record per team per standings page. Each record includes up to 23 fields split into four categories: league context, team identity, universal statistics (both sports), and sport-specific statistics.
League context
| Field | Type | Example | Notes |
|---|---|---|---|
source_url | string | "https://www.flashscore.com/football/england/premier-league/standings/" | The input URL used |
sport_name | string | "football" / "basketball" | Auto-detected from URL path |
country_name | string | "England" | Each word of URL slug capitalised (e.g. "england" → "England", "usa" → "Usa") |
league_name | string | "Premier League" | Each word of URL slug capitalised (e.g. "premier-league" → "Premier League", "nba" → "Nba") |
tournament_id | string | "KKay4EE8" | Flashscore internal tournament ID |
stage_id | string | "OEEq9Yvp" | Flashscore internal season/stage ID |
season | string | "2024/2025" / "" | Season label; empty for current-season URLs |
group_name | string | "Western Conference" | Present only for grouped/conference competitions |
Team identity
| Field | Type | Example | Notes |
|---|---|---|---|
standing_position | integer | 1 | Rank in this standings table |
team_name | string | "Arsenal" | Display name |
team_id | string | "hA1Zm19f" | Flashscore internal team ID |
team_slug | string | "/team/arsenal/hA1Zm19f/" | Full URL path from feed |
team_logo_url | string | "https://static.flashscore.com/res/image/data/..." | Logo image URL; empty string if absent |
Statistics — both sports
| Field | Type | Example | Notes |
|---|---|---|---|
matches_played | integer | 36 | Games completed in the season |
wins | integer | 24 | Wins |
losses | integer | 5 | Losses |
points | integer | 79 | League table points; absent for basketball leagues that rank by win% (e.g. NBA) |
Statistics — football only
| Field | Type | Example | Notes |
|---|---|---|---|
draws | integer | 7 | Draws; absent for basketball |
goals_for | integer | 68 | Goals scored |
goals_against | integer | 26 | Goals conceded |
goal_difference | integer | 42 | Computed: goals_for − goals_against |
Statistics — basketball only
| Field | Type | Example | Notes |
|---|---|---|---|
points_for | integer | 112 | Total points scored |
points_against | integer | 104 | Total points conceded |
Supported sports
Football and basketball. Both are detected automatically from the Flashscore URL path — no sport parameter needed.
- Football: All fields active, including
draws,goals_for,goals_against,goal_difference. - Basketball:
draws,goals_for,goals_against,goal_differenceare absent.points_forandpoints_againstare present.points(league table points) is absent for leagues that rank by win percentage (NBA) — the field is present for basketball leagues that do use a points table.
Any Flashscore standings page URL works for either sport.
Input parameters
startUrls — required
An array of Flashscore league standings page URLs. Each URL must contain /standings/ in the path.
| Property | Value |
|---|---|
| Type | array of URLs |
| Required | Yes |
| Supported formats | String URL or { "url": "..." } object |
Football examples:
https://www.flashscore.com/football/england/premier-league/standings/https://www.flashscore.com/football/spain/laliga/standings/https://www.flashscore.com/football/europe/champions-league/standings/
Basketball examples:
https://www.flashscore.com/basketball/usa/nba/standings/https://www.flashscore.com/basketball/europe/euroleague/standings/
Historical season example (stageId encoded in URL):
https://www.flashscore.com/football/england/premier-league/OEEq9Yvp/standings/overall/
You can mix football and basketball URLs in a single run.
maxItems — optional
Global cap on total output items across all input URLs combined. Useful for testing or cost control.
| Property | Value |
|---|---|
| Type | integer |
| Required | No |
| Default | Unlimited |
Leave unset to extract all teams from all input URLs.
Sample output
Football — Premier League team
{"source_url": "https://www.flashscore.com/football/england/premier-league/standings/","sport_name": "football","country_name": "England","league_name": "Premier League","tournament_id": "KKay4EE8","stage_id": "OEEq9Yvp","season": "","standing_position": 1,"team_name": "Arsenal","team_id": "hA1Zm19f","team_slug": "/team/arsenal/hA1Zm19f/","team_logo_url": "https://static.flashscore.com/res/image/data/hA1Zm19f_h.png","matches_played": 36,"wins": 24,"draws": 7,"losses": 5,"goals_for": 68,"goals_against": 26,"goal_difference": 42,"points": 79}
Basketball — NBA team (Eastern Conference)
{"source_url": "https://www.flashscore.com/basketball/usa/nba/standings/","sport_name": "basketball","country_name": "Usa","league_name": "Nba","tournament_id": "OIo52B5b","stage_id": "MHnOejlI","season": "","group_name": "Eastern Conference","standing_position": 1,"team_name": "Boston Celtics","team_id": "IvBGpHs5","team_slug": "/team/boston-celtics/IvBGpHs5/","team_logo_url": "https://static.flashscore.com/res/image/data/IvBGpHs5_h.png","matches_played": 82,"wins": 61,"losses": 21,"points_for": 9184,"points_against": 8750}
How to use this actor
- Open the actor on the Apify Store.
- Find the standings page for your league on Flashscore. The URL must contain
/standings/. - Paste one or more standings URLs into the
startUrlsfield. - (Optional) Set
maxItemsto limit results for testing. - Click Start and download results as JSON, CSV, or XLSX when the run completes.
Sample input:
{"startUrls": ["https://www.flashscore.com/football/england/premier-league/standings/","https://www.flashscore.com/basketball/usa/nba/standings/"],"maxItems": 100}
Key features
- Football and basketball in one actor — no need to switch tools or manage two separate actors
- Historical and current seasons — any Flashscore standings URL works, including season-specific URLs with stageId encoded in the path
- Auto sport detection — sport is detected from the URL path; no
sportparameter required - Conference and division grouping —
group_nameis populated for grouped competitions (NBA conferences, Champions League groups, etc.) - No proxy required — direct requests with a static
x-fsignheader; you pay only for compute - Efficient feed requests — only two HTTP requests per standings URL (HTML page + one feed call); no unnecessary page loads
- Hard item cap —
maxItemsis enforced exactly, even when a single feed returns many teams at once
Use cases
Fantasy sports analytics: Pull current-season standings for every league in your fantasy platform. Compare teams across multiple leagues and seasons to identify consistent performers. Schedule weekly runs to keep season totals up to date.
Betting research: Access historical win/loss/draw records and goal tallies for any football league back through multiple seasons. Combine with match-level data to build form-based predictive models.
Data journalism: Extract multi-season standings for any country's top division and compare year-over-year performance trends for a specific team or cluster of teams.
Sports statistics databases: Populate or update a team statistics database for football leagues or basketball competitions. The consistent field schema makes it straightforward to normalise data across leagues.
Academic sports research: Gather season-level outcome data for multiple leagues simultaneously to support regression analysis, ranking systems, or competitive balance research.
Pricing and cost
This actor is priced at $1 per 1,000 results (Pay-Per-Result). One result equals one team row from one standings page.
| League | Teams | Items per run |
|---|---|---|
| English Premier League | 20 teams | ~20 items |
| NBA (all conferences) | 30 teams | ~60 items (teams appear once per conference group and once per division group) |
| 5 leagues in one run | 20 teams each | ~100 items |
No proxy costs are added on top — the actor fetches directly from Flashscore without residential or datacenter proxies.
What this actor does not cover
Pre-aggregated data only. This actor reads Flashscore's standings feed, which contains only the statistics that Flashscore pre-calculates at the season level. The following fields are not available in Flashscore standings feeds and cannot be extracted:
- Clean sheets — not present in the standings feed; requires match-level aggregation
- Average possession — not present in the standings feed; requires match-level data
- Shots per match — not present in the standings feed; requires match-level data
- Player statistics — this actor covers team-level data only
- Match odds or bookmaker lines — not provided by Flashscore standings pages
- Live match scores — this is a season-aggregate actor; see related actors below for live data
If you need match-level statistics, see the related actors section below.
FAQ
Does this actor support historical seasons?
Yes. Flashscore encodes season information in the URL's stageId segment. To access a historical season, navigate to that season on Flashscore, copy the URL (which will contain a stageId like OEEq9Yvp between the league name and /standings/), and provide it in startUrls. The actor extracts and outputs the stage_id and season fields so you can identify which season each item belongs to.
Why is the season field empty for some items?
Current-season URLs (e.g. .../premier-league/standings/) do not include a year suffix in the URL path, so the season field is an empty string "". Historical season URLs include a year slug (e.g. .../premier-league-24-25/standings/) from which the actor derives a label like "2024/2025". To get a populated season field, use a historical season URL from the Flashscore interface.
Can I run football and basketball URLs in the same job?
Yes. startUrls accepts any mix of football and basketball standings URLs. The actor auto-detects the sport from each URL and applies the correct field set. Football items include draws, goals_for, goals_against, goal_difference; basketball items include points_for, points_against. These sport-specific fields are simply absent (not null) in items from the other sport.
Why are clean sheets, possession, and shots not available?
Flashscore's standings feeds contain only pre-aggregated season totals that appear in the visible standings table. Clean sheets, possession, and shots are not part of the standings table and are not available in the feed. Extracting these would require fetching and aggregating individual match statistics — a different data source entirely.
Does this actor require a proxy?
No. Flashscore standings pages and their feeds are accessible with a static x-fsign request header. No residential or datacenter proxy is needed. You are not charged for proxy bandwidth.
Why is the points field absent for NBA teams?
The NBA ranks teams by win percentage rather than accumulated points, so the NBA standings feed does not include a points field. The points field is absent from NBA output items. For basketball leagues that do use a points table (e.g. EuroLeague), the field is present.
What does group_name mean?
Some competitions divide teams into groups, conferences, or divisions for their standings tables. When the standings page shows multiple groups (e.g. NBA Eastern/Western conferences, or a Champions League group stage), each team item includes a group_name field identifying which group that row belongs to. For single-table competitions like the Premier League, group_name is absent.
What does team_slug contain?
The team_slug field contains the full URL path segment as returned by the Flashscore feed — for example /team/arsenal/hA1Zm19f/. This includes the team name component and the team ID. It is not a bare short slug. You can use it to construct a full Flashscore team URL: https://www.flashscore.com + team_slug.
Related actors
- Flashscore: Match Listings, Scores & Fixtures — Match-level results and live scores for football and basketball
- Flashscore: Basketball Live Matches — Live and in-progress basketball match data
- Flashscore: Basketball Match Statistics — Per-match statistical breakdown for basketball games
- Flashscore: Team Fixtures — Upcoming and past fixtures for a specific team