Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds avatar

Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds

Bet365 Sports Data Scraper - Scores, Fixtures, Stats, Odds

Extract scores, fixtures, player stats, lineups, xG, transfers, and 1X2 odds from Bet365. 15 actions across 13 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. JSON/CSV export, free to try.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

2

Bookmarked

134

Total users

7

Monthly active users

2 days ago

Last modified

Share

Full-season data. Up to 46 match stats. xG. Lineups. Injuries. Transfer fees.

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 this actor?

  • 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 13 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.

Explore sports data

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
Sports Data Sports Data
You are here
Bet365 Odds Bet365 Odds
Match odds & futures
Live Scores Live Scores
Scores & periods
Player Props Player Props
Lines & last 5
Flashscore Flashscore
Tennis stats & odds

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start building with this API.

zen-studio/bet365-sports-data on Apify. Call: ApifyClient("TOKEN").actor("zen-studio/bet365-sports-data").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: action (string, required), competitionIds (string), gameIds (array). Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/zen-studio~bet365-sports-data/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Pricing: $2.99/1k results, item-scraped $0.00299/item. Get token: https://console.apify.com/account/integrations To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: 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.

Also available as an MCP server — add zen-studio/bet365-sports-data for natural language access.

 

Output Example

Bet365 Sports Data Scraper — Champions League gameDetail with events, lineups, statistics, and venue

 

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 — scores with startDateFrom/startDateTo pulls 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

ActionDescriptionRequired Input
scoresGames by competition (paginated; supports historical pulls and a startDateFrom/startDateTo date window)competitionIds
fixturesFull season fixtures with resultscompetitionIds
gameDetailComplete game data: events, lineups, per-sport stats (up to 46 for football), venue, officialsgameIds
teamGamesTeam's recent and upcoming matchescompetitorId

Players

ActionDescriptionRequired Input
playerProfilePlayer profiles with market value, career stats, injury status, photo (batch supported)athleteIds
playerGamesPlayer match history with per-game statsathleteIds (first)
squadStatsSquad ranked by one or more stat types (goals, xG, assists, cards, etc.)competitorId, competitionIds (first), statType or statTypes
teamStatsTeam player stats overview across all stat categoriescompetitorId

Discovery

ActionDescriptionRequired Input
popularTop entities for a sport — Football: athletes, teams & competitions; other sports: top competitionssportType
searchFind players, teams, and competitions by namesearchQuery
competitionsFull competition catalog (2600+)sportType
transfersRecent player transfers with fees and newscompetitionIds (first)

Betting

ActionDescriptionRequired Input
odds1X2 match odds from Bet365 (decimal, fractional, American)competitionIds
trendsBetting trends and head-to-head insights with recommendationsgameIds (first)
dailyTipDaily betting tips: recommendation, odds (3 formats), outcome, linked game, plus the tipster's win rate and ROINone

 

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" }

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.

ActionReturns (key fields)
scores / fixtures / teamGamesgameId, teams (+ logos, codes, ids), score, halftime, periodScores, status, minute, result, venue, attendance, fanVote, odds (optional), dataAvailability, webUrl
gameDetaileverything in scores plus events, lineups (formations + players), per-sport statistics (up to 46 football), venue, officials, coaches, missingPlayers, standings, headToHead, topPerformers, videos, series
playerProfilename, age, nationality, club, position, height/weight, marketValue, injuryStatus, seasonStats (per competition), careerStats, photo
playerGamesper-game line: teams, score, competition, season, minutes + sport stats, didNotPlayReason
squadStatsranked players: name, team, country, plus each requested stat (Goals / xG / Assists / …)
teamStatstop players per stat category across the squad
searchathletes / teams / competitions by name, with resolved countryName / sportName, market value, popularity
populartop athletes / teams / competitions for a sport, resolved names + season metadata
competitionscatalog: name, slug, countryName, sport, gender, season dates, popularity
transfersplayer, from/to teams, fee + currency, formation position, news articles, likes
odds1X2 odds per game (decimal / fractional / American, opening + current)
trendsper-team betting trends with recommendations + structured betLines
dailyTiptipster picks: recommendation, odds (3 formats), outcome, linked game, win rate, ROI

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

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 the source does not 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"
}
{
"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.

SlugCompetitionSlugCompetition
premier-leaguePremier Leaguechampions-leagueUEFA Champions League
laligaLaLigaeuropa-leagueUEFA Europa League
bundesligaBundesligafa-cupFA Cup
serie-aSerie Acopa-del-reyCopa del Rey
ligue-1Ligue 1nbaNBA
nflNFLnhlNHL

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

FieldTypeUsed ByDescription
actionenumAllWhich action to run (required)
competitionIdsstringscores, fixtures, odds (all), squadStats, transfers (first)Competition slugs, comma-separated. E.g. premier-league, champions-league
seasonenumfixturesCurrent season, Last season, or 2 seasons ago
startDateFromstringscoresOnly games on/after this date (YYYY-MM-DD). Cheap date-window refresh instead of a full season.
startDateTostringscoresOnly games on/before this date (YYYY-MM-DD). Up to a 30-day range; set just one bound for a 14-day window.
gameIdsstring[]gameDetail (all), trends (first)Game IDs (from scores or fixtures output)
competitorIdstringteamGames, squadStats, teamStatsTeam name or ID. E.g. Real Madrid or 131
athleteIdsstring[]playerProfile (all), playerGames (first)Player names or IDs. E.g. ["Mbappe", "Haaland"]
statTypeenumsquadStatsGoals, Assists, Expected Goals (xG), Rating, etc.
statTypesstring[]squadStatsSeveral stats at once (e.g. Goals, Assists, xG), all returned per player in one run. Overrides statType.
searchQuerystringsearchSearch by name (teams, competitions)
sportTypeenumpopular, competitionsFootball, Basketball, Tennis, etc.
entityTypesarraypopularLimit to athlete, team, competition. Empty = all. E.g. ["competition"] for top leagues.
maxResultsintAllMax items to return (default: 500)
includeOddsboolscores, teamGamesAdd Bet365 1X2 odds
languageenumAllEnglish, 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).

Use CaseItemsCost
Full EPL season fixtures380$1.14
3 player profiles3$0.01
50 historical EPL scores50$0.15
Squad goals ranking (LaLiga team)~20$0.06
Popular competitions (Basketball, Tennis, etc.)20$0.06

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

🎯 Daily fantasy & player props

🎾 Live scores & match data

Support

Bug reports, feature requests, or questions? Open an issue in the Issues tab.


15 actions. 13 sports. 2600+ competitions. Scores, players, stats, transfers, odds, trends.