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 — Get Odds (Live → Upcoming → Completed)

Finds the first event with real odds — works any time, any day:

from altsportsdata import AltSportsData

client = AltSportsData(api_key="your_key")

# Try live first, then upcoming, then completed results
for status in ["live", "upcoming", "completed"]:
    for event in client.list_events(status=status):
        odds = client.get_moneylines(event.id)
        winners = odds.get("eventWinner", [])
        if winners:
            print(f"{event.name} ({status})")
            for o in sorted(winners, key=lambda x: x["odds"])[:5]:
                ath = o["athlete"]
                settled = f'  → {o["settlement"]}' if o.get("settlement") else ""
                print(f'  {ath["firstName"]} {ath["lastName"]:20} {o["probability"]:5.1f}%  ({o["odds"]:.2f}){settled}')
            break
    else:
        continue
    break
Indianapolis (upcoming)
  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.6.tar.gz (18.7 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.6-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: altsportsdata-2.1.6.tar.gz
  • Upload date:
  • Size: 18.7 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.6.tar.gz
Algorithm Hash digest
SHA256 cb75053cb8f1e21f9c3f24032efc52d9ea5a56d4e2e6566f1bd08094888794cb
MD5 e7a2a00ea6af007400e6e6d6a6390f9c
BLAKE2b-256 b0093dbdb514f31a32a7a1b6956a9950e910486f4a49a3b743b9cc0e74a958aa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: altsportsdata-2.1.6-py3-none-any.whl
  • Upload date:
  • Size: 15.3 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 dfca7d8363446645ce39177e16ed9462f01309973901889a96105bd3e87f5f1b
MD5 7ce9e95c25e202abdc9357face5e98cd
BLAKE2b-256 5594da3844c4005305a032980ac673d65117a1bcefdf55aee90ddfbac446882c

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