Skip to main content

The data feed for alternative sports betting — odds, events, futures for 30 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.2.0.tar.gz (20.2 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.2.0-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for altsportsdata-2.2.0.tar.gz
Algorithm Hash digest
SHA256 6629ef8b43e5e8e401dbcb5ceb5f34a8c4aa34d7b1281e4b208e27c396b18926
MD5 5887b68c33a3cf27c4d7e37dbb7926f1
BLAKE2b-256 4a6b20e0b3276f784512d6d98fb07428446dc1a0bb4637e6f91eb1fc497eec64

See more details on using hashes here.

File details

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

File metadata

  • Download URL: altsportsdata-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 16.6 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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 acbbae67eadbf980a3ddc6cebaf3c3e5353e4355aad2d9f0454122b433d9087f
MD5 dd799c5138c6efb363615128bb491cba
BLAKE2b-256 1d2fe433688b00855aaa021834d6c47ebaf5af37b65c623add219d0b8800fd41

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