Skip to main content

Overview

The Mr. Doge API is built around a hierarchical data model that represents sports betting data. Understanding this structure is crucial for effectively using the API.

Core Hierarchy

The data follows a top-down hierarchy:
Sport
  └─ Region (e.g., England, Spain, Brazil)
      └─ Competition (e.g., Premier League, La Liga)
          └─ Event (e.g., Arsenal vs Chelsea)
              └─ Market (e.g., Match Result, Over/Under)
                  └─ BetItem (e.g., Home Win, Draw, Away Win)
This hierarchical structure allows you to filter and query data at any level - from all sports down to specific betting options.

Entities

Sport

Represents a sport category supported by the API. Supported Sports:
  • Soccer (Football)
  • Basketball
  • Baseball
  • American Football
  • Handball
  • Tennis
  • Volleyball
  • Ice Hockey
Example:
{
  "id": "1",
  "name": "soccer",
}

Region

Geographic areas where competitions take place. Fields:
  • id - Unique identifier
  • name - Region name (e.g., “England”, “Spain”)
  • slug - URL-friendly identifier
  • sportId - Parent sport
  • captions - Multilingual translations (en, pt, es)
Example:
{
  "id": "6",
  "caption": "England"
}

Competition

Leagues, tournaments, or championships. Fields:
  • id - Unique identifier
  • name - Competition name (e.g., “Premier League”)
  • slug - URL-friendly identifier
  • regionId - Parent region
  • sportId - Parent sport
  • captions - Multilingual translations
Example:
{
  "id": "847",
  "name": "Premier League",
  "regionId": "6",
  "sportId": "1"
}

Team

Sports teams with associated metadata. Fields:
  • id - Unique identifier (integer)
  • name - Team name
  • sportId - Sport association (integer)
  • imageId - Image identifier (optional)
Example:
{
  "id": 95450,
  "name": "Arsenal",
  "sportId": 1,
}

Event

Individual matches or games across all sports. Core Fields:
  • id - Unique identifier (string)
  • competitionId - Parent competition (integer)
  • regionId - Parent region (integer)
  • sportId - Parent sport (integer, optional)
  • startDateTime - When the event starts (ISO 8601)
  • status - Event status: upcoming, live, or completed (default: “upcoming”)
  • views - Number of times event was viewed (default: 0)
  • metadata - Complete event data including teams, markets, and odds (JSON)
Deprecated Fields: homeTeamId, awayTeamId, and other sport-specific columns are being phased out. All event-specific data is now contained in the metadata JSON field for consistency across all sports.
Event Statuses:
  • upcoming - Event hasn’t started yet
  • live - Event is currently in progress
  • completed - Event has finished
