curl --request GET \
--url https://therundown.io/api/v1/lines/best \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v1/lines/best"
headers = {"X-TheRundown-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-TheRundown-Key': '<api-key>'}};
fetch('https://therundown.io/api/v1/lines/best', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://therundown.io/api/v1/lines/best",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-TheRundown-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://therundown.io/api/v1/lines/best"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-TheRundown-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://therundown.io/api/v1/lines/best")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v1/lines/best")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-TheRundown-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"09bfa53f8484a63e584398545c035932": {
"event_id": "09bfa53f8484a63e584398545c035932",
"moneyline": {
"moneyline_away": 155,
"moneyline_home": -170,
"best_affiliate_away": {
"affiliate_id": 23,
"affiliate_name": "FanDuel",
"updated_at": "2026-02-12T00:10:00Z"
},
"best_affiliate_home": {
"affiliate_id": 19,
"affiliate_name": "DraftKings",
"updated_at": "2026-02-12T00:10:00Z"
}
},
"spread": {
"point_spread_away": 4.5,
"point_spread_home": -4.5,
"point_spread_away_money": -105,
"point_spread_home_money": -108,
"best_affiliate_away": {
"affiliate_id": 3,
"affiliate_name": "Pinnacle",
"updated_at": "2026-02-12T00:08:00Z"
},
"best_affiliate_home": {
"affiliate_id": 23,
"affiliate_name": "FanDuel",
"updated_at": "2026-02-12T00:10:00Z"
}
},
"total": {
"total_over": 224.5,
"total_under": 224.5,
"total_over_money": -108,
"total_under_money": -105,
"best_affiliate_over": {
"affiliate_id": 19,
"affiliate_name": "DraftKings",
"updated_at": "2026-02-12T00:10:00Z"
},
"best_affiliate_under": {
"affiliate_id": 3,
"affiliate_name": "Pinnacle",
"updated_at": "2026-02-12T00:08:00Z"
}
}
}
}Get best lines for multiple events
curl --request GET \
--url https://therundown.io/api/v1/lines/best \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v1/lines/best"
headers = {"X-TheRundown-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-TheRundown-Key': '<api-key>'}};
fetch('https://therundown.io/api/v1/lines/best', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://therundown.io/api/v1/lines/best",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-TheRundown-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://therundown.io/api/v1/lines/best"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-TheRundown-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://therundown.io/api/v1/lines/best")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v1/lines/best")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-TheRundown-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"09bfa53f8484a63e584398545c035932": {
"event_id": "09bfa53f8484a63e584398545c035932",
"moneyline": {
"moneyline_away": 155,
"moneyline_home": -170,
"best_affiliate_away": {
"affiliate_id": 23,
"affiliate_name": "FanDuel",
"updated_at": "2026-02-12T00:10:00Z"
},
"best_affiliate_home": {
"affiliate_id": 19,
"affiliate_name": "DraftKings",
"updated_at": "2026-02-12T00:10:00Z"
}
},
"spread": {
"point_spread_away": 4.5,
"point_spread_home": -4.5,
"point_spread_away_money": -105,
"point_spread_home_money": -108,
"best_affiliate_away": {
"affiliate_id": 3,
"affiliate_name": "Pinnacle",
"updated_at": "2026-02-12T00:08:00Z"
},
"best_affiliate_home": {
"affiliate_id": 23,
"affiliate_name": "FanDuel",
"updated_at": "2026-02-12T00:10:00Z"
}
},
"total": {
"total_over": 224.5,
"total_under": 224.5,
"total_over_money": -108,
"total_under_money": -105,
"best_affiliate_over": {
"affiliate_id": 19,
"affiliate_name": "DraftKings",
"updated_at": "2026-02-12T00:10:00Z"
},
"best_affiliate_under": {
"affiliate_id": 3,
"affiliate_name": "Pinnacle",
"updated_at": "2026-02-12T00:08:00Z"
}
}
}
}Authorizations
Recommended API key request header for new integrations
Query Parameters
Comma-separated event IDs
period_full_game, period_first_half, period_second_half, period_first_period, period_second_period, period_third_period, period_fourth_period, period_live_full_game, period_live_first_half, period_live_second_half, period_live_first_period, period_live_second_period, period_live_third_period, period_live_fourth_period Comma-separated sportsbook/affiliate IDs to filter. Common values include DraftKings (19), FanDuel (23), BetMGM (22), BookMaker (7), BetCRIS (9), Pinnacle (3), Polymarket US (31), Circa Sports (32), Bet105 (33), and Heritage Sports (34). Availability varies by sport and market.
On V2 event endpoints (/api/v2/sports/{sportID}/events/{date}, /api/v2/events/{eventID}, and their openers/closing siblings), affiliate_ids=0 is a scores-only sentinel: the response keeps events, scores, and status and omits markets and price objects. Other endpoints that share this parameter treat affiliate_ids as a sportsbook filter only.
Response
Best lines keyed by event ID
Show child attributes
Show child attributes