> ## Documentation Index
> Fetch the complete documentation index at: https://docs.odds-api.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get arbitrage betting opportunities

> Returns active arbitrage opportunities filtered by bookmakers. Only returns opportunities where ALL legs use the specified bookmakers.



## OpenAPI

````yaml /api-reference/openapi.json get /arbitrage-bets
openapi: 3.0.0
info:
  description: >-
    Odds-API.io is a powerful sports betting odds comparison API, providing
    real-time data from 250+ bookmakers across 10+ sports with near zero
    latency.


    - 250+ bookmakers supported

    - 10+ sports including Football, Basketball, Tennis, Esports and more

    - Real-time odds with close to zero latency

    - Pre-match & In-play odds coverage

    - 99.9% uptime for reliability
  title: Odds-API.io - Real-Time Sports Betting Odds API (v3)
  contact: {}
  version: 3.0.0
servers:
  - url: https://api.odds-api.io/v3
security: []
paths:
  /arbitrage-bets:
    get:
      tags:
        - Arbitrage Bets
      summary: Get arbitrage betting opportunities
      description: >-
        Returns active arbitrage opportunities filtered by bookmakers. Only
        returns opportunities where ALL legs use the specified bookmakers.
      parameters:
        - description: API key for authentication
          name: apiKey
          in: query
          required: true
          schema:
            type: string
        - example: '"Bet365,SingBet"'
          description: Comma-separated list of bookmakers (e.g. Bet365,SingBet)
          name: bookmakers
          in: query
          required: true
          schema:
            type: string
        - example: 50
          description: Maximum number of results (default 50, max 500)
          name: limit
          in: query
          schema:
            type: integer
        - example: true
          description: Include event details
          name: includeEventDetails
          in: query
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/dto.ArbitrageOpportunity'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/controllers.ErrorResponse'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    dto.ArbitrageOpportunity:
      type: object
      properties:
        event:
          description: Only included if includeEventDetails=true
          allOf:
            - $ref: '#/components/schemas/dto.EventInfo'
        eventId:
          type: integer
        id:
          type: string
        impliedProbability:
          type: number
        legs:
          type: array
          items:
            $ref: '#/components/schemas/dto.ArbitrageLeg'
        market:
          $ref: '#/components/schemas/dto.Market'
        optimalStakes:
          type: array
          items:
            $ref: '#/components/schemas/dto.OptimalStake'
        profitMargin:
          type: number
        totalStake:
          type: number
        updatedAt:
          type: string
    controllers.ErrorResponse:
      type: object
      properties:
        error:
          type: string
          example: Error message
    dto.EventInfo:
      type: object
      properties:
        away:
          type: string
        date:
          type: string
        home:
          type: string
        league:
          type: string
        sport:
          type: string
    dto.ArbitrageLeg:
      type: object
      properties:
        bookmaker:
          type: string
        bookmakerFixtureId:
          type: string
        directLink:
          type: string
        href:
          type: string
        label:
          type: string
        odds:
          type: string
          example: '0'
        side:
          description: '"home", "away", "draw"'
          type: string
    dto.Market:
      type: object
      properties:
        hdp:
          type: number
        label:
          type: string
          description: >-
            Player name for player prop markets (e.g. "Carlos Baleba"). Only
            present on player prop entries.
        name:
          type: string
    dto.OptimalStake:
      type: object
      properties:
        bookmaker:
          type: string
        potentialReturn:
          type: number
        side:
          type: string
        stake:
          type: number

````