What are BettorEdge Markets?
This guide explains how BettorEdge Markets are structured and how to build order context hashes to identify specific trading opportunities.
How BettorEdge Markets Are Structured
BettorEdge markets follow a hierarchical structure that allows you to trade on specific outcomes of sporting events.
The Hierarchy: League → Contest → Market → Side → Side Type & Participant → Variable
League (e.g., NBA, NFL, UFC)
└─ Contest (team, tournament, match)
└─ Market (winner, spread, total points, etc.)
└─ Side (over/under, yes/no, home/away)
└─ Side Type & Participant (athlete, team, or side)
└─ Variable (if variable_required: true)
1. League
The sport or competition level (NBA, NFL, UFC, etc.)
2. Contest
A specific event within a league. There are three contest types:
- team - Regular games between two teams (e.g., Lakers vs Nuggets)
- tournament - Futures markets (e.g., "Who will win the NBA Championship?")
- match - Individual matchups (e.g., UFC fights)
3. Market
The type of prediction you're making. Each contest supports multiple markets:
- Winner - Who will win the game/match
- Spread - Will a team cover the spread
- Total - Combined score over/under
- Total Points - Individual player points
- Total Rebounds - Individual player rebounds
- And many more...
4. Side
Every market has two sides representing opposite outcomes:
- over / under - For totals and player props
- yes / no - For binary questions
- home / away - For game outcomes
5. Side Type & Participant
Every order requires a side_type and side_id (participant):
For markets with multiple_participants: true (like player props):
- The same market works for different players/teams
- Example: "Total Points Scored" market
- Can be used for LeBron James (
side_type: "athlete",side_id: "2954") - Can be used for Anthony Davis (
side_type: "athlete",side_id: "5821") - Can be used for any player in the game
- Can be used for LeBron James (
For markets with multiple_participants: false (like spreads or game totals):
- Still requires a participant, but it's the team involved
- Example: Spread market
- Nuggets spread (
side_type: "team",side_id: "nuggets_team_id") - Lakers spread (
side_type: "team",side_id: "lakers_team_id")
- Nuggets spread (
For game totals (over/under on combined score):
- Uses
side_type: "side"andside_idis the side itself ("over" or "under")
6. Variable (Variable-Required Markets)
Markets where variable_required: true allow you to specify a line or number:
Examples:
- Player props: LeBron over 26.5 points (or 28, or 31.5, etc.)
- Game totals: Lakers vs Nuggets over 240.5 total points
- Spreads: Away team -7 (or -6.5, or -8, etc.)
Non-variable markets (variable_required: false) don't need a line - they're binary yes/no:
- Will LeBron James start? (yes/no)
- Will the Lakers win? (yes/no)
For these markets, use 0 as the variable.
Understanding the Order Context Hash
The order context hash is the key to trading on BettorEdge. It uniquely identifies exactly what you want to trade.
What is an Order Context Hash?
An order context hash is a colon-separated string that specifies:
- Which contest you're trading on (which game/event)
- Which market (e.g., total points, spread, winner)
- Which side you're taking (over/under, yes/no, home/away)
- Which participant (athlete or team)
- Which line/variable (e.g., 26.5 points, -7 spread)
Order Context Hash Format
{contest_type}:{contest_id}:{market_id}:{side}:{side_type}:{side_id}:{variable}
Breaking Down Each Component
| Component | Description | Example |
|---|---|---|
| contest_type | Type of contest | "team", "tournament", or "match" |
| contest_id | Unique identifier for the game/match | "lakers_nuggets_20240115" |
| market_id | The category of prediction (bigint) | 12345 |
| side | Your prediction | "over" or "under" |
| side_type | What type of entity | "athlete", "team", or "side" |
| side_id | Specific athlete or team ID | "2954" (LeBron's ID) |
| variable | The line/number you're betting on | "31.5" (or "0" if not applicable) |
Complete Examples
Let's trace complete examples showing the full order context hash:
Example 1: Player Prop - LeBron James over 26.5 points
NBA (league)
└─ Lakers vs Nuggets - Jan 15, 2024
contest_type: team
contest_id: lakers_nuggets_20240115
└─ Total Points Scored
market_id: 12345
└─ Over
side: over
└─ Athlete
side_type: athlete
side_id: 2954 (LeBron James)
└─ 26.5 points
variable: 26.5
Order Context Hash: team:lakers_nuggets_20240115:12345:over:athlete:2954:26.5
Example 2: Game Total - Nuggets vs Lakers over 240.5 points
NBA (league)
└─ Nuggets vs Lakers - Jan 15, 2024
contest_type: team
contest_id: nuggets_lakers_20240115
└─ Game Total
market_id: 67890
└─ Over
side: over
└─ Side
side_type: side
side_id: over
└─ 240.5 points
variable: 240.5
Order Context Hash: team:nuggets_lakers_20240115:67890:over:side:over:240.5
(Note: For game totals, side_type is "side" and side_id is the side itself: "over" or "under")
Example 3: Spread - Nuggets -7
NBA (league)
└─ Nuggets vs Lakers - Jan 15, 2024
contest_type: team
contest_id: nuggets_lakers_20240115
└─ Spread
market_id: 54321
└─ Away (Nuggets)
side: away
└─ Team
side_type: team
side_id: nuggets_team_id
└─ -7 spread
variable: -7
Order Context Hash: team:nuggets_lakers_20240115:54321:away:team:nuggets_team_id:-7
Key Takeaways
- Order context hashes are flexible - You can create markets that don't exist yet
- Markets are reusable - Use "Total Points Scored" market for any athlete by changing the
side_id - Variables are customizable - Trade at any line you want, not just the suggested ones
- No liquidity required - If no one is trading at your line, you create the first liquidity
- Seven components - Every hash has all seven parts: contest_type, contest_id, market_id, side, side_type, side_id, variable
Next Steps
Now that you understand how BettorEdge Markets work:
- Understanding Liquidity - Learn how to find and use existing liquidity
- Place Your First Order - Make your first trade
Need help? Check out the Markets API Reference for detailed endpoint documentation.