Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds
Pricing
from $2.99 / 1,000 results
Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds
Extract scores, fixtures, player box scores and stats, lineups, xG, transfers, and 1X2 odds from Bet365. 16 actions across 9 sports and 2600+ competitions. Team and player names auto-resolved, no IDs needed. Up to 46 stat types per match, odds in 3 formats, full season history. Free to try.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
2
Bookmarked
185
Total users
34
Monthly active users
2 days ago
Last modified
Categories
Share
From Zen Studio, creators of Bet365 Odds, Bet365 Player Props and Flashscore Tennis. Sports data, match analysis and betting research from the same team.
Why choose Bet365 Sports Data?
- Build a season dataset, not just today's scoreboard. Collect full-season fixtures and results, then explore team schedules and player game histories. Choose the current season or available previous seasons, across 9 sports.
- Go deeper into each match. Football match detail supports up to 46 stat types, including expected goals (xG), possession and detailed passing. Collect lineups, player heatmaps, missing-player reasons, match events, standings and venue details where published.
- Add the player and transfer picture. Player profiles include market value, career stats and injury status with an expected return where available. Transfer records add fees, currencies, previous and new clubs, and linked news articles. Search teams and players by name.
Preview a Premier League season
{"action": "fixtures","competitionIds": "premier-league","season": "Last season","maxResults": 20}
Open actor input to choose a competition and season. This starts with 20 fixtures. Raise maxResults to cover the available season schedule. Export JSON, CSV or Excel.
For the detailed stats and lineups, choose gameDetail and pass gameId values from the fixture output in gameIds. Choose playerProfile for player and injury details, or transfers for transfer fees. Each action collects its own dataset; fixture rows do not include all these extras.
Historical coverage and optional fields vary by sport and competition. Free Apify accounts can try 5 lifetime runs, up to 50 results each.
| Zen Studio · Sports Data | ||||
You are here | Match odds & futures | Scores & periods | Lines & last 5 | Tennis stats & odds |
Copy to your AI assistant
Help me use zen-studio/bet365-sports-data, a batch Actor on Apify. Read https://apify.com/zen-studio/bet365-sports-data.md for documentation, input schema, pricing and limits. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
Key inputs: action (string, required), competitionIds (string), gameIds (array). Pricing: $2.99/1k results, item-scraped $0.00299/item.
Also available as an MCP server: add zen-studio/bet365-sports-data for natural language access.
Output Example
|
Use Cases
- Full season match data: all 380 Premier League games or 850 NBA games for the current season; switch to "Last season" / "2 seasons ago" for history (football leagues have up to 3 seasons).
- Cheap recurring refresh:
scoreswithstartDateFrom/startDateTopulls just the next two weeks of a league (~20 items vs a full 380-game season) to catch postponements, kickoff changes and results. - Player game logs: game-by-game stats for any player. Football: goals, assists, minutes, clean sheets. Basketball: full box scores (points, rebounds, assists, FG%, 3PT, blocks, steals).
- Squad rankings: rank a team's players by goals, xG, assists, tackles, clean sheets, or any of 12 stat types within a competition.
- Betting analysis: 1X2 odds with opening and current prices, head-to-head trends, and daily tips with tipster ROI and win rates.
- Multi-sport coverage: football, basketball, tennis, hockey, American football, baseball, rugby, handball, volleyball. 2600+ competitions from Premier League to NBA to ATP.
- Transfer tracker: latest player transfers with fees and cited news, filtered by competition.
Actions
Scores & Games
| Action | Description | Required Input |
|---|---|---|
scores | Games by competition (paginated; supports historical pulls and a startDateFrom/startDateTo date window) | competitionIds |
fixtures | Full season fixtures with results | competitionIds |
gameDetail | Complete game data: events, lineups, per-sport stats (up to 46 for football), player box scores, venue, officials | gameIds |
boxScores | One row per player per finished game: points, rebounds and assists, passing and rushing yards, hits and strikeouts, saves, football goals, shots and cards, and more. Built for settling player props | competitionIds or gameIds |
teamGames | Team's recent and upcoming matches | competitorId |
Players
| Action | Description | Required Input |
|---|---|---|
playerProfile | Player profiles with market value, career stats, injury status, photo (batch supported) | athleteIds |
playerGames | Player match history with per-game stats | athleteIds (first) |
squadStats | Squad ranked by one or more stat types (goals, xG, assists, cards, etc.) | competitorId, competitionIds (first), statType or statTypes |
teamStats | Team player stats overview across all stat categories | competitorId |
Discovery
| Action | Description | Required Input |
|---|---|---|
popular | Top entities for a sport. Football: athletes, teams & competitions; other sports: top competitions | sportType |
search | Find players, teams, and competitions by name | searchQuery |
competitions | Full competition catalog (2600+) | sportType |
transfers | Recent player transfers with fees and news | competitionIds (first) |
Betting
| Action | Description | Required Input |
|---|---|---|
odds | 1X2 match odds from Bet365 (decimal, fractional, American) | competitionIds |
trends | Betting trends and head-to-head insights with recommendations | gameIds (first) |
dailyTip | Daily betting tips: recommendation, odds (3 formats), outcome, linked game, plus the tipster's win rate and ROI | None |
Example Inputs
Premier League scores (last 50 games):
{ "action": "scores", "competitionIds": "premier-league", "maxResults": 50 }
Several competitions, just the next two weeks:
{ "action": "scores", "competitionIds": "premier-league, champions-league, bundesliga", "startDateFrom": "2026-06-25", "startDateTo": "2026-07-09" }
Yesterday's NBA box scores, one row per player:
{ "action": "boxScores", "competitionIds": "nba", "startDateFrom": "2026-10-10", "startDateTo": "2026-10-10" }
Player profiles by name (batch):
{ "action": "playerProfile", "athleteIds": ["Mbappe", "Haaland", "Salah"] }
Real Madrid squad ranked by several stats at once:
{ "action": "squadStats", "competitorId": "Real Madrid", "competitionIds": "laliga", "statTypes": ["Goals", "Assists", "Expected Goals (xG)"] }
Full game detail:
{ "action": "gameDetail", "gameIds": ["4679449"] }
Top football competitions (one cheap call):
{ "action": "popular", "sportType": "Football", "entityTypes": ["competition"] }
Output
Every action is documented below, and the complete field set always lands in your dataset: the examples show representative shapes, not the full set.
| Action | Returns (key fields) |
|---|---|
scores / fixtures / teamGames | gameId, teams (+ logos, codes, ids), score, halftime, periodScores, status, minute, result, venue, attendance, fanVote, odds (optional), dataAvailability, webUrl |
gameDetail | everything in scores plus events, lineups (formations + players), per-sport statistics (up to 46 football), venue, officials, coaches, missingPlayers, standings, headToHead, topPerformers, videos, series |
playerProfile | name, age, sport, nationality, country of birth, club, position, height/weight, marketValue, injuryStatus, seasonStats (per competition and team, with phase such as Regular Season), careerStats (the summary entry as published), photo |
playerGames | per-game line: teams, the player's team, score, competition, season, minutes + every sport stat under its published name (hockey, American football and baseball included), didNotPlayReason |
squadStats | ranked players: name, team, country, plus each requested stat (Goals / xG / Assists / …) |
teamStats | top players per stat category across the squad, with the competition |
search | athletes / teams / competitions by name, with resolved countryName / sportName, market value, popularity |
popular | top athletes / teams / competitions for a sport, resolved names + season metadata |
competitions | catalog: name, slug, countryName, sport, gender, season dates, popularity |
transfers | player, from/to teams, fee + currency, formation position, news articles, likes |
odds | 1X2 odds per game (decimal / fractional / American, opening + current) |
trends | per-team betting trends with recommendations + structured betLines |
dailyTip | tipster picks: recommendation, odds (3 formats), outcome (won or lost), linked game and competition, win rate, ROI, tips, wins, losses, voids, units |
Match data (scores, fixtures, teamGames)
{"gameId": 4452851,"sportType": "Football","competition": "Premier League","competitionId": 7,"season": 131,"startTime": "2026-03-14T15:00:00Z","status": "finished","homeTeam": "Sunderland","homeTeamId": 117,"homeTeamCode": "SUN","homeTeamLogo": "https://cdn.example.com/.../Competitors/117","awayTeam": "Brighton","awayTeamCode": "BHA","homeScore": 0,"awayScore": 1,"homeHalftimeScore": 0,"awayHalftimeScore": 0,"result": "away","attendance": 45497,"venue": { "id": 9007, "name": "Stadium of Light" },"dataAvailability": { "lineups": true, "statistics": true, "standings": true, "odds": true },"fanVote": { "home": 3603, "draw": 1629, "away": 3021 },"odds": {"bookmaker": "Bet365", "settled": true,"homeWinOdds": 3.5, "homeWinFractional": "5/2", "homeWinAmerican": "+250", "homeWinOpeningOdds": 3.3,"drawOdds": 3.6, "awayWinOdds": 2.05, "awayWinWon": true}}
Add "includeOdds": true to attach the odds block to every game. The standalone odds action returns the same odds block per game.
Per-period scores: every sport
Each match row carries periodScores (per-set / per-quarter / per-period, with the winner). homeHalftimeScore/awayHalftimeScore are football-only; individual sports also include homeRanking/awayRanking and recent form.
// Tennis (sets, with a set-2 tie-break)"periodScores": [{ "name": "Set 1", "shortName": "S1", "home": 3, "away": 6, "winner": "away" },{ "name": "Set 2", "shortName": "S2", "home": 7, "away": 6, "winner": "home", "tieBreak": { "home": 7, "away": 2 } },{ "name": "Set 3", "shortName": "S3", "home": 5, "away": 7, "winner": "away" }]// Basketball (quarters): Q1 23-22, Q2 31-39, Q3 25-26, Q4 22-28
Player box scores (boxScores)
One row per player per finished game. Basketball, ice hockey, baseball and American football carry the full box score; a stat from a named table is prefixed with it (Passing / Passing Yards, and Batting / Strikeouts next to Pitching / Strikeouts). Football rows carry the player's match stats: minutes, goals, assists, shots and shots on target, passes, tackles, duels, expected goals, yellow and red cards, and more. A count the player did not record (shots on target, tackles) is left out: read it as 0. A player listed with empty stats did not play, and that row is free.
{"gameId": 4814039,"competition": "NBA","homeTeam": "Chicago Bulls","awayTeam": "Phoenix Suns","teamName": "Chicago Bulls","player": "Caleb Wilson","athleteId": 225955,"group": "Starters","stats": {"Minutes": "29:06", "Points": 15, "Rebounds": 4, "Assists": 2, "Field Goals": "6/16", "3 Pointers": "0/4", "Plus/Minus": -3}}
A football row, from the same action on the Premier League:
{"gameId": 4742051,"competition": "Premier League","homeTeam": "Arsenal","awayTeam": "Leeds United","teamName": "Arsenal","player": "Riccardo Calafiori","athleteId": 79301,"group": "Starters","stats": {"Minutes": 81, "Goals": 1, "Assists": 0, "Total Shots": 2, "Shots On Target": 1, "Passes Completed": "20/24 (83%)", "Expected Goals": 0.55, "Yellow Cards": 0, "Red Cards": 0}}
gameDetail carries the same numbers per game under boxScore, table by table, with team totals.
Game detail (gameDetail)
{"gameId": 4679449,"competition": "UEFA Champions League","homeTeam": "FC Barcelona","awayTeam": "Newcastle United","homeScore": 7, "awayScore": 2,"status": "finished", "result": "home","aggregateScore": [8.0, 3.0],"events": [{ "type": "Goal", "subType": "Open Play", "minute": 6.0, "minuteDisplay": "6'", "player": "Raphinha", "team": "home", "assistPlayers": ["Fermín López"] }// ... every goal and card],"lineups": {"home": { "formation": "4-2-3-1", "players": [ { "name": "Joan García", "jerseyNumber": 13, "position": 1, "isStarter": false, "age": 24, "rating": 6.1 } /* 23 per team */ ] },"away": { "formation": "4-3-3", "players": [ /* ... */ ] }},"statistics": {"possession": { "home": "64%", "away": "36%", "homePct": 0.64, "awayPct": 0.36 },"totalShots": { "home": "22", "away": "7" },"expectedGoals": { "home": "4.85", "away": "1.40" },"expectedAssists": { "home": "3.90", "away": "1.10" },"bigChancesCreated": { "home": "9", "away": "2" },"passesCompleted": { "home": "612", "away": "320" }// ... up to 46 football stat types},"venue": { "id": 122, "name": "Spotify Camp Nou", "country": "Spain", "capacity": 105000, "surface": "grass", "location": { "lat": 2.12, "lng": 41.38 } },"officials": [{ "name": "Francois Letexier", "role": "Referee" }],"coaches": [{ "name": "Hans-Dieter Flick", "team": "home" }],"missingPlayers": [{ "name": "Jules Koundé", "team": "home", "reason": "Thigh injury" }],"standings": [ /* full table: position, played, won/draw/lost, GF/GA, points */ ]}
statistics keys are labeled per sport. Football is shown above; basketball returns shooting splits, rebounds, fast-break and points-in-the-paint; tennis returns serve/return splits and winners / unforced errors by shot type; ice hockey, volleyball and rugby are labeled too. Any stat without a name is returned as stat<N>, so nothing is dropped.
Player profile (playerProfile)
{"athleteId": 39789,"name": "Raphinha","age": 29,"nationality": "Brazil","club": "FC Barcelona","position": "Attacker","marketValue": 85000000,"marketValueCurrency": "EUR","nationalTeamId": 2379,"injuryStatus": { "injuryType": "Hamstring Injury", "expectedReturn": "Early July 2026" },"seasonStats": [{ "competition": "LaLiga", "competitionId": 11, "Goals": "11", "Assists": "3", "Appearances": "19", "Time Played": "1210" }// ... more competitions (club + national team kept separately)],"careerStats": { "Goals": "120", "Assists": "75" },"popularityRank": 175}
Transfers (transfers)
{"transferId": 354519,"playerName": "Raúl Jiménez","formationPosition": "Centre Forward","playerCountry": "Mexico","origin": "Fulham","target": "Everton","time": "2026-03-21T19:38:00Z","price": "Terms Agreed","priceValue": 0,"priceCurrency": "GBP","likes": 10857,"dislikes": 4543,"articles": [{ "source": "Fabrizio Romano", "url": "https://x.com/FabrizioRomano/status/...", "publishTime": "2026-06-09T09:19:00Z" }],"status": "Rumor"}
Betting trends (trends)
{"category": "Team Trends","competitors": ["Barcelona"],"text": "Barcelona won - 5/6 Last Matches","recommendation": "Barcelona to win","recommendations": ["Barcelona to win"],"betLines": [{ "recommendation": "Barcelona to win", "lineTypeId": 1, "param": null, "optionNum": 1, "competitorId": 104 }],"gameId": 4679449, "homeTeam": "Barcelona", "awayTeam": "Newcastle Utd"}
Quick Reference
Competition Slugs
Use these in competitionIds. Comma-separate for multiple.
| Slug | Competition | Slug | Competition |
|---|---|---|---|
premier-league | Premier League | champions-league | UEFA Champions League |
laliga | LaLiga | europa-league | UEFA Europa League |
bundesliga | Bundesliga | fa-cup | FA Cup |
serie-a | Serie A | copa-del-rey | Copa del Rey |
ligue-1 | Ligue 1 | nba | NBA |
nfl | NFL | nhl | NHL |
70+ slugs built in. Run the competitions action to discover all 2600+.
Teams and Players
Type names directly, no IDs needed:
- Teams:
"Real Madrid","Arsenal","Inter Miami": auto-resolved (football teams prioritized) - Players:
"Mbappe","Haaland","Salah": auto-resolved to the best match - Numeric IDs also accepted
Input Reference
| Field | Type | Used By | Description |
|---|---|---|---|
action | enum | All | Which action to run (required) |
competitionIds | string | scores, fixtures, odds (all), squadStats, transfers (first) | Competition slugs, comma-separated. E.g. premier-league, champions-league |
season | enum | fixtures | Current season, Last season, or 2 seasons ago |
startDateFrom | string | scores | Only games on/after this date (YYYY-MM-DD). Cheap date-window refresh instead of a full season. |
startDateTo | string | scores | Only games on/before this date (YYYY-MM-DD). Up to a 30-day range; set just one bound for a 14-day window. |
gameIds | string[] | gameDetail (all), trends (first) | Game IDs (from scores or fixtures output) |
competitorId | string | teamGames, squadStats, teamStats | Team name or ID. E.g. Real Madrid or 131 |
athleteIds | string[] | playerProfile (all), playerGames (first) | Player names or IDs. E.g. ["Mbappe", "Haaland"] |
statType | enum | squadStats | Goals, Assists, Expected Goals (xG), Rating, etc. |
statTypes | string[] | squadStats | Several stats at once (e.g. Goals, Assists, xG), all returned per player in one run. Overrides statType. |
searchQuery | string | search | Search by name (teams, competitions) |
sportType | enum | popular, competitions | Football, Basketball, Tennis, etc. |
entityTypes | array | popular | Limit to athlete, team, competition. Empty = all. E.g. ["competition"] for top leagues. |
maxResults | int | All | Max items to return (default: 500) |
includeOdds | bool | scores, teamGames | Add Bet365 1X2 odds |
language | enum | All | English, Deutsch, Español, Français, etc. |
Pricing
Pay per dataset item. No subscriptions. $2.99 per 1,000 results. Free to try: the first 5 runs are free (up to 50 results each). In boxScores, rows for players who did not play are free.
| Use Case | Items | Cost |
|---|---|---|
| Full EPL season fixtures | 380 | $1.14 |
| 3 player profiles | 3 | $0.01 |
| 50 historical EPL scores | 50 | $0.15 |
| Squad goals ranking (LaLiga team) | ~20 | $0.06 |
| Popular competitions (Basketball, Tennis, etc.) | 20 | $0.06 |
| One NBA night's box scores (4 games) | 146 rows, 124 who played | $0.37 |
Billing is per result, so the rich extra fields (per-sport stats, resolved names, venues, trends) don't add to your cost.
FAQ
Do I need to know any IDs?
No. Competitions use slugs (premier-league), teams and players accept names (Real Madrid, Mbappe), and sports/stats are dropdowns. Country, team and source come back as resolved names too. Only game IDs (from scores output) are numeric, since games have no names.
Can I pull historical data?
Yes. scores paginates backwards through history (set maxResults: 5000 for multiple seasons), and fixtures returns the full current season in one call. Use startDateFrom/startDateTo for a cheap date window.
What's the difference between this and the Live Scores actor? This actor is for batch pulls: historical data, player profiles, transfers, full seasons. The Live Scores actor is a real-time Standby API for polling live games every 30-60 seconds.
What sports are covered? Football (813 competitions), Basketball (215), Tennis (1105), Hockey (47), Handball (38), American Football (15), Baseball (24), Volleyball (323), Rugby (35).
More Zen Studio scrapers for sports betting
🏟️ Sportsbook odds
Action Network
FanDuel
DraftKings
BetMGM
Bet365
- Bet365 Real-Time Odds API
- Bet365 Live Scores API (
zen-studio/bet365-live-scores)
🎯 Daily fantasy & player props
Player Props Aggregator
- Player Props Line Shopping (
zen-studio/player-props-aggregator)
- Player Props Line Shopping (
PrizePicks
- PrizePicks Player Props Scraper (
zen-studio/prizepicks-player-props)
- PrizePicks Player Props Scraper (
Underdog Fantasy
- Underdog Fantasy Player Props API (
zen-studio/underdog-player-props)
- Underdog Fantasy Player Props API (
Sleeper
- Sleeper Player Props (
zen-studio/sleeper-player-props)
- Sleeper Player Props (
DraftKings Pick6
- DraftKings Pick6 Player Props (
zen-studio/draftkings-pick6-player-props)
- DraftKings Pick6 Player Props (
Bet365
- Bet365 Player Props API (
zen-studio/bet365-player-props)
- Bet365 Player Props API (
🎾 Live scores & match data
Tennis Abstract
- Tennis Abstract Scraper (
zen-studio/tennis-abstract-scraper)
- Tennis Abstract Scraper (
Flashscore
- Flashscore Tennis Scraper & API (
zen-studio/flashscore-tennis-api)
- Flashscore Tennis Scraper & API (
SofaScore
- SofaScore Scraper (
zen-studio/sofascore-scraper) Full directory: Zen Studio on Apify
- SofaScore Scraper (
Support
Bug reports, feature requests, or questions? Open an issue in the Issues tab.
16 actions. 9 sports. 2600+ competitions. Scores, players, stats, transfers, odds, trends.
