curl --request GET \
--url https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history"
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/v2/events/{eventID}/markets/{marketID}/history', 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/v2/events/{eventID}/markets/{marketID}/history",
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/v2/events/{eventID}/markets/{marketID}/history"
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/v2/events/{eventID}/markets/{marketID}/history")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history")
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{
"meta": {
"event_id": "09bfa53f8484a63e584398545c035932",
"market_id": 3,
"market_name": "totals"
},
"series": {
"19": {
"affiliate_name": "Affiliate 19",
"data": [
{
"t": "2026-02-10T14:00:00Z",
"p": "-110",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T09:30:00Z",
"p": "-112",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T22:00:00Z",
"p": "-108",
"l": "225.5",
"m": true
}
]
},
"23": {
"affiliate_name": "Affiliate 23",
"data": [
{
"t": "2026-02-10T14:05:00Z",
"p": "-108",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T10:00:00Z",
"p": "-110",
"l": "224.5",
"m": true
}
]
}
}
}Get line price chart data for a specific market
Returns time-series price data suitable for charting line movement. To chart one participant, first discover its public participant_id with GET /api/v2/markets/participants for the same event and market, then pass that value here. For totals (market 3), discover the TYPE_RESULT Over and Under participants and request each side separately. Series are grouped by affiliate and can otherwise contain points for more than one participant. main_line=true keeps only the points that were the main line when written.
curl --request GET \
--url https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history"
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/v2/events/{eventID}/markets/{marketID}/history', 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/v2/events/{eventID}/markets/{marketID}/history",
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/v2/events/{eventID}/markets/{marketID}/history"
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/v2/events/{eventID}/markets/{marketID}/history")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v2/events/{eventID}/markets/{marketID}/history")
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{
"meta": {
"event_id": "09bfa53f8484a63e584398545c035932",
"market_id": 3,
"market_name": "totals"
},
"series": {
"19": {
"affiliate_name": "Affiliate 19",
"data": [
{
"t": "2026-02-10T14:00:00Z",
"p": "-110",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T09:30:00Z",
"p": "-112",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T22:00:00Z",
"p": "-108",
"l": "225.5",
"m": true
}
]
},
"23": {
"affiliate_name": "Affiliate 23",
"data": [
{
"t": "2026-02-10T14:05:00Z",
"p": "-108",
"l": "224.5",
"m": true
},
{
"t": "2026-02-11T10:00:00Z",
"p": "-110",
"l": "224.5",
"m": true
}
]
}
}
}Authorizations
Recommended API key request header for new integrations
Path Parameters
Canonical V2 event ID from the event_id field returned by event endpoints
Market ID
Query Parameters
Filter by the public canonical participant_id returned by GET /api/v2/markets/participants for this event and market. For totals (market 3), use the discovered TYPE_RESULT Over or Under participant ID; do not substitute the participant record id.
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.
Filter by line value
Inclusive start time (RFC3339)
Inclusive end time (RFC3339)
Maximum total points across all returned sportsbooks. Invalid or out-of-range values use 1000.
x <= 5000When true, return only history rows (or chart points) that were the sportsbook's main line when written — is_main_line = true on history rows, m = true on chart points. Sorted by time, each change of the line value for a participant is a main-line move at that timestamp.
true, false