WagerWise Odds API

Developer Documentation

This page contains the WagerWise Odds API documentation. All endpoints require an API key.

Base URL: https://wagerwise-odds.com

Tip: Change the Base URL above to update all request examples instantly.

Authentication

Send your key with each request in the header. If the key is missing or invalid you will receive401 Unauthorized Some endpoints also enforce feature flags and may return 403 Forbidden

cURL

curl -H "X-API-Key: YOUR_KEY" https://wagerwise-odds.com/

Security best practice: keep API keys on your server; never ship them in public client code.

Endpoints

All endpoints below are available under the Base URL and require X-API-Key

GET or POST /api/fixtures

Returns scheduled games grouped by league. With odds_data_id's included.

Headers: X-API-Key: YOUR_KEY
curl -H "X-API-Key: YOUR_KEY" \
    https://wagerwise-odds.com/api/fixtures
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.get(f"{BASE}/api/fixtures", headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/api/fixtures`, { headers: { 'X-API-Key': KEY } })
    .then(r => r.json())
    .then(console.log);
Response shape
"Premier League": {
    "game_masterID": {
        "sport": "soccer",
        "league_name": "Premier League",
        "start_time": "2025-08-21T18:00:00Z",
        "team_names": { "home_team": "Team A", "away_team": "Team B" },
        "game_masterID": "game_masterID",
        "last_updated_at": "2025-08-20T12:34:56Z",
        "bookmaker_data": { "bet365": "odds_data_id", "sportsbet": "odds_data_id" }
    }
}

POST /api/odds

Returns the odds for a specific bookmaker odds data ID.

Body: {"odds_data_id":"odds_data_id"}
curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_KEY" \
    -d '{"odds_data_id":"odds_data_id"}' \
    https://wagerwise-odds.com/api/odds
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.post(f"{BASE}/api/odds", json={"odds_data_id":"odds_data_id"}, headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/api/odds`, {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-API-Key": KEY },
    body: JSON.stringify({ odds_data_id: "odds_data_id" })
    }).then(r => r.json()).then(console.log);
Response (truncated)
"total/over 161.5 (full time)": {
    "odds": 1.9, "line": "over 161.5", "type": "total standard",
    "period": "full time", "number_of_outcomes": 0,
    "odds_data_ID": "AFL:9409461:sportsbet",
    "odds_no_vig": 2.016
}

POST /api/results

Returns final results for one or more game_masterID. Requires the account feature flag results_access.

Body: {"game_masterID":"game_masterID"} or {"game_masterID":["ID1","ID2"]}
curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_KEY" \
    -d '{"game_masterID":["ID1","ID2"]}' \
    https://wagerwise-odds.com/api/results
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.post(f"{BASE}/api/results", json={"game_masterID":["ID1","ID2"]}, headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/api/results`, {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-API-Key": KEY },
    body: JSON.stringify({ game_masterID: ["ID1", "ID2"] })
    }).then(r => r.json()).then(console.log);
Response shape
{
    "ID1": { "home_score": 102, "away_score": 97, "status": "final" },
    "ID2": "Missing game data: attempt in a few hours"
    }

POST /api/results/ev-bet

Fetches EV bet records for one or more betID.

Body: {"betID":"BET_ID"} or {"betID":["ID1","ID2"]}
curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_KEY" \
    -d '{"betID":["BET123","BET456"]}' \
    https://wagerwise-odds.com/api/results/ev-bet
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.post(f"{BASE}/api/results/ev-bet", json={"betID":["BET123","BET456"]}, headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/api/results/ev-bet`, {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-API-Key": KEY },
    body: JSON.stringify({ betID: ["BET123","BET456"] })
    }).then(r => r.json()).then(console.log);
Response fields
[{
    "game_masterID": "...",
    "sport": "...",
    "league_name_repr": "...",
    "away_team": "...", "home_team": "...",
    "start_time": "...", "start_time_TIMESTAMP": "...",
    "betID": "...", "latest_timestamp": "...", "winning_line": "win|loss|pending",
    "market_type": "...", "period": 0,
    "bookmaker_name": "...", "line": 1.5, "line_repr": "-1.5",
    "match_link": "...", "push_line": 0,
    "start_price": 1.85
    }]

POST /api/results/arb-bet

Fetches arbitrage bet records for one or more betID, including up to three opposing selections.

Body: {"betID":"BET_ID"} or {"betID":["ID1","ID2"]}
curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_KEY" \
    -d '{"betID":"BET123"}' \
    https://wagerwise-odds.com/api/results/arb-bet
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.post(f"{BASE}/api/results/arb-bet", json={"betID":"BET123"}, headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/api/results/arb-bet`, {
    method: "POST",
    headers: { "Content-Type": "application/json", "X-API-Key": KEY },
    body: JSON.stringify({ betID: "BET123" })
    }).then(r => r.json()).then(console.log);
Response fields
{
    "game_masterID": "...", "sport": "...", "league_name_repr": "...",
    "away_team": "...", "home_team": "...",
    "start_time": "...", "start_time_TIMESTAMP": "...",
    "betID": "...", "latest_timestamp": "...", "winning_line": "win|loss|pending",
    "selection_1_bookmaker_name": "...", "selection_1_line": 1.9, "selection_1_line_repr": "...", "selection_1_match_link": "...", "selection_1_push_line": 0,
    "selection_2_bookmaker_name": "...", "selection_2_line": 2.0, ...,
    "selection_3_bookmaker_name": "...", ...,
    "market_type": "...", "period": 0
    }

GET or POST /data/{collection_name}

Returns a curated JSON formatted bets. Valid collections:

  • current_middle_bets
  • current_arbitrage
  • current_pos_ev
  • current_freebets
curl -H "X-API-Key: YOUR_KEY" \
    https://wagerwise-odds.com/data/current_pos_ev
import requests
    BASE = 'https://wagerwise-odds.com'
    KEY  = 'YOUR_KEY'
    r = requests.get(f"{BASE}/data/current_pos_ev", headers={'X-API-Key': KEY})
    print(r.json())
const BASE = 'https://wagerwise-odds.com';
    const KEY  = 'YOUR_KEY';
    fetch(`${BASE}/data/current_pos_ev`, { headers: { 'X-API-Key': KEY } })
    .then(r => r.json())
    .then(console.log);
Response (array)
[{ "betID": "...", "ev": 12.3, "bookmaker": "...", "...": "..." }]

Note: query params percent_limit and membership are reserved and currently ignored.

Errors & Status Codes

All requests count toward your monthly quota; tallied per API key.

200 OK

Successful request.

400 Bad Request

Missing or invalid body parameter (e.g. odds_data_id, game_masterID, betID).

401 Unauthorized

Missing or invalid X-API-Key.

403 Forbidden

Feature not enabled for this API key (e.g. results_access).

404 Not Found

No document found (e.g. missing odds or bets), or unknown collection name.

Support

Questions or issues? Email contact@wagerwise.com.au with your API key (redacted) and the failing endpoint + request ID if available.