GET
/v1/form/meetingsMeetings
Returns every meeting running on a given date for a given race type, with the full card of races for each meeting. This is the discovery endpoint — use it to get the list of tracks and races, then pass a slug and raceNumber from the response directly into the track and race parameters of GET /v1/form.
Parameters
datestringrequired
Meeting date in
YYYY-MM-DD format. Accepts dates within the last 30 days up to 7 days ahead. Requests outside this window return a 400.race_codestringoptional
Default: gallopsRace type:
gallops, harness, or greyhounds.timezonestringoptional
Default: Australia/SydneyIANA timezone for date interpretation (e.g.
Europe/London, America/New_York). Meetings are matched based on when Race 1 starts in your timezone, so a UK user requesting March 20th sees meetings racing on March 20th UK time. This scopes which meetings you get — it does not shift the times in the response. startTime is always UTC regardless of what you pass here; use the timezone response field to render a local jump time.Code Examples
javascript
const response = await fetch(
'https://api.formfav.com/v1/form/meetings?' +
new URLSearchParams({
date: '2026-03-03',
race_code: 'gallops'
}),
{
headers: { 'X-API-Key': 'your_api_key_here' }
}
);
const data = await response.json();
// data.meetings[].slug → pass to /v1/form?track=
// International — see UK meetings from a London user's perspective
const ukResponse = await fetch(
'https://api.formfav.com/v1/form/meetings?' +
new URLSearchParams({
date: '2026-03-19',
race_code: 'gallops',
timezone: 'Europe/London'
}),
{
headers: { 'X-API-Key': 'your_api_key_here' }
}
);Response Fields
datestringThe requested date (YYYY-MM-DD)
raceTypestringThe requested race type
meetingsarrayList of meetings running on this date
meetings[].trackstringTrack display name (e.g. "Flemington")
meetings[].slugstringURL-safe track identifier — pass this directly to the
track parameter of /v1/formmeetings[].countrystringTwo-letter ISO country code, lowercase (e.g. "au", "fr", "gb")
meetings[].abandonedbooleanWhether this meeting has been abandoned (cancelled)
meetings[].racesarrayCard of races scheduled at this meeting
meetings[].races[].raceNumberintegerRace number on the card. Pass directly to the
race parameter of /v1/formmeetings[].races[].raceNamestringRace name (e.g. "Chill-Rite BM58 Handicap")
meetings[].races[].raceClassstringRace class / grade (e.g. "3YO+ BM58")
meetings[].races[].distancestringRace distance with unit (e.g. "2200m")
meetings[].races[].numberOfRunnersintegerNumber of runners declared for the race
meetings[].races[].prizeMoneystring | nullTotal prize money for the race in the venue's local currency. May be
null when prize money is not yet publishedmeetings[].races[].conditionstringTrack condition rating (e.g. "Good 4", "Soft 6", "Heavy 8")
meetings[].races[].weatherstringWeather description at the track (e.g. "Fine", "Overcast")
meetings[].races[].startTimestringScheduled jump time as an ISO 8601 timestamp in UTC (e.g.
2026-05-03T03:05:00Z)meetings[].races[].timezonestringIANA timezone of the meeting venue (e.g. "Australia/Sydney"). Combine with
startTime to display local jump timesmeetings[].races[].abandonedbooleanWhether this individual race has been abandoned. Note this is independent of the meeting-level
abandoned flag — a meeting can run with one or more abandoned racesAbandoned meetings and races
Abandoned meetings are included in the response with
abandoned: true at the meeting level; individual abandoned races carry the same flag at the race level. Filter these out in your application if you don't want to display cancelled cards.Example Response
200
Responsejson
{
"date": "2026-05-03",
"raceType": "gallops",
"meetings": [
{
"track": "Flemington",
"slug": "flemington",
"country": "au",
"abandoned": false,
"races": [
{
"raceNumber": 1,
"raceName": "Chill-Rite BM58 Handicap",
"raceClass": "3YO+ BM58",
"distance": "2200m",
"numberOfRunners": 9,
"prizeMoney": "27000",
"condition": "Good 4",
"weather": "Overcast",
"startTime": "2026-05-03T03:05:00Z",
"timezone": "Australia/Sydney",
"abandoned": false
},
{
"raceNumber": 2,
"raceName": "Bert Bryant Handicap",
"raceClass": "BM78",
"distance": "1400m",
"numberOfRunners": 12,
"prizeMoney": "50000",
"condition": "Good 4",
"weather": "Overcast",
"startTime": "2026-05-03T03:40:00Z",
"timezone": "Australia/Sydney",
"abandoned": false
}
]
},
{
"track": "Randwick",
"slug": "randwick",
"country": "au",
"abandoned": false,
"races": [
{
"raceNumber": 1,
"raceName": "TAB Highway Handicap",
"raceClass": "Highway BM72",
"distance": "1400m",
"numberOfRunners": 14,
"prizeMoney": "75000",
"condition": "Soft 5",
"weather": "Fine",
"startTime": "2026-05-03T02:30:00Z",
"timezone": "Australia/Sydney",
"abandoned": false
}
]
},
{
"track": "Angers",
"slug": "angers",
"country": "fr",
"abandoned": false,
"races": [
{
"raceNumber": 1,
"raceName": "Prix Robert Lavallee",
"raceClass": "3YO MDN F",
"distance": "2300m",
"numberOfRunners": 13,
"prizeMoney": null,
"condition": "Good",
"weather": "OCAST",
"startTime": "2026-05-02T14:07:00Z",
"timezone": "Europe/Paris",
"abandoned": false
}
]
}
]
}