R client for SharpAPI, the real-time sports betting odds API: live odds from 45+ sportsbooks in one schema, no-vig fair odds, +EV and arbitrage detection.
# CRAN submission in progress; until then:
remotes::install_github("Sharp-API/sharpapi-r")Sys.setenv(SHARPAPI_KEY = "your-key") # free tier: https://sharpapi.io/pricing
sports <- sharpapi_sports() # sports + live event counts
odds <- sharpapi_odds(league = "mlb", market_type = "moneyline") # flat data frame, one row per price
evs <- sharpapi_ev(sport = "basketball") # +EV opportunities (Pro tier)
arbs <- sharpapi_arbitrage() # arbitrage opportunities (Hobby tier)
# best price per selection across books
ml <- odds[order(-odds$odds_decimal), ]
head(ml[!duplicated(ml$selection), c("selection", "sportsbook", "odds_american")])| Function | Endpoint | Tier |
|---|---|---|
sharpapi_sports() |
/sports |
Free |
sharpapi_odds(...) |
/odds |
Free |
sharpapi_ev(...) |
/opportunities/ev |
Pro+ |
sharpapi_arbitrage(...) |
/opportunities/arbitrage |
Hobby+ |
No key yet? Play offline with the free sample dataset (2026 World Cup + MLB snapshots, CC BY 4.0).
Working skeleton; CRAN polish and submission tracked in #1. MIT license.