Skip to main content

The data feed for alternative sports betting — odds, events, futures for 31 leagues

Project description

AltSportsData SDK

PyPI Python 3.8+

Alternative sports odds & data for sportsbooks, DFS platforms, and prediction markets.

One SDK. 30 leagues. Every market type. Moneylines, matchups, props, podiums, futures, and parlays — from surfing to Supercross to Formula Drift.

pip install altsportsdata

Example 1 — Live & Upcoming Odds

Finds the next event with odds across any league — works any time, any day:

from altsportsdata import AltSportsData

client = AltSportsData(api_key="your_key")

# Try live events first, fall back to upcoming
for status in ["live", "upcoming"]:
    for event in client.list_events(status=status):
        odds = client.get_moneylines(event.id)
        winners = odds.get("eventWinner", [])
        if winners:
            print(f"\n{event.name}")
            for o in sorted(winners, key=lambda x: x["odds"])[:5]:
                ath = o["athlete"]
                print(f'  {ath["firstName"]} {ath["lastName"]:20} {o["probability"]:5.1f}%  ({o["odds"]:.2f})')
            break
    else:
        continue
    break
Indianapolis
  Eli Tomac              49.4%  (2.02)
  Hunter Lawrence        37.6%  (2.66)
  Ken Roczen             23.5%  (4.26)
  Cooper Webb            14.6%  (6.84)
  Joey Savatgy            6.2%  (16.20)

Example 2 — Historical Results & Settlement

Completed events include settlement — see who won vs the odds:

wsl = AltSportsData(api_key="your_key", league="wsl")

for event in wsl.list_events(status="completed"):
    odds = wsl.get_moneylines(event.id)
    winners = odds.get("eventWinner", [])
    if winners:
        print(f"\n{event.name}")
        for o in sorted(winners, key=lambda x: x["odds"])[:5]:
            ath = o["athlete"]
            tag = "✅" if o["settlement"] == "WIN" else "  "
            print(f'  {tag} {ath["firstName"]} {ath["lastName"]:20} {o["odds"]:5.2f}{o["settlement"]}')
        break
Lexus Pipe Challenger
     Molly Picklum         3.50  → LOSE
     Caitlin Simmers       3.88  → LOSE
     Erin Brooks           5.49  → LOSE
  ✅ Gabriela Bryan         6.46  → WIN
     Bettylou Johnson      9.90  → LOSE

All Market Types

# Sportsbook — traditional markets
client.get_moneylines("event_id")         # event winner
client.get_matchups("event_id")           # head-to-head
client.get_totals("event_id")             # over/under
client.get_exactas("event_id", n=2)       # exacta (2, 3, or 4)
client.get_podiums("event_id")            # top-3 finish
client.get_shows("event_id")             # shows
client.get_heat_winners("event_id")       # heat winner
client.get_fastest_lap("event_id")        # fastest lap
client.get_dream_team("event_id")         # dream team

# DFS — player-level markets
client.get_player_props("event_id")       # prop bets
client.get_player_matchups("event_id")    # pick'em matchups
client.get_player_totals("event_id")      # over/under by stat

# Prediction markets — probability-first
client.get_market_probabilities("event_id")               # win probabilities
client.get_podium_probabilities("event_id")               # top-3 probabilities
client.get_top_finish_probabilities("event_id", top_n=5)  # top-N probabilities

# Same Game Parlay
client.calculate_parlay("event_id", picks=["odd_id_1", "odd_id_2"])

# Generic — any market by name or alias
client.get_odds("event_id", "moneyline")  # aliases: "h2h", "props", "totals", etc.

Events

client.list_events(status="upcoming")                     # pre-event
client.list_events(status="live")                         # in-progress
client.list_events(status="completed")                    # historical + settlement
client.list_events(status=["live", "upcoming"])           # combine filters
client.list_events(league="f1", status="upcoming")        # filter by league
client.get_event("event_id")                              # full detail with rounds/heats
client.get_participants("event_id")                       # athletes / roster
client.get_heat_scores("event_id", "heat_id")            # scores / lap times

Futures

client.list_futures()                                     # all available futures
client.get_futures(tour="tour_id", type="winner")         # season winner odds

Setup

from altsportsdata import AltSportsData

# All leagues
client = AltSportsData(api_key="your_key")

# Lock to a league — auto-filters every query
wsl = AltSportsData(api_key="your_key", league="wsl")
f1  = AltSportsData(api_key="your_key", league="f1")
spr = AltSportsData(api_key="your_key", league="spr")

Google Colab

!pip install altsportsdata

from altsportsdata import AltSportsData
from google.colab import userdata

client = AltSportsData(api_key=userdata.get("ALTSPORTSDATA_API_KEY"))

for lg in client.list_leagues():
    print(f"{lg.key:15} {lg.name}")

30 Leagues

Code League Code League
wsl World Surf League pbr Professional Bull Riders
sls Street League Skateboarding bkfc Bare Knuckle FC
f1 Formula 1 motogp MotoGP
spr Supercross mxgp MXGP
nrx Nitrocross jaialai Jai Alai
fdrift Formula Drift nll National Lacrosse League
masl Major Arena Soccer nhra NHRA Drag Racing
powerslap Power Slap dgpt Disc Golf Pro Tour
worldoutlaws World of Outlaws usac USAC Racing
xgame X Games motoamerica MotoAmerica
hlrs High Limit Racing byb BYB Extreme Fighting
athletesunlimited Athletes Unlimited lux LUX Fight League
raf Real American Freestyle mltt Major League Table Tennis
motocrs Motocross spectation Spectation
gsoc Global Soccer sprmtcrs Supermotocross

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

altsportsdata-2.1.5.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

altsportsdata-2.1.5-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file altsportsdata-2.1.5.tar.gz.

File metadata

  • Download URL: altsportsdata-2.1.5.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for altsportsdata-2.1.5.tar.gz
Algorithm Hash digest
SHA256 727b082d028d6b036427711530dc7235f5b5ad825711842d88f1711ba104ac56
MD5 95567a2e894829c02da02b2e360c3b91
BLAKE2b-256 4f5611b7c449c850a3e15819b9ba884870c3128408bdfddc592adf00f61f7686

See more details on using hashes here.

File details

Details for the file altsportsdata-2.1.5-py3-none-any.whl.

File metadata

  • Download URL: altsportsdata-2.1.5-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for altsportsdata-2.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b5ac2defddd4f685d5516fe2bb74f2a6be5fb08b7261c4aea5d676bec86d90f8
MD5 1a284890d00b386d54d1df55d742d7a4
BLAKE2b-256 f5ceeb8a7dca318cc3b2bcb723cb8032c4177a995df4326e21c69548b3466c46

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page