List all market definitions
curl --request GET \
--url https://therundown.io/api/v2/markets \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v2/markets"
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/markets', 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/markets",
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/markets"
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/markets")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v2/markets")
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[
{
"id": 1,
"name": "moneyline",
"line_value_is_participant": true,
"proposition": true,
"description": "Moneyline: To win outright",
"short_description": "Moneyline",
"period_id": 0,
"live_variant_id": 41,
"updated_at": "2026-01-23T20:38:12Z"
},
{
"id": 2,
"name": "handicap",
"line_value_is_participant": false,
"proposition": true,
"description": "Spread: Win or lose by margin of points",
"short_description": "Spread",
"period_id": 0,
"live_variant_id": 42,
"updated_at": "2026-01-23T20:42:13Z"
},
{
"id": 3,
"name": "totals",
"line_value_is_participant": false,
"proposition": true,
"description": "Totals: Total points",
"short_description": "Totals",
"period_id": 0,
"live_variant_id": 43,
"updated_at": "2026-01-23T20:38:12Z"
},
{
"id": 4,
"name": "moneyline_first_half",
"line_value_is_participant": true,
"proposition": true,
"description": "1st half moneyline",
"short_description": "1st half moneyline",
"period_id": 1,
"live_variant_id": 1024,
"updated_at": "2026-01-24T15:49:43Z"
}
]V2 Markets
List all market definitions
Returns all canonical market definitions with IDs, names, period info, and whether the line value represents a participant.
GET
/
api
/
v2
/
markets
List all market definitions
curl --request GET \
--url https://therundown.io/api/v2/markets \
--header 'X-TheRundown-Key: <api-key>'import requests
url = "https://therundown.io/api/v2/markets"
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/markets', 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/markets",
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/markets"
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/markets")
.header("X-TheRundown-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://therundown.io/api/v2/markets")
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[
{
"id": 1,
"name": "moneyline",
"line_value_is_participant": true,
"proposition": true,
"description": "Moneyline: To win outright",
"short_description": "Moneyline",
"period_id": 0,
"live_variant_id": 41,
"updated_at": "2026-01-23T20:38:12Z"
},
{
"id": 2,
"name": "handicap",
"line_value_is_participant": false,
"proposition": true,
"description": "Spread: Win or lose by margin of points",
"short_description": "Spread",
"period_id": 0,
"live_variant_id": 42,
"updated_at": "2026-01-23T20:42:13Z"
},
{
"id": 3,
"name": "totals",
"line_value_is_participant": false,
"proposition": true,
"description": "Totals: Total points",
"short_description": "Totals",
"period_id": 0,
"live_variant_id": 43,
"updated_at": "2026-01-23T20:38:12Z"
},
{
"id": 4,
"name": "moneyline_first_half",
"line_value_is_participant": true,
"proposition": true,
"description": "1st half moneyline",
"short_description": "1st half moneyline",
"period_id": 1,
"live_variant_id": 1024,
"updated_at": "2026-01-24T15:49:43Z"
}
]Authorizations
Recommended API key request header for new integrations
Response
200 - application/json
All markets
Example:
1
Example:
"Money Line"
If true, the selection is carried by the participant and line values may be placeholders or labels. If false, the line value is meaningful and should be displayed when present.
Whether this is a proposition/prop market
Associated period. 0=Full Game, 1=1st Half, 2=2nd Half, 3-6=Quarters/periods, 7=Live Full Game, 13-18=Live periods. For tennis, 3/4 represent prematch Set 1/Set 2 and 15/16 represent live Set 1/Set 2.
ID of the live/in-play variant of this market