FormFav LogoFormFav
    GET
    /v1/form/meetings

    Meetings

    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

    datestring
    required
    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_codestring
    optional
    Default: gallops
    Race type: gallops, harness, or greyhounds.
    timezonestring
    optional
    Default: Australia/Sydney
    IANA 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

    datestring
    The requested date (YYYY-MM-DD)
    raceTypestring
    The requested race type
    meetingsarray
    List of meetings running on this date
    meetings[].trackstring
    Track display name (e.g. "Flemington")
    meetings[].slugstring
    URL-safe track identifier — pass this directly to the track parameter of /v1/form
    meetings[].countrystring
    Two-letter ISO country code, lowercase (e.g. "au", "fr", "gb")
    meetings[].abandonedboolean
    Whether this meeting has been abandoned (cancelled)
    meetings[].racesarray
    Card of races scheduled at this meeting
    meetings[].races[].raceNumberinteger
    Race number on the card. Pass directly to the race parameter of /v1/form
    meetings[].races[].raceNamestring
    Race name (e.g. "Chill-Rite BM58 Handicap")
    meetings[].races[].raceClassstring
    Race class / grade (e.g. "3YO+ BM58")
    meetings[].races[].distancestring
    Race distance with unit (e.g. "2200m")
    meetings[].races[].numberOfRunnersinteger
    Number of runners declared for the race
    meetings[].races[].prizeMoneystring | null
    Total prize money for the race in the venue's local currency. May be null when prize money is not yet published
    meetings[].races[].conditionstring
    Track condition rating (e.g. "Good 4", "Soft 6", "Heavy 8")
    meetings[].races[].weatherstring
    Weather description at the track (e.g. "Fine", "Overcast")
    meetings[].races[].startTimestring
    Scheduled jump time as an ISO 8601 timestamp in UTC (e.g. 2026-05-03T03:05:00Z)
    meetings[].races[].timezonestring
    IANA timezone of the meeting venue (e.g. "Australia/Sydney"). Combine with startTime to display local jump times
    meetings[].races[].abandonedboolean
    Whether 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 races

    Example Response

    200
    Response
    json
    {
      "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
            }
          ]
        }
      ]
    }