The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

oddsapiio

CRAN status License: MIT

Official R client for Odds-API.io, a real-time sports betting odds API covering 265+ bookmakers across 10+ sports. Full API documentation lives at docs.odds-api.io.

The free tier includes 100 requests/hour, no credit card required.

Installation

Once on CRAN:

install.packages("oddsapiio")

Development version from GitHub:

# install.packages("remotes")
remotes::install_github("odds-api-io/odds-api-r")

Authentication

Sign up at odds-api.io to get a free API key, then set it as an environment variable (for example in .Renviron):

Sys.setenv(ODDS_API_KEY = "your-key")

Every function also accepts an explicit api_key argument.

Quick start

library(oddsapiio)

# Sports and bookmakers (no API key needed)
oa_sports()
#>         name       slug
#> 1   Football   football
#> 2 Basketball basketball
#> 3     Tennis     tennis
#> ...

# Leagues for a sport
oa_leagues("football")
#>                       name                   slug eventsCount
#> 1 England - Premier League england-premier-league          32
#> 2          Spain - La Liga          spain-la-liga          28
#> ...

# Upcoming events
events <- oa_events("football", league = "england-premier-league")
head(events[, c("id", "home", "away", "date", "status")])
#>       id              home      away                 date  status
#> 1 123456 Manchester United Liverpool 2026-08-15T15:00:00Z pending
#> ...

# Odds for one event, tidy: one row per price line
odds <- oa_odds(events$id[1], bookmakers = c("Bet365", "SingBet"))
subset(odds, market == "ML")
#>   eventId bookmaker market            updatedAt home draw away
#> 1  123456    Bet365     ML 2026-08-14T10:30:00Z 2.10 3.40 3.20

# Value bets and arbitrage opportunities
oa_value_bets("Bet365", include_event_details = TRUE)
oa_arbitrage_bets(c("Bet365", "SingBet"))

Functions

Function Endpoint
oa_sports() GET /v3/sports
oa_bookmakers() GET /v3/bookmakers
oa_leagues(sport) GET /v3/leagues
oa_events(sport, ...) GET /v3/events
oa_odds(event_id, bookmakers) GET /v3/odds
oa_value_bets(bookmaker, ...) GET /v3/value-bets
oa_arbitrage_bets(bookmakers, ...) GET /v3/arbitrage-bets

License

MIT

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.