Skip to main content

Official Python SDK for Odds-API.io - Real-time sports betting odds from 250+ bookmakers

Project description

Odds-API.io Python SDK

PyPI version Python versions License: MIT Documentation

Official Python SDK for Odds-API.io - Real-time sports betting odds from 250+ bookmakers.

๐Ÿš€ Features

  • โšก Fast & Reliable - Built on requests and aiohttp for both sync and async workflows
  • ๐Ÿ€ 20+ Sports - Basketball, football, tennis, baseball, and more
  • ๐Ÿ“Š 250+ Bookmakers - Comprehensive odds coverage from major sportsbooks worldwide
  • ๐Ÿ’ฐ Arbitrage Detection - Find risk-free betting opportunities across bookmakers
  • ๐Ÿ“ˆ Value Bets - Identify positive expected value betting opportunities
  • ๐Ÿ”ด Live Events - Real-time in-play event tracking and odds
  • ๐Ÿ” Advanced Search - Search events, participants, and leagues
  • โœจ Type Hints - Full type annotations for better IDE support
  • ๐Ÿ Modern Python - Supports Python 3.8+

๐Ÿ“ฆ Installation

pip install odds-api-io

๐Ÿ”‘ Get Your API Key

Get your free API key here โ†’

Sign up at odds-api.io to get started. Free tier includes:

  • 5,000 requests/hour
  • Access to all endpoints
  • No credit card required

๐Ÿ“š Documentation

Full API documentation is available at docs.odds-api.io

๐Ÿƒ Quick Start

Synchronous Client

from odds_api import OddsAPIClient

# Initialize the client
client = OddsAPIClient(api_key="your_api_key_here")

# Get available sports
sports = client.get_sports()
print(f"Found {len(sports)} sports")

# Get upcoming NBA events
events = client.get_events(sport="basketball", league="usa-nba")

# Search for specific games
lakers_games = client.search_events(query="Lakers")

# Get live basketball events
live = client.get_live_events(sport="basketball")

# Find arbitrage opportunities
arb_bets = client.get_arbitrage_bets(
    bookmakers="singbet,bet365",
    limit=10,
    include_event_details=True
)

# Close the client when done
client.close()

Asynchronous Client

import asyncio
from odds_api import AsyncOddsAPIClient

async def main():
    # Use async context manager
    async with AsyncOddsAPIClient(api_key="your_api_key_here") as client:
        # Get sports
        sports = await client.get_sports()
        
        # Get upcoming events
        events = await client.get_events(sport="basketball", league="usa-nba")
        
        # Find value bets
        value_bets = await client.get_value_bets(
            bookmaker="singbet",
            include_event_details=True
        )
        
        print(f"Found {len(value_bets)} value betting opportunities")

# Run async code
asyncio.run(main())

Context Manager (Recommended)

# Sync
with OddsAPIClient(api_key="your_api_key") as client:
    sports = client.get_sports()

# Async
async with AsyncOddsAPIClient(api_key="your_api_key") as client:
    sports = await client.get_sports()

๐Ÿ“– Examples

Check out the examples/ directory for more detailed examples:

๐Ÿ”ง API Reference

Sports & Leagues

Method Description Docs
get_sports() Get all available sports ๐Ÿ“–
get_leagues(sport) Get leagues for a sport ๐Ÿ“–

Events

Method Description Docs
get_events(sport, **filters) Get events with filters ๐Ÿ“–
get_event_by_id(event_id) Get specific event details ๐Ÿ“–
get_live_events(sport) Get currently live events ๐Ÿ“–
search_events(query) Search events by keyword ๐Ÿ“–

Odds

Method Description Docs
get_event_odds(event_id, bookmakers) Get odds for an event ๐Ÿ“–
get_odds_movement(event_id, bookmaker, market) Track odds changes ๐Ÿ“–
get_odds_for_multiple_events(event_ids, bookmakers) Get odds for multiple events ๐Ÿ“–
get_updated_odds_since_timestamp(since, bookmaker, sport) Get recently updated odds ๐Ÿ“–