Metadata Structure: The metadata field contains the complete event information including teams, competition details, and all available markets with odds. The structure varies slightly by sport but follows a consistent pattern.
{
  "id": "42735719",
  "sportName": "soccer",
  "sportSysname": "SOCCER_MATCH",
  "regionId": 6,
  "regionCaption": "Inglaterra",
  "regionImageId": 92616,
  "competitionId": 1536,
  "competitionCaption": "EFL Cup",
  "homeTeamName": "Arsenal",
  "homeTeamImageId": 95450,
  "awayTeamName": "Brighton",
  "awayTeamImageId": 197280,
  "startDateTime": "2025-10-29T19:45:00+00:00",
  "markets": [
    {
      "marketId": 1488692956,
      "betTypeSysname": "SOCCER_MATCH_RESULT",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6170635657",
          "code": "1",
          "price": 1.78,
          "oddsText": "1.78",
          "isAvailable": true,
          "marketStatistic": null
        },
        {
          "id": "6170635658",
          "code": "X",
          "price": 3.8,
          "oddsText": "3.80",
          "isAvailable": true
        },
        {
          "id": "6170635659",
          "code": "2",
          "price": 5,
          "oddsText": "5.00",
          "isAvailable": true
        }
      ]
    },
    {
      "marketId": 1467305214,
      "betTypeSysname": "SOCCER_UNDER_OVER",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6084771517",
          "code": "O",
          "price": 1.72,
          "oddsText": "1.72",
          "isAvailable": true
        },
        {
          "id": "6084771518",
          "code": "U",
          "price": 2.1,
          "oddsText": "2.10",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43148030",
  "sportName": "basketball",
  "sportSysname": "BASKETBALL_GAME",
  "regionId": 1236,
  "regionCaption": "NCAA",
  "regionImageId": 151058,
  "competitionId": 33405,
  "competitionCaption": "NCAA",
  "homeTeamName": "Florida State",
  "homeTeamImageId": 75982,
  "awayTeamName": "Alabama State",
  "awayTeamImageId": 103840,
  "startDateTime": "2025-11-08T00:00:00.0857937+00:00",
  "markets": [
    {
      "marketId": 1499090451,
      "betTypeSysname": "BASKETBALL_MATCH_RESULT_NODRAW",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6211223812",
          "code": "1",
          "price": 1.01,
          "oddsText": "1.01",
          "isAvailable": true
        },
        {
          "id": "6211223813",
          "code": "2",
          "price": 16,
          "oddsText": "16.00",
          "isAvailable": true
        }
      ]
    },
    {
      "marketId": 1499155085,
      "betTypeSysname": "BASKETBALL_MATCH_RESULT_HANDICAP",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6211466532",
          "code": "1",
          "price": 1.85,
          "oddsText": "1.85",
          "isAvailable": true
        },
        {
          "id": "6211466533",
          "code": "2",
          "price": 1.92,
          "oddsText": "1.92",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43264270",
  "sportName": "tennis",
  "sportSysname": "TENNIS_SINGLES_MATCH",
  "regionId": 1188,
  "regionCaption": "ITF (F)",
  "regionImageId": 143348,
  "competitionId": 35414,
  "competitionCaption": "EUA - Lincoln (F)",
  "homeTeamName": "Edda Mamedova",
  "homeTeamImageId": 171992,
  "awayTeamName": "Sonja Zhiyenbayeva",
  "awayTeamImageId": 140196,
  "startDateTime": "2025-11-07T18:00:00.0795739+00:00",
  "markets": [
    {
      "marketId": 1499183287,
      "betTypeSysname": "TENNIS_SINGLES_MATCH_WINNER",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6211587059",
          "code": "1",
          "price": 2,
          "oddsText": "2.00",
          "isAvailable": true
        },
        {
          "id": "6211587060",
          "code": "2",
          "price": 1.7,
          "oddsText": "1.70",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43255333",
  "sportName": "baseball",
  "sportSysname": "BASEBALL_GAME",
  "regionId": 110,
  "regionCaption": "México",
  "regionImageId": 80727,
  "competitionId": 14555,
  "competitionCaption": "Liga Mexicana del Pacifico",
  "homeTeamName": "Yaquis de Obregon",
  "homeTeamImageId": 0,
  "awayTeamName": "Charros De Jalisco",
  "awayTeamImageId": 0,
  "startDateTime": "2025-11-07T02:10:00.0876385+00:00",
  "markets": [
    {
      "marketId": 1498660642,
      "betTypeSysname": "BASEBALL_MATCH_RESULT_NODRAW",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6209348293",
          "code": "1",
          "price": 1.7,
          "oddsText": "1.70",
          "isAvailable": true
        },
        {
          "id": "6209348294",
          "code": "2",
          "price": 2,
          "oddsText": "2.00",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43070622",
  "sportName": "volleyball",
  "sportSysname": "VOLLEYBALL_GAME",
  "regionId": 92,
  "regionCaption": "Uruguai",
  "regionImageId": 80767,
  "competitionId": 13690,
  "competitionCaption": "Primera (F)",
  "homeTeamName": "CBR B (F)",
  "homeTeamImageId": 0,
  "awayTeamName": "Club Nacional de Football (F)",
  "awayTeamImageId": 0,
  "startDateTime": "2025-11-08T03:00:00.0912071+00:00",
  "markets": [
    {
      "marketId": 1494776598,
      "betTypeSysname": "VOLLEYBALL_MATCH_RESULT",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6194250889",
          "code": "1",
          "price": 1.08,
          "oddsText": "1.08",
          "isAvailable": true
        },
        {
          "id": "6194250890",
          "code": "2",
          "price": 6.5,
          "oddsText": "6.50",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43232462",
  "sportName": "american-football",
  "sportSysname": "AMERICAN_FOOTBALL_GAME",
  "regionId": 55,
  "regionCaption": "EUA",
  "regionImageId": 80529,
  "competitionId": 9182,
  "competitionCaption": "NCAAF",
  "homeTeamName": "Columbia Lions",
  "homeTeamImageId": 0,
  "awayTeamName": "Harvard",
  "awayTeamImageId": 0,
  "startDateTime": "2025-11-08T00:00:00.0987816+00:00",
  "markets": [
    {
      "marketId": 1497290690,
      "betTypeSysname": "AMERICAN_FOOTBALL_MATCH_RESULT_NO_DRAW",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6204104513",
          "code": "1",
          "price": 20,
          "oddsText": "20.00",
          "isAvailable": true
        },
        {
          "id": "6204104514",
          "code": "2",
          "price": 1.01,
          "oddsText": "1.01",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43254114",
  "sportName": "ice-hockey",
  "sportSysname": "ICE_HOCKEY_GAME",
  "regionId": 2,
  "regionCaption": "Europa",
  "regionImageId": 88131,
  "competitionId": 38045,
  "competitionCaption": "European Cup of Nations",
  "homeTeamName": "Grã-Bretanha",
  "homeTeamImageId": 141809,
  "awayTeamName": "Itália",
  "awayTeamImageId": 131702,
  "startDateTime": "2025-11-07T15:00:00.1014439+00:00",
  "markets": [
    {
      "marketId": 1499181302,
      "betTypeSysname": "ICE_HOCKEY_MATCH_WINNER",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6211576489",
          "code": "1",
          "price": 3.5,
          "oddsText": "3.50",
          "isAvailable": true
        },
        {
          "id": "6211576490",
          "code": "2",
          "price": 1.26,
          "oddsText": "1.26",
          "isAvailable": true
        }
      ]
    }
  ]
}
{
  "id": "43211395",
  "sportName": "handball",
  "sportSysname": "HANDBALL_GAME",
  "regionId": 27,
  "regionCaption": "Dinamarca",
  "regionImageId": 80545,
  "competitionId": 1563,
  "competitionCaption": "Kvindeligaen (F)",
  "homeTeamName": "Hoej Elite (F)",
  "homeTeamImageId": 136548,
  "awayTeamName": "Nykobing Handboldklub (F)",
  "awayTeamImageId": 136276,
  "startDateTime": "2025-11-07T18:30:00.099058+00:00",
  "markets": [
    {
      "marketId": 1496603666,
      "betTypeSysname": "HANDBALL_MATCH_RESULT",
      "useInstanceCaption": false,
      "betItems": [
        {
          "id": "6201603267",
          "code": "1",
          "price": 8,
          "oddsText": "8.00",
          "isAvailable": true
        },
        {
          "id": "6201603268",
          "code": "X",
          "price": 12,
          "oddsText": "12.00",
          "isAvailable": true
        },
        {
          "id": "6201603269",
          "code": "2",
          "price": 1.1,
          "oddsText": "1.10",
          "isAvailable": true
        }
      ]
    }
  ]
}
Key Metadata Fields (Common Across All Sports):
  • sportName - Sport identifier (e.g., “soccer”, “basketball”)
  • sportSysname - System name for the sport type
  • homeTeamName / awayTeamName - Team names
  • homeTeamImageId / awayTeamImageId - Team logo identifiers
  • regionCaption - Human-readable region name
  • competitionCaption - Human-readable competition name
  • markets - Array of available betting markets with odds
  • betItems - Individual betting options within each market
Why Metadata? This unified structure allows the API to support all sports consistently. Instead of having sport-specific columns, all event details are contained in a flexible JSON structure.

Market

Betting markets available for an event. Common Market Types:
  • SOCCER_MATCH_RESULT - Full time result (1/X/2)
  • SOCCER_UNDER_OVER - Goals over/under
  • SOCCER_DOUBLE_CHANCE - Combine two outcomes
  • SOCCER_BOTH_TEAMS_TO_SCORE - Yes/No
  • BASKETBALL_MONEYLINE - Winner
  • BASKETBALL_SPREAD - Point spread
Fields:
  • id - Unique identifier (string)
  • eventId - Parent event (string)
  • betTypeSysname - Market type system name (string)
Example:
{
  "id": "mkt_123",
  "eventId": "123456",
  "betTypeSysname": "SOCCER_MATCH_RESULT",
}

BetItem

Individual betting options within a market. Fields:
  • id - Unique identifier (string)
  • marketId - Parent market (string)
  • code - Bet code (string)
  • price - Decimal odds (float, e.g., 2.10)
  • oddsText - Display text for odds (string, e.g., “2.10”)
  • isAvailable - Whether this bet can be placed (boolean, default: true)
  • marketStatistic - Optional stat payload (e.g., win %)
  • lastUpdated - When odds were last updated (DateTime)
Example:
{
  "id": "bet_001",
  "marketId": "mkt_123",
  "code": "1",
  "price": 2.10,
  "oddsText": "2.10",
  "isAvailable": true,
  "marketStatistic": null,
  "lastUpdated": "2025-11-07T14:30:00Z"
}
We strip bookmaker-provided captions (caption, codeCaption, etc.) from bet items to keep payloads consistent across sports. Use the code plus your own translation layer for display labels.
Decimal Odds Explained: A price of 2.10 means for every 1wagered,youreceive1 wagered, you receive 2.10 back if you win (including your stake). So a 100betreturns100 bet returns 210 (110profit+110 profit + 100 stake).

Live Event Data

For live (in-progress) events, additional real-time data is available.

LiveEventData

Real-time match statistics updated during the event. Core Fields:
  • id - Unique identifier (string)
  • eventId - Parent event (string)
  • betContextId - Bet context identifier (string)
  • liveDataJson - Sport-specific live data including scores, stats, and match phase (JSON)
  • fetchedAt - When data was fetched (DateTime)
  • lastUpdated - Last update timestamp (DateTime)
Sport-Specific Structure: The liveDataJson field contains different data structures for each sport. Soccer includes goals/corners/cards, basketball has quarter scores, tennis tracks sets/games, and baseball shows innings/outs/bases.
Common Fields in liveDataJson:
  • isLive - Whether event is currently live
  • isInPlay - Whether in-play betting is available
  • phaseSysname - Match phase (e.g., “SOCCER_MATCH_SECOND_HALF”, “72’”, “FT”)
  • discriminator - Sport type discriminator (e.g., “SoccerMatchLiveDataModel”)
Soccer Example:
{
  "id": "live_001",
  "eventId": "123456",
  "betContextId": "ctx_123",
  "liveDataJson": {
    "discriminator": "SoccerMatchLiveDataModel",
    "eventSysname": "SOCCER_MATCH",
    "isLive": true,
    "isInPlay": true,
    "homeGoals": 2,
    "awayGoals": 1,
    "homeCorners": 5,
    "awayCorners": 3,
    "homeYellowCards": 2,
    "awayYellowCards": 1,
    "homeRedCards": 0,
    "awayRedCards": 0,
    "phaseSysname": "SOCCER_MATCH_SECOND_HALF",
    "elapsedSeconds": 4320,
    "referenceTime": "2025-11-08T16:12:30Z",
    "referenceTimeUnix": 1762443150
  },
  "fetchedAt": "2025-11-08T16:12:30Z",
  "lastUpdated": "2025-11-08T16:12:30Z"
}
Basketball Example:
{
  "liveDataJson": {
    "discriminator": "BasketballGameLiveDataModel",
    "eventSysname": "BASKETBALL_GAME",
    "isLive": true,
    "isInPlay": false,
    "homePoints": 89,
    "awayPoints": 77,
    "quarterScores": [
      {"caption": "1º P", "sysname": "Q1", "homeScore": 19, "awayScore": 29},
      {"caption": "2º P", "sysname": "Q2", "homeScore": 28, "awayScore": 24},
      {"caption": "3º P", "sysname": "Q3", "homeScore": 17, "awayScore": 16},
      {"caption": "4º P", "sysname": "Q4", "homeScore": 25, "awayScore": 8}
    ],
    "homeFouls": 5,
    "awayFouls": 9
  }
}
Tennis Example:
{
  "liveDataJson": {
    "discriminator": "TennisSinglesMatchLiveDataModel",
    "eventSysname": "TENNIS_SINGLES_MATCH",
    "isLive": true,
    "isInPlay": true,
    "player1Sets": 0,
    "player2Sets": 1,
    "setScores": [
      {"caption": "1º Set", "player1Score": 3, "player2Score": 6, "player2Winner": true},
      {"caption": "2º set", "player1Score": 0, "player2Score": 5, "inPlay": true}
    ],
    "player1GamePointsText": "30",
    "player2GamePointsText": "40",
    "player1Serves": true,
  }
}
Baseball Example:
{
  "liveDataJson": {
    "discriminator": "BaseballGameLiveDataModel",
    "eventSysname": "BASEBALL_GAME",
    "isLive": true,
    "isInPlay": true,
    "homeRuns": 3,
    "awayRuns": 7,
    "outs": 1,
    "balls": 1,
    "strikes": 0,
    "bases": [false, false, false],
    "inningScores": [
      {"caption": "1º Inning", "homeScore": 0, "awayScore": 0},
      {"caption": "2º Inning", "homeScore": 2, "awayScore": 0}
    ]
  }
}
Need Examples? Contact [email protected] for TypeScript interfaces and frontend integration examples for all sports.

LiveBetItem

Snapshots of odds changes during live events. Purpose: Track how odds move in real-time as the match progresses. Fields:
  • id - Unique identifier (string)
  • liveEventDataId - Parent live event data (string)
  • betItemId - Reference to the bet option (string)
  • marketId - Market identifier (string)
  • marketSysname - Market system name (string)
  • marketCaption - Market display caption (string)
  • marketData - Market data (JSON)
  • code - Bet code (string)
  • caption - Display caption (string)
  • price - Decimal odds at this snapshot (float)
  • oddsText - Display text for odds (string)
  • isAvailable - Whether bet is available (boolean, default: true)
  • priceChange - Price change from previous snapshot (float, optional)
  • timestamp - When snapshot was taken (string)
  • capturedAt - Capture timestamp (DateTime)
Example:
{
  "id": "live_bet_001",
  "liveEventDataId": "live_001",
  "betItemId": "bet_001",
  "marketId": "mkt_123",
  "marketSysname": "SOCCER_MATCH_RESULT",
  "marketCaption": "Match Result",
  "code": "1",
  "caption": "Arsenal",
  "price": 1.95,
  "oddsText": "1.95",
  "isAvailable": true,
  "priceChange": -0.15,
  "timestamp": "72:30",
  "capturedAt": "2025-11-08T16:12:30Z"
}
This allows you to see odds movement history and identify betting opportunities based on market reactions.

AI Prediction Entities

The API provides AI-generated predictions and analysis.

BettingRecommendation

AI-generated betting picks with confidence scoring. Fields:
  • id - Unique identifier (string)
  • eventId - Parent event (string)
  • marketId - Market identifier (string)
  • betItemId - Bet item identifier (string, optional)
  • analysisTimestamp - When analysis was performed (DateTime)
  • outcome - Predicted result (string)
  • odds - Decimal odds for the pick (float)
  • point - Point value for spreads/totals (float, optional)
  • confidence - Risk level: Low, Medium, or High (string)
  • edgePercentage - Expected value edge (float, e.g., 6.8 means 6.8%)
  • kellyFraction - Suggested stake size using Kelly Criterion (float)
  • rationale - Why the AI recommends this bet (string array)
  • riskFactors - Potential risks to consider (string array)
  • settled - Whether bet has been settled (boolean, default: false)
  • result - Settlement result: won, lost, or push (ResultType enum, optional)
  • settlementDate - When bet was settled (DateTime, optional)
  • actualReturn - Actual return amount (float, optional)
Confidence Levels:
  • Low - Edge < 3%
  • Medium - Edge 3-5%
  • High - Edge > 5%
Example:
{
  "id": "rec_001",
  "eventId": "123456",
  "marketId": "mkt_123",
  "betItemId": "bet_001",
  "outcome": "Arsenal",
  "odds": 2.10,
  "confidence": "High",
  "edgePercentage": 6.8,
  "kellyFraction": 0.032,
  "rationale": ["Arsenal's home form excellent", "Chelsea defensive issues"],
  "riskFactors": ["Chelsea has key players returning from injury"],
  "settled": false,
}

MrDogePick

Featured AI recommendations (parlays or highlighted picks). Fields:
  • id - Unique identifier (string)
  • eventId - Parent event (string, unique)
  • pickType - Type of pick (string, default: “single”)
  • recommendations - Array of recommendations (JSON)
  • totalOdds - Combined odds for parlay (float)
  • featuredOrder - Display order, lower = higher priority (integer, optional)
  • isActive - Whether pick is active (boolean, default: true)
  • expiresAt - When this pick expires (DateTime)
  • settled - Whether bet has been settled (boolean, default: false)
  • result - Settlement result: won, lost, or push (ResultType enum, optional)
  • settlementDate - When bet was settled (DateTime, optional)
  • actualReturn - Actual return amount (float, optional)
  • createdAt - Creation timestamp (DateTime)
Example:
{
  "id": "pick_001",
  "eventId": "123456",
  "pickType": "parlay",
  "recommendations": [
    {"eventId": "123456", "outcome": "Arsenal", "odds": 2.10},
    {"eventId": "123456", "outcome": "Over 2.5", "odds": 1.85}
  ],
  "totalOdds": 3.89,
  "featuredOrder": 1,
  "isActive": true,
  "expiresAt": "2025-11-08T15:00:00Z",
  "settled": false
}

ProcessedInsight

Market analysis and value opportunities. Fields:
  • id - Unique identifier (string)
  • eventId - Parent event (string, unique)
  • analysisTimestamp - When analysis was performed (DateTime)
  • marketEfficiencyScore - How efficiently priced the market is (float, 0-100)
  • lineMovementData - How odds have shifted (JSON, optional)
  • valueOpportunities - Identified +EV bets (JSON, optional)
  • riskAssessment - Overall risk analysis (JSON, optional)
  • aiAnalysisNotes - Additional AI analysis notes (string, optional)
  • createdAt - Creation timestamp (DateTime)
  • updatedAt - Last update timestamp (DateTime)
Example:
{
  "id": "insight_001",
  "eventId": "123456",
  "marketEfficiencyScore": 87.5,
  "valueOpportunities": [
    {
      "market": "Match Result",
      "outcome": "Arsenal",
      "currentOdds": 2.10,
      "fairOdds": 1.95,
      "edge": 7.7
    }
  ],
  "riskAssessment": {
    "variance": "Medium",
    "liquidity": "High",
    "sharpMoney": "Backing Arsenal"
  },
  "aiAnalysisNotes": "Strong home form suggests value in Arsenal backing"
}

Key Concepts

Event Status Lifecycle

upcoming → live → completed
  • upcoming: Event hasn’t started, bets can be placed
  • live: Event in progress, in-play betting available
  • completed: Event finished, bets are settled

Odds Format

The API uses decimal odds (also called European odds):
  • 2.00 = Even money (100% profit)
  • 1.50 = -200 American odds (50% profit)
  • 3.00 = +200 American odds (200% profit)
Formula: Potential Return = Stake × Odds

Implied Probability

Odds can be converted to probability: Implied Probability = 1 / Decimal Odds Example: Odds of 2.10 → 1 / 2.10 = 0.476 → 47.6% probability

Next Steps