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.

Package {betbetter}


Title: Access the Bet Better Open Sports Model API
Version: 0.1.0
Description: Retrieves published statistical model estimates for upcoming sporting fixtures from the Bet Better open API, covering Australian rules football, baseball, basketball, American football, ice hockey, association football, tennis and mixed martial arts. For each rated selection the interface returns the model's estimated probability that the selection occurs, together with the decimal odds implied by that probability. No registration or authentication is required. Bookmaker prices are not published by the API and are therefore not available through this package.
License: MIT + file LICENSE
URL: https://betbetter.world/api/, https://betbetter.world/studies/
BugReports: https://betbetter.world/About
Encoding: UTF-8
Imports: httr2, jsonlite
Suggests: knitr, rmarkdown, testthat (≥ 3.0.0)
VignetteBuilder: knitr
Config/testthat/edition: 3
RoxygenNote: 7.3.2
NeedsCompilation: no
Packaged: 2026-09-18 04:04:54 UTC; Administrator
Author: Edward Glush [aut, cre]
Maintainer: Edward Glush <edward.glush@gmail.com>
Repository: CRAN
Date/Publication: 2026-10-06 15:50:02 UTC

betbetter: Access the Bet Better Open Sports Model API

Description

Retrieves published statistical model estimates for upcoming sporting fixtures. For each rated selection the API returns the model's estimated probability that the selection occurs and the decimal odds implied by that probability.

What the API does not provide

The upstream service publishes model output only. Bookmaker identities, market prices and implied market probabilities are not distributed, because the provider's odds licence permits publishing derived work but not redistribution of the price feed. No function in this package can therefore return a bookmaker price.

Licence of the retrieved data

Data returned by the API is published under CC BY 4.0. Attribution to Bet Better (https://betbetter.world) is required when it is redistributed.

Caveats

Values are model estimates, not statements of certainty. A selection estimated at 70% is expected to fail roughly three times in ten. Feeds are empty outside a competition's season, which is expected rather than an error.

Author(s)

Maintainer: Edward Glush edward.glush@gmail.com

See Also

Useful links:


Feed types recognised by the API

Description

Feed types recognised by the API

Usage

bb_feeds()

Value

A character vector of feed types accepted by bb_picks(). "games" covers match-level markets, "props" covers individual player markets, and "picks" combines both.

Examples

bb_feeds()

League slugs recognised by the API

Description

League slugs recognised by the API

Usage

bb_leagues()

Value

A character vector of league slugs accepted by bb_picks().

Examples

bb_leagues()

Retrieve model estimates for a league

Description

Downloads the model's currently published estimates for upcoming fixtures in one league.

Usage

bb_picks(league, feed = "picks", min_probability = NULL, limit = NULL)

Arguments

league

A league slug; see bb_leagues().

feed

Which markets to retrieve; see bb_feeds(). Defaults to "picks".

min_probability

Optional lower bound, between 0 and 1. Selections the model estimates below this probability are dropped.

limit

Optional maximum number of rows to return.

Details

fair_odds is the break-even price implied by the model's own probability. It is not a bookmaker price, and no bookmaker price is available through this package.

Value

A data frame with one row per rated selection and the columns game, start_time (UTC), market, selection, line, model_probability (a proportion between 0 and 1), fair_odds (decimal odds implied by model_probability), confidence and verdict. A zero-row data frame is returned when the league has no upcoming fixtures, which is normal outside its season. NULL is returned, with a message, if the API cannot be reached.

Examples


afl <- bb_picks("afl", limit = 5)
if (!is.null(afl) && nrow(afl) > 0) {
  afl[, c("game", "selection", "model_probability", "confidence")]
}

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.