Discover/Oddsplug API
live

Oddsplug APIOddsplug.com

Find profitable arbitrage betting opportunities across multiple sports and game types through Oddsplug's real-time odds data. Identify mismatches in betting lines to lock in guaranteed returns regardless of the game outcome.

Endpoint health
monitored
fetch_arbitrages
Checks pendingself-healing
Endpoints
1
Updated
3h ago
Try it
Sport to filter arbitrage opportunities by.
Type of game to filter by.
api.parse.bot/scraper/b18e2890-0c53-4b64-a103-511091e6d8f1/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X POST 'https://api.parse.bot/scraper/b18e2890-0c53-4b64-a103-511091e6d8f1/fetch_arbitrages' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "sport": "All",
  "game_type": "prematch"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace oddsplug-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Oddsplug SDK — fetch arbitrage opportunities across sports."""
from parse_apis.oddsplug_com_api import Oddsplug, Sport, GameType, InvalidInput

client = Oddsplug()

# List all prematch arbitrage opportunities, capped at 5
for arb in client.arbitrages.list(sport=Sport.ALL, game_type=GameType.PREMATCH, limit=5):
    print(arb.sport, arb.market_name, arb.arb_percentage)
    for bm in arb.bookmakers:
        print(f"  {bm.bookmaker}: market={bm.market}, odd={bm.odd}")

# Filter to Football only
football_arb = client.arbitrages.list(sport=Sport.FOOTBALL, limit=1).first()
if football_arb:
    print(f"Football arb: {football_arb.tournament} | {football_arb.market_name} | {football_arb.arb_percentage}%")
    print(f"  Starts: {football_arb.start_at_timestamp}, Created: {football_arb.created_at}")

# Handle invalid input gracefully
try:
    for arb in client.arbitrages.list(sport=Sport.BASKETBALL, game_type=GameType.LIVE, limit=3):
        print(arb.arb_id, arb.market_code)
except InvalidInput as exc:
    print(f"Invalid input: {exc}")

print("exercised: arbitrages.list with sport/game_type filters, bookmaker field access")
All endpoints · 1 totalmissing one? ·

Fetch current arbitrage betting opportunities. Returns a list of arbitrage opportunities showing the market, bookmakers involved, and the arbitrage percentage. Results can be filtered by sport and game type (prematch or live). Some fields (team names, odds) may be obscured for unauthenticated access.

Input
ParamTypeDescription
sportstringSport to filter arbitrage opportunities by.
game_typestringType of game to filter by.
Response
{
  "type": "object",
  "fields": {
    "total": "integer",
    "arbitrages": "array of arbitrage opportunity objects with id, sport, tournament, market, bookmakers, and arb_percentage"
  },
  "sample": {
    "data": {
      "total": 14,
      "arbitrages": [
        {
          "id": "6a3c2e784f873529e80f30bd",
          "sport": "Football",
          "arb_id": "e74fe0795405dd9a30194a9bb10936ce",
          "status": 1,
          "start_at": "xxxx",
          "game_type": "prematch",
          "bookmakers": [
            {
              "odd": "xx",
              "away": "xxxxxx",
              "home": "xxxxxx",
              "icon": "https://oddsplug.com/bucket/bookmakers/msport.png",
              "odds": {
                "ov": "xx",
                "un": "xx"
              },
              "teams": "xxxxxx vs xxxxxx",
              "market": "ov",
              "bookmaker": "MSport"
            },
            {
              "odd": "xx",
              "away": "xxxxxx",
              "home": "xxxxxx",
              "icon": "https://oddsplug.com/bucket/bookmakers/betwgb1.png",
              "odds": {
                "ov": "xx",
                "un": "xx"
              },
              "teams": "xxxxxx vs xxxxxx",
              "market": "un",
              "bookmaker": "BetWGB"
            }
          ],
          "created_at": "2026-06-24T19:22:32.873Z",
          "tournament": "xxxxx > xxxxx",
          "updated_at": "2026-06-24T21:00:08.509Z",
          "market_code": "ou_25",
          "market_name": "Full time over/under 2.5",
          "arb_percentage": "0.09",
          "start_at_timestamp": 1782378000
        }
      ]
    },
    "status": "success"
  }
}

About the Oddsplug API

The Oddsplug API on Parse exposes 1 endpoint for the publicly available data on Oddsplug.com. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.