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

1

Bookmarked

69

Total users

16

Monthly active users

1.1 hours

Issues response

4 days ago

Last modified

Share

Zen Studio Sports Betting   •  Real-time odds and scores across every major sportsbook
 Bet365 Data
➤ You are here
 Bet365 Odds
39 sports, all markets
 Bet365 Scores
13 sports, real-time
 DraftKings Odds
Lines, props, SGP

 

One actor for all sports data — scores, fixtures, match detail, player profiles, squad stats, transfers, and betting insights. 15 actions across 13 sports and 2600+ competitions.

No IDs to look up: competitions take slugs, teams and players take names, and country/team/source come back as resolved names. Match detail carries up to 46 stat types per game (including expected goals), per-period scores for every sport, and full lineups.

Recent updates

See the Changelog tab for the full history.

  • Names, not IDs — country, team and news source now come resolved across the discovery actions; no lookup tables to maintain.
  • Richer records — transfer fees + news articles, betting-trend teams, player injury status, match venues, and a dataAvailability hint on every match.
  • scores date filterstartDateFrom/startDateTo pull just a date window instead of a whole season (far cheaper recurring refreshes).
  • Per-sport match stats — up to 46 for football (incl. expected goals), with per-period scores for every sport.
  • dailyTip returns real tips, and squadStats ranks a squad by several stats in one run.

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

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 refreshscores 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).

 

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.