| 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:
Report bugs at https://betbetter.world/About
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 |
feed |
Which markets to retrieve; see |
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")]
}