GET /events - Fetch Games, Odds, and Results

Get a list of Events

GET https://api.sockodds.com/v2/events/

Retrieve sports events with odds, status, teams, players, results and bookmaker links. Filter by league, team, date or odds market. Includes every bookmaker line your plan allows.

eventID takes priority over all other filtersWhen you provide eventID or eventIDs, the API uses only those IDs to fetch results — all other query filters (sportID, leagueID, live, started, finalized, startsAfter, startsBefore, includeFinished) are ignored. Response-shaping parameters like oddID, bookmakerID, playerID, includeAltLines and includeOpposingOdds still apply.

Query parameters

ParameterTypeDescription
eventIDstringAn eventID to get Event data for e.g. afl_2026-09-12_brisbane_lions_vs_adelaide_crows
eventIDsstringA comma separated list of eventIDs to get Event data for
sportIDstringA sportID or comma-separated list of sportIDs to get Events for e.g. AUSSIE_RULES
leagueIDstringA leagueID or comma-separated list of leagueIDs to get Events for e.g. AFL,NRL
typestringOnly include Events of the specified type (match, tournament, prop)
oddsAvailablebooleanWhether you want only Events which do (true) or do not (false) have odds markets which are currently available (open for wagering)
oddsPresentbooleanWhether you want only Events which do (true) or do not (false) have any associated odds markets regardless of whether those odds markets are currently available
oddIDstringAn oddID or comma-separated list of oddIDs to include odds for. Replace the playerID slot with PLAYER_ID to match every player. `oddIDs` is accepted as an alias. e.g. points-home-game-ml-home
includeOpposingOddsbooleanWhether to include opposing odds for each included oddID (`includeOpposingOddIDs` is accepted as an alias)
includeAltLinesbooleanWhether to include alternate lines in the odds byBookmaker data. Off by default — alt lines can multiply the payload.
expandResults notebooleanWhether to expand the results object to include all stat values rather than just the base set
Accepted for compatibility. SockOdds always returns every result value the source carries, so this flag has no effect.
includeOpenCloseOdds notebooleanWhether to include open and close odds values (openOdds, closeOdds, openSpread, closeSpread, openOverUnder, closeOverUnder) in the odds byBookmaker data
Accepted for compatibility. SockOdds does not snapshot opening and closing prices yet, so these fields are absent whatever you pass.
bookmakerIDstringA bookmakerID or comma-separated list of bookmakerIDs to include odds for e.g. sportsbet,tab
teamIDstringA teamID or comma-separated list of teamIDs to include Events for e.g. BRISBANE_LIONS_AFL
playerIDstringA playerID or comma-separated list of playerIDs to include Events (and associated odds) for
finalizedbooleanOnly include finalized Events (true), exclude unfinalized Events (false) or all Events (omit)
livebooleanOnly include live Events (true), only non-live Events (false) or all Events (omit)
startedbooleanOnly include Events which have previously started (true), only Events which have not previously started (false) or all Events (omit)
endedbooleanOnly include Events which have ended (true), only Events which have not ended (false) or all Events (omit)
cancelledbooleanOnly include cancelled Events (true), only non-cancelled Events (false) or all Events (omit)
startsAfterdate-timeGet Events that start after this date e.g. 2026-09-01T00:00:00Z
startsBeforedate-timeGet Events that start before this date
includeFinished notebooleanSockOdds extension. Without a date window, eventID or this flag, events that kicked off more than 24 hours ago are omitted. Pass true to list everything the store retains.
SockOdds-only parameter; SportsGameOdds ignores it.
limitnumberThe maximum number of Events to return (default 10, max 100)
cursorstringThe cursor for the request. Used to get the next group of results. This is an opaque token — pass the nextCursor value from the prior response unchanged.

Response

Paginated: { "success": true, "data": Event[], "nextCursor": string | null, "notice": string? }

Event

Contains basic information, consensus odds, results (stats & scores), team info, lineups and bookmaker links for a given event/game

FieldTypeDescription
eventIDstringUnique identifier for the event (e.g. afl_2026-09-12_brisbane_lions_vs_adelaide_crows)
sportIDstringThe sport (AUSSIE_RULES, RUGBY_LEAGUE, SOCCER, …)
leagueIDstringThe league (AFL, NRL, RUGBYLEAGUE_NRLW, EPL, …) — always the feed's own key, never constructed
typestringmatch, tournament or prop
statusobjectstarted, ended, live, cancelled, delayed, finalized, completed, startsAt, oddsPresent, oddsAvailable, currentPeriodID, periods{started,ended}, displayShort/displayLong
infoobjectdisplayName, commenceTime, lastUpdatedAt, stale (no source write for 45 min), bookmakersPresent, sourceBookmakerCount
teamsobjecthome/away → { teamID, names{long,medium,short}, colors, statEntityID, score }
playersobjectplayerID → { playerID, teamID, name, firstName, lastName } — the production SGO player ids
resultsobjectNested results in the format {periodID}.{statEntityID}.{statID} → number, where the source carries them
oddsobjectoddID → Odds object. Every market the event is priced on, all bookmakers nested under byBookmaker
linksobjectbookmakers{bookmakerID → event URL} and betslip{bookmakerID → bet-slip strategy} deeplinks, straight from each book's own event ids

Status codes

StatusBody
200Success
400{"success":false,"error":"Invalid params"}
401{"success":false,"error":"Invalid API key"}
403{"success":false,"error":"Inactive API key"}
429{"success":false,"error":"Rate limit exceeded"} (Retry-After header)
500{"success":false,"error":"Query failed"}

Example response

Trimmed to one market; see the quickstart for a full event.

{
  "success": true,
  "nextCursor": "afl_2026-09-03_fremantle_vs_hawthorn",
  "data": [
    {
      "eventID": "afl_2026-09-03_fremantle_vs_hawthorn",
      "sportID": "AUSSIE_RULES",
      "leagueID": "AFL",
      "type": "match",
      "status": {
        "started": false,
        "ended": false,
        "live": false,
        "cancelled": false,
        "finalized": false,
        "oddsPresent": true,
        "oddsAvailable": true
      },
      "info": {
        "stale": false
      },
      "odds": {
        "points-all-game-eo-odd": {
          "oddID": "points-all-game-eo-odd",
          "opposingOddID": "points-all-game-eo-even",
          "marketName": "Odd/Even Total Points",
          "statID": "points",
          "statEntityID": "all",
          "periodID": "game",
          "betTypeID": "eo",
          "sideID": "odd",
          "bookOdds": "-116",
          "fairOdds": null,
          "bookOverUnder": null,
          "bookSpread": null,
          "byBookmaker": {
            "unibet": {
              "bookmakerID": "unibet",
              "odds": "-115",
              "decimal": 1.87,
              "available": true,
              "lastUpdatedAt": "2026-09-03T10:22:09.000Z"
            },
            "tabtouch": {
              "bookmakerID": "tabtouch",
              "odds": "-118",
              "decimal": 1.85,
              "available": true,
              "lastUpdatedAt": "2026-09-03T10:21:03.000Z"
            }
          }
        }
      }
    }
  ]
}

Code samples

curl -X GET "https://api.sockodds.com/v2/events/?leagueID=AFL&oddsAvailable=true&limit=1" \
  -H "x-api-key: YOUR_API_KEY"
const r = await fetch("https://api.sockodds.com/v2/events/?leagueID=AFL&oddsAvailable=true&limit=1", { headers: { "x-api-key": "YOUR_API_KEY" } });
const { success, data, nextCursor, notice } = await r.json();
import requests
r = requests.get("https://api.sockodds.com/v2/events/", params=dict(leagueID="AFL", oddsAvailable="true", limit="1"), headers={"x-api-key": "YOUR_API_KEY"})
body = r.json()
req, _ := http.NewRequest("GET", "https://api.sockodds.com/v2/events/?leagueID=AFL&oddsAvailable=true&limit=1", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
res, err := http.DefaultClient.Do(req)
HttpRequest req = HttpRequest.newBuilder().uri(URI.create("https://api.sockodds.com/v2/events/?leagueID=AFL&oddsAvailable=true&limit=1"))
    .header("x-api-key", "YOUR_API_KEY").GET().build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");
var body = await http.GetStringAsync("https://api.sockodds.com/v2/events/?leagueID=AFL&oddsAvailable=true&limit=1");

Try it

// the response appears here
Need help?FAQ · Email · Contact