oddsapi

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 30, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

README

Website API reference GitHub stars GitHub forks License Go Reference OpenAPI

odds-api/odds-api-go

Go SDK for odds-api.net, an OpenAPI-first sports betting odds API for coding agents and developers.

Collect a free API key from odds-api.net.

Install . Quickstart . Common methods . Examples . Safety . Security


Install

Install from GitHub:

go get github.com/odds-api/odds-api-go

For local development from the GitHub repo:

git clone https://github.com/odds-api/odds-api-go.git
cd odds-api-go
go test ./...

Quickstart

package main

import (
	"context"
	"fmt"
	"os"

	oddsapi "github.com/odds-api/odds-api-go"
)

func main() {
	client := oddsapi.NewClient(oddsapi.WithAPIKey(os.Getenv("ODDS_API_KEY")))
	events, err := client.SearchEvents(context.Background(), oddsapi.QueryParams{
		"sport":  "rugby-league",
		"league": "NRL",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(events)
}

The SDK also reads ODDS_API_KEY and ODDS_API_BASE_URL from the environment:

client := oddsapi.NewClient()
sports, err := client.ListSports(context.Background())

Common methods

  • ListSports
  • ListBookmakers
  • ListLeagues
  • SearchEvents
  • GetEvent
  • GetEventBookmakers
  • GetOddsSnapshot
  • GetOddsHistory
  • FindBestOdds
  • CompareBookmakers
  • FindArbitrage
  • FindPositiveEV
  • GetLineMovement
  • SearchRacingEvents
  • GetRacingEvent
  • GetRacingOdds
  • GetResults
  • GetAPIMetadata
  • GetMe
  • GetUsage
  • GetLimits
  • GetMarketSchema

Examples

examples/basic
examples/arbitrage-scanner

Run an example:

export ODDS_API_KEY="your_api_key"
go run ./examples/basic

Why use this SDK?

odds-api-go keeps the Python SDK's small, mock-friendly shape while using idiomatic Go:

  • context-aware requests
  • ODDS_API_KEY and ODDS_API_BASE_URL support
  • API key auth with X-API-Key
  • optional bearer token support
  • transport injection for tests
  • standard library HTTP client
  • helper methods for common sports, racing, odds, betting, account, and metadata workflows

Safety

Arbitrage and positive EV examples are betting research workflows, not guaranteed-profit systems. Always account for stale odds, limits, delays, suspensions, voids, jurisdiction, and execution risk.

Documentation

Overview

Package oddsapi is the official Go SDK for odds-api.net.

It mirrors the Python SDK's small, mock-friendly surface while using idiomatic Go options and context-aware requests.

Index

Constants

View Source
const DefaultBaseURL = "https://api.odds-api.net/v1"

Variables

This section is empty.

Functions

This section is empty.

Types

type BestOdds

type BestOdds struct {
	SelectionKey string   `json:"selection_key"`
	Bookmaker    string   `json:"bookmaker"`
	Odds         float64  `json:"odds"`
	MarketKey    string   `json:"market_key"`
	Odd          Response `json:"odd"`
}

type ClientOption

type ClientOption func(*OddsApiClient)

func WithAPIKey

func WithAPIKey(apiKey string) ClientOption

func WithBaseURL

func WithBaseURL(baseURL string) ClientOption

func WithBearerToken

func WithBearerToken(bearerToken string) ClientOption

func WithHTTPClient

func WithHTTPClient(httpClient *http.Client) ClientOption

func WithTransport

func WithTransport(transport Transport) ClientOption

type OddsApiClient

type OddsApiClient struct {
	APIKey      string
	BaseURL     string
	BearerToken string
	HTTPClient  *http.Client
	Transport   Transport
}

func NewClient

func NewClient(options ...ClientOption) *OddsApiClient

func NewOddsApiClient

func NewOddsApiClient(options ...ClientOption) *OddsApiClient

func (*OddsApiClient) CompareBookmakers

func (c *OddsApiClient) CompareBookmakers(ctx context.Context, eventID string, bookmakers []string, params QueryParams) (Response, error)

func (*OddsApiClient) FindArbitrage

func (c *OddsApiClient) FindArbitrage(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) FindBestOdds

func (c *OddsApiClient) FindBestOdds(ctx context.Context, eventID string, params QueryParams) ([]BestOdds, error)

func (*OddsApiClient) FindPositiveEV

func (c *OddsApiClient) FindPositiveEV(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) Get

func (c *OddsApiClient) Get(ctx context.Context, path string, params QueryParams) (any, error)

func (*OddsApiClient) GetAPIMetadata

func (c *OddsApiClient) GetAPIMetadata(ctx context.Context) (Response, error)

func (*OddsApiClient) GetBetsSnapshot

func (c *OddsApiClient) GetBetsSnapshot(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) GetEvent

func (c *OddsApiClient) GetEvent(ctx context.Context, eventID string) (Response, error)

func (*OddsApiClient) GetEventBookmakers

func (c *OddsApiClient) GetEventBookmakers(ctx context.Context, eventID string) (Response, error)

func (*OddsApiClient) GetLimits

func (c *OddsApiClient) GetLimits(ctx context.Context) (Response, error)

func (*OddsApiClient) GetLineMovement

func (c *OddsApiClient) GetLineMovement(ctx context.Context, eventID string, selectionKey string, params QueryParams) (Response, error)

func (*OddsApiClient) GetMarketSchema

func (c *OddsApiClient) GetMarketSchema() map[string]string

func (*OddsApiClient) GetMe

func (c *OddsApiClient) GetMe(ctx context.Context) (Response, error)

func (*OddsApiClient) GetOddsHistory

func (c *OddsApiClient) GetOddsHistory(ctx context.Context, eventID string, params QueryParams) (Response, error)

func (*OddsApiClient) GetOddsSnapshot

func (c *OddsApiClient) GetOddsSnapshot(ctx context.Context, eventID string, params QueryParams) (Response, error)

func (*OddsApiClient) GetRacingEvent

func (c *OddsApiClient) GetRacingEvent(ctx context.Context, eventID string) (Response, error)

func (*OddsApiClient) GetRacingOdds

func (c *OddsApiClient) GetRacingOdds(ctx context.Context, eventID string, params QueryParams) (Response, error)

func (*OddsApiClient) GetResults

func (c *OddsApiClient) GetResults(ctx context.Context, eventID string) (Response, error)

func (*OddsApiClient) GetUsage

func (c *OddsApiClient) GetUsage(ctx context.Context) (Response, error)

func (*OddsApiClient) ListBookmakerCountries

func (c *OddsApiClient) ListBookmakerCountries(ctx context.Context) (Response, error)

func (*OddsApiClient) ListBookmakers

func (c *OddsApiClient) ListBookmakers(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) ListLeagues

func (c *OddsApiClient) ListLeagues(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) ListSports

func (c *OddsApiClient) ListSports(ctx context.Context) (Response, error)

func (*OddsApiClient) Post

func (c *OddsApiClient) Post(ctx context.Context, path string, params QueryParams, body any) (any, error)

func (*OddsApiClient) Request

func (c *OddsApiClient) Request(ctx context.Context, method string, path string, params QueryParams, body any) (any, error)

func (*OddsApiClient) SearchEvents

func (c *OddsApiClient) SearchEvents(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) SearchRacingEvents

func (c *OddsApiClient) SearchRacingEvents(ctx context.Context, params QueryParams) (Response, error)

func (*OddsApiClient) URL

func (c *OddsApiClient) URL(path string, params QueryParams) (string, error)

type OddsApiError

type OddsApiError struct {
	Status int
	Body   any
}

func (*OddsApiError) Error

func (e *OddsApiError) Error() string

type QueryParams

type QueryParams map[string]any

type Response

type Response map[string]any

type Transport

type Transport func(method string, url string, headers map[string]string, body any) (any, error)

Directories

Path Synopsis
examples
basic command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL