openapi: 3.1.0
info:
title: The Racing Australia Odds API
version: 1.4.3
x-logo:
url: https://www.theracingapi.com/static/images/logo_padded.png
description: High performance API for horse racing statistical modelling, application development and web content. Complete coverage of UK, Irish and Hong Kong horse racing.
contact:
url: https://www.theracingapi.com/
x-generated-from: official-openapi-spec
servers:
- url: https://api.theracingapi.com
description: Production server
tags:
- name: Odds
paths:
/v1/odds/{race_id}/{horse_id}:
get:
tags:
- Odds
summary: The Racing API Odds Runner
description:
Get detailed pre-race runner odds data, including price movements, for UK and Irish racing.
| Min. Required Plan | Pro |
| Rate Limit | 5 requests per second |
ℹ️ Price movements, displayed in the 'history' fields, are available for runners in races from 2025-03-17 onwards.
operationId: odds_runner_v1_odds__race_id___horse_id__get
security:
- HTTPBasic: []
parameters:
- name: race_id
in: path
required: true
schema:
type: string
title: Race Id
- name: horse_id
in: path
required: true
schema:
type: string
title: Horse Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RaceRunnerOdds'
'404':
description: Not found
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: Shell
source: 'curl -u USERNAME:PASSWORD https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}
'
label: cURL
- lang: Python
source: 'import requests
from requests.auth import HTTPBasicAuth
url = "https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}"
params = {}
response = requests.request("GET", url, auth=HTTPBasicAuth(''USERNAME'',''PASSWORD''), params=params)
print(response.json())'
label: Python3
- lang: PHP
source: ""
label: PHP
- lang: JavaScript
source: "const username = 'USERNAME';\nconst password = 'PASSWORD';\nconst credentials = btoa(`${username}:${password}`);\n\nconst params = new URLSearchParams({});\nconst url = `https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}?${params}`;\n\nfetch(url, {\n method: 'GET',\n headers: {\n 'Authorization': `Basic ${credentials}`\n }\n})\n.then(response => response.json())\n.then(data => console.log(data))\n.catch(error => console.error('Error:', error));"
label: Node.js
- lang: Ruby
source: 'require ''net/http''
require ''uri''
require ''json''
params = {}
uri = URI(''https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}'')
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Get.new(uri)
request.basic_auth(''USERNAME'', ''PASSWORD'')
response = http.request(request)
puts JSON.parse(response.body)'
label: Ruby
- lang: Java
source: "import java.net.http.*;\nimport java.util.Base64;\nimport java.util.Map;\n\nMap params = Map.of();\nString credentials = Base64.getEncoder()\n .encodeToString(\"USERNAME:PASSWORD\".getBytes());\n\nHttpClient client = HttpClient.newHttpClient();\nHttpRequest request = HttpRequest.newBuilder()\n .uri(URI.create(\"https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}\"))\n .header(\"Authorization\", \"Basic \" + credentials)\n .build();\n\nHttpResponse response = client.send(\n request, HttpResponse.BodyHandlers.ofString());\nSystem.out.println(response.body());"
label: Java
- lang: Go
source: "package main\n\nimport (\n \"fmt\"\n \"io\"\n \"net/http\"\n \"net/url\"\n)\n\nfunc main() {\n params := url.Values{}\n url := \"https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}?\" + params.Encode()\n\n client := &http.Client{}\n req, _ := http.NewRequest(\"GET\", url, nil)\n req.SetBasicAuth(\"USERNAME\", \"PASSWORD\")\n\n resp, _ := client.Do(req)\n defer resp.Body.Close()\n body, _ := io.ReadAll(resp.Body)\n fmt.Println(string(body))\n}"
label: Go
- lang: C#
source: "using System.Net.Http.Headers;\nusing System.Text;\nusing System.Web;\n\nvar params_ = HttpUtility.ParseQueryString(string.Empty);\nvar url = $\"https://api.theracingapi.com/v1/odds/{race_id}/{horse_id}?{params_}\";\n\nvar client = new HttpClient();\nvar credentials = Convert.ToBase64String(\n Encoding.ASCII.GetBytes(\"USERNAME:PASSWORD\"));\nclient.DefaultRequestHeaders.Authorization =\n new AuthenticationHeaderValue(\"Basic\", credentials);\n\nvar response = await client.GetAsync(url);\nvar content = await response.Content.ReadAsStringAsync();\nConsole.WriteLine(content);"
label: .NET
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
RaceRunnerOddsBookmakers:
properties:
bookmaker:
anyOf:
- type: string
- type: 'null'
title: Bookmaker
default: ''
fractional:
anyOf:
- type: string
- type: 'null'
title: Fractional
default: ''
decimal:
anyOf:
- type: string
- type: 'null'
title: Decimal
default: ''
ew_places:
anyOf:
- type: string
- type: 'null'
title: Ew Places
default: ''
ew_denom:
anyOf:
- type: string
- type: 'null'
title: Ew Denom
default: ''
updated:
anyOf:
- type: string
- type: 'null'
title: Updated
default: ''
history:
anyOf:
- items:
$ref: '#/components/schemas/RaceRunnerOddsHistory'
type: array
- type: 'null'
title: History
default: []
type: object
title: RaceRunnerOddsBookmakers
example:
bookmaker: Bet365
decimal: '6'
ew_denom: '5'
ew_places: '4'
fractional: 5/1
history:
- changed_at: '2025-04-22T13:34:00+01:00'
decimal: '6.5'
fractional: 11/2
- changed_at: '2025-04-22T13:28:00+01:00'
decimal: '5.5'
fractional: 9/2
updated: '2025-04-22 13:30:26'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
RaceRunnerOdds:
properties:
race_id:
type: string
title: Race Id
horse_id:
type: string
title: Horse Id
horse:
type: string
title: Horse
odds:
anyOf:
- items:
$ref: '#/components/schemas/RaceRunnerOddsBookmakers'
type: array
- type: 'null'
title: Odds
default: []
type: object
required:
- race_id
- horse_id
- horse
title: RaceRunnerOdds
example:
horse: Spartan Arrow
horse_id: hrs_30314725
odds:
- bookmaker: Bet365
decimal: '6'
ew_denom: '5'
ew_places: '4'
fractional: 5/1
history:
- changed_at: '2025-04-22T13:34:00+01:00'
decimal: '6.5'
fractional: 11/2
updated: '2025-04-22 13:30:26'
race_id: rac_11588863
RaceRunnerOddsHistory:
properties:
changed_at:
type: string
title: Changed At
fractional:
type: string
title: Fractional
decimal:
type: string
title: Decimal
type: object
required:
- changed_at
- fractional
- decimal
title: RaceRunnerOddsHistory
example:
changed_at: '2025-04-22T13:34:00+01:00'
decimal: '6.5'
fractional: 11/2
securitySchemes:
HTTPBasic:
type: http
scheme: basic
x-tagGroups:
- name: Get Started
tags:
- Introduction
- Authentication
- Endpoint Overview
- Rate Limits
- Changelog
- name: Core API
tags:
- Courses
- Dams
- Damsires
- Horses
- Jockeys
- Odds
- Owners
- Racecards
- Results
- Sires
- Trainers
- name: Core API (by plan level)
tags:
- Free Plan
- Basic Plan
- Standard Plan
- Pro Plan
- name: Regional APIs
tags:
- Australia
- North America