Participants

Method Description Docs
get_participants(sport, search=None) Get teams/players ๐Ÿ“–
get_participant_by_id(participant_id) Get participant by ID ๐Ÿ“–

Bookmakers

Method Description Docs
get_bookmakers() Get all available bookmakers ๐Ÿ“–
get_selected_bookmakers() Get your selected bookmakers ๐Ÿ“–
select_bookmakers(bookmakers) Select bookmakers ๐Ÿ“–
clear_selected_bookmakers() Clear selection ๐Ÿ“–

Betting Analysis

Method Description Docs
get_arbitrage_bets(bookmakers, **options) Find arbitrage opportunities ๐Ÿ“–
get_value_bets(bookmaker, **options) Find value bets ๐Ÿ“–

โš ๏ธ Error Handling

The SDK provides custom exceptions for different error scenarios:

from odds_api import (
    OddsAPIClient,
    OddsAPIError,
    InvalidAPIKeyError,
    RateLimitExceededError,
    NotFoundError,
    ValidationError
)

client = OddsAPIClient(api_key="your_api_key")

try:
    events = client.get_events(sport="basketball")
except InvalidAPIKeyError:
    print("Your API key is invalid")
except RateLimitExceededError:
    print("Rate limit exceeded - wait before retrying")
except NotFoundError:
    print("Resource not found")
except ValidationError as e:
    print(f"Invalid parameters: {e}")
except OddsAPIError as e:
    print(f"API error: {e}")

๐ŸŒŸ Why Odds-API.io?

  • โœ… Most Comprehensive Coverage - 250+ bookmakers across 20+ sports
  • โœ… Near-Zero Latency - Real-time odds updates with minimal delay
  • โœ… Direct Bet Links - Deep links directly to bookmaker bet slips
  • โœ… Value Bet Detection - Automatically calculated expected value
  • โœ… Historical Data - Access to past odds and results
  • โœ… Developer Friendly - Clean API design with excellent documentation

๐Ÿ’ก Use Cases

Build powerful betting tools and analytics:

  • ๐ŸŽฏ Arbitrage betting platforms
  • ๐Ÿ“Š Odds comparison sites
  • ๐Ÿ“ˆ Value betting calculators
  • ๐Ÿค– Automated betting systems
  • ๐Ÿ“‰ Sports analytics dashboards
  • ๐Ÿ”” Odds movement alerts

๐Ÿ†“ Free Tier Limitations

  • Limited to 2 bookmakers selected at once
  • 5,000 requests per hour (shared across all plans)
  • No WebSocket access on free tier

Upgrade for more features โ†’

๐Ÿ“‹ Requirements

  • Python 3.8 or higher
  • requests library (for sync client)
  • aiohttp library (for async client)

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ”— Links

๐Ÿ’ฌ Support

Need help? We're here for you:

โšก Quick Links


Built with โค๏ธ by the Odds-API.io team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

odds_api_io-1.0.1.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

odds_api_io-1.0.1-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file odds_api_io-1.0.1.tar.gz.

File metadata

  • Download URL: odds_api_io-1.0.1.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for odds_api_io-1.0.1.tar.gz
Algorithm Hash digest
SHA256 48620c001cfa9dceddf07a7d420ed9232dce75c1271ca47882f48371f95a424d
MD5 87d04e808837bc4a64238441916ccc48
BLAKE2b-256 a0b8449525c1f0393f7383e255f61123eacd6bd51fdb9b4aacaeac8e14af6823

See more details on using hashes here.

File details

Details for the file odds_api_io-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: odds_api_io-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 14.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for odds_api_io-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9ea18ea387c2f0875d6a903cabfc3bbce018f7126f1b6bb860cdcfcc8e2a2a2d
MD5 22e9b5e8b25f56e45a779930aeba2c8c
BLAKE2b-256 4648cf2c393733c5f87736b04db31edfd0de39a06f5b968eb231fa2e15776004

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page