Interactive
Demo
Click Run on any snippet to call a live API returning realistic Premier League data. No API key or account needed.
Upcoming fixtures
Fetch the next Premier League matchweek — all ten Matchweek 30 fixtures.
python
from opensport.providers.mock import MockProvider
# Initialise provider (zero API keys required)
provider = MockProvider(seed=42)
# Fetch all scheduled Premier League matches
events = provider.get_events(
sport="soccer", status="scheduled"
)
for event in events:
print(event.summary())
Compare bookmaker prices
Fan out to Cloudbet, Stake, and Polymarket and surface the best available price for each outcome. Fetches the next scheduled PL match live.
python
from opensport.providers import ProviderRegistry, MultiProvider
# Auto-loads providers from env vars
registry = ProviderRegistry.from_env()
provider = MultiProvider(registry)
# get_odds() fans out to all active bookmakers
events = provider.get_events(sport="soccer", status="scheduled")
snap = provider.get_odds(events[0].id) # next match
for market in snap.markets:
for o in market.outcomes:
print(o.bookmaker, o.label, o.decimal_odds)
Scan for value bets
Strip bookmaker overround to find fair probabilities, then surface positive-EV opportunities sorted by edge.
python
from opensport.providers.mock import MockProvider
from opensport.utils import get_value_bets
provider = MockProvider(seed=42)
# Surface all +EV opportunities above 2% edge
bets = get_value_bets(
provider,
sport="soccer",
min_edge_pct=0.02,
)
for b in bets:
print(f"{b['outcome_label']} @ {b['decimal_odds']:.2f} edge={b['edge_pct']:.1f}%")
Search by team name
Case-insensitive substring search across all events — handy for tracking a specific club across competitions.
python
from opensport.providers.mock import MockProvider
provider = MockProvider(seed=42)
# Case-insensitive substring match on team name
fixtures = provider.find_events(team="Arsenal")
for e in fixtures:
print(e.summary())
Live match score
Poll a live match for the current scoreline and minute. Returns real-time data from Football-Data.org when an API key is set — mock in-progress data otherwise.
python
from opensport.providers.mock import MockProvider
provider = MockProvider(seed=42)
# Get all currently live events
live_events = provider.get_events(status="live")
# Fetch the current scoreline
score = provider.get_live_score(live_events[0].id)
print(f"{score['home_team']} {score['home_score']} – {score['away_score']} {score['away_team']} ({score['minute']}′)")