LOL Odds API
Access lol betting odds from 4 bookmakers through the SockOdds API. Get lol odds for every event including head to head, lines, totals, player props and more — sportID=LOL.
LOL Odds API Features
Our lol odds API is fully filterable, so you pull exactly the data you want — events, player props, teams or specific markets. Curate the feed to your needs with the same parameters SportsGameOdds developers already know.
6 distinct markets are priced across 1 league right now:
- Head to head / moneylines (2-way and 3-way markets)
- Lines, spreads and handicaps
- Totals (over/under)
- Alternative lines
- Player props and game props
- Period-specific markets (halves)
LOL leagues
| League | leagueID | Events | Markets | Bookmakers |
|---|---|---|---|---|
| LOL | LOL | 2 | 6 | 4 |
LOL Player Props
Player props for lol are keyed like every other sport (the playerID in the statEntityID slot); the Australian books price lol mainly at team and match level today. See the player prop odds API.
LOL API Odds with Results
SockOdds delivers lol odds and event data in one configuration:
- Upcoming events with status flags
- Home and away teams with ids
- Players with production ids where the source carries them
- LOL odds including lines, totals, head to head, player props and more
- Results and grading flags where the source has them
Quick start: your first LOL odds API call
https://api.sockodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&sportID=LOL&limit=10curl -X GET "https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10" -H "x-api-key: YOUR_API_KEY"const response = await fetch("https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10", { headers: { "x-api-key": "YOUR_API_KEY" } });
const { data, nextCursor, notice } = await response.json();
console.log(JSON.stringify(data, null, 2));import requests
response = requests.get("https://api.sockodds.com/v2/events", params=dict(oddsAvailable="true", sportID="LOL", limit="10"), headers={"x-api-key": "YOUR_API_KEY"})
output = response.json()
print(output["data"])require 'net/http'
require 'json'
uri = URI("https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10")
req = Net::HTTP::Get.new(uri)
req['x-api-key'] = 'YOUR_API_KEY'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.pretty_generate(JSON.parse(res.body)['data'])<?php
$ch = curl_init("https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['x-api-key: YOUR_API_KEY']);
$output = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($output['data']);import java.net.URI;
import java.net.http.*;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10"))
.header("x-api-key", "YOUR_API_KEY").GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.sockodds.com/v2/events?oddsAvailable=true&sportID=LOL&limit=10", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))Or one league at a time, which is faster:
https://api.sockodds.com/v2/events?apiKey=YOUR_API_KEY&oddsAvailable=true&leagueID=LOL&limit=10curl -X GET "https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10" -H "x-api-key: YOUR_API_KEY"const response = await fetch("https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10", { headers: { "x-api-key": "YOUR_API_KEY" } });
const { data, nextCursor, notice } = await response.json();
console.log(JSON.stringify(data, null, 2));import requests
response = requests.get("https://api.sockodds.com/v2/events", params=dict(oddsAvailable="true", leagueID="LOL", limit="10"), headers={"x-api-key": "YOUR_API_KEY"})
output = response.json()
print(output["data"])require 'net/http'
require 'json'
uri = URI("https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10")
req = Net::HTTP::Get.new(uri)
req['x-api-key'] = 'YOUR_API_KEY'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.pretty_generate(JSON.parse(res.body)['data'])<?php
$ch = curl_init("https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['x-api-key: YOUR_API_KEY']);
$output = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($output['data']);import java.net.URI;
import java.net.http.*;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10"))
.header("x-api-key", "YOUR_API_KEY").GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());req, _ := http.NewRequest("GET", "https://api.sockodds.com/v2/events?oddsAvailable=true&leagueID=LOL&limit=10", nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
res, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))Stats priced in lol
| statID | Name | Markets | Levels |
|---|---|---|---|
maps | Maps | 12 | all, team |
LOL Odds API Technical Specifications
API Architecture
- REST API — Simple HTTP endpoints with JSON responses, identical to the SportsGameOdds v2 paths
- Native WebSocket snapshots - Pro/Platform at
/v2/stream/events; polling-backed, with unchanged upstream freshness - Rate limits — per-key, per-minute meters that bind under concurrency; plans sized to your usage
- Authentication — secure API key access via the
x-api-keyheader orapiKeyquery parameter
Data Update Speed
- Odds updates — every ~2 minutes across every bookmaker lane
- Event status —
statusflags andinfo.staletell you exactly how current a price is
Developer Resources
- Interactive documentation — live examples, copy-paste snippets and an AI (vibe coding) context
- SDKs & libraries — the SportsGameOdds SDKs for TypeScript, Python, Ruby, Go and Java work unchanged with the base URL pointed here
- Postman collection — pre-built requests ready to run
- Support — email support on every plan, priority on paid plans
LOL market coverage by category
| Market category | Example markets | Markets | Availability | Typical bookmakers |
|---|---|---|---|---|
| Team & game specials | Maps O/U, Maps, Maps line | 6 oddIDs | Pre-match | Neds, TAB, Unibet, BetRight |
Use Cases for LOL API Data
- Arbitrage & +EV tools — compare lol odds across every Australian bookmaker to uncover arbitrage opportunities and positive expected value angles.
- Odds comparison platforms — display lol odds from every book side by side for comprehensive line shopping.
- Pricing models & trading — use lol market data as inputs for proprietary pricing algorithms and betting strategies.
- Sports analytics & research — examine lol line movements and betting-market patterns, and build predictive models on retained events.
- Betting automation — build systems that monitor lol lines across bookmakers and trigger actions when your target odds appear.
- Sportsbook & fantasy apps — power your lol product with reliable odds, status and bet-slip deeplinks.
LOL Odds API Documentation
Our interactive documentation covers everything you need to integrate LOL odds into your project:
- Full endpoint reference with parameters and response schemas
- Live request and response examples
- Code snippets in Python, JavaScript, Ruby, Go and Java
- Authentication setup and API key management
- Rate limiting and the
noticefield - Error handling and troubleshooting
Start building today
Free plan available. Set up in 5 minutes. Scale when you're ready.