FormFav LogoFormFav

    Class Profile & Race Fit

    Pro

    Understand where a runner sits in the racing class hierarchy and whether today's race is at their level, above it, or below it.

    What Is Class in Racing?

    In racing, "class" refers to the quality level of a race. Races are graded into tiers — from maiden races (for horses that have never won) up through benchmark, open, listed, and Group races (the elite level).

    A runner's class profile tracks what level they've been competing at and whether they're improving, holding steady, or declining. This matters because:

    • •A horse stepping up from low-grade races into a Group race is taking on much tougher competition
    • •A horse dropping in class may have an edge over weaker opponents

    Class Profile

    Each runner includes a classProfile object that summarises their class history (Pro tier only, null on Free):

    json
    {
      "classProfile": {
        "currentRating": 72,
        "peakRating": 85,
        "highestClassWon": 75,
        "optimalRangeMin": 65,
        "optimalRangeMax": 85,
        "trend": "stable"
      }
    }
    currentRatingint (0-100)
    The class level of the runner's most recent race. Higher = better class.
    peakRatingint (0-100)
    The highest class level this runner has ever competed at.
    highestClassWonint (0-100)
    The highest class level where this runner has won.
    optimalRangeMinint
    Lower bound of the class range where this runner performs best.
    optimalRangeMaxint
    Upper bound of the class range where this runner performs best.
    trendstring
    Class trajectory:
    risingCompeting at a higher class level than their recent average
    stableRacing at a consistent class level
    droppingCompeting at a lower class level than their recent average

    The 0–100 Rating Scale

    Every race class is mapped to a standardised 0–100 rating that works across all three racing codes:

    RatingThoroughbredHarnessGreyhound
    100Group 1Group 1Group 1
    95Group 2Group 2Group 2
    90Group 3Group 3Group 3
    85ListedListedListed
    75Open / WFAOpenOpen
    70BM90NR 70+Grade 1
    58Class 1——
    50——Grade 5
    30MaidenMaidenMaiden

    Race Class Fit

    While the class profile tells you about the runner's history, raceClassFit answers the question for today: is this runner in the right race, in too deep, or too good for this field?

    json
    {
      "raceClassFit": {
        "raceClassRating": 72,
        "classDifference": 0,
        "withinOptimalRange": true,
        "assessment": "comfort_zone"
      }
    }
    raceClassRatingint (0-100)
    The class rating assigned to this race.
    classDifferenceint
    Race class minus runner's current rating. Positive = stepping up, negative = dropping down.
    withinOptimalRangeboolean
    Whether the race class falls within the runner's optimal performance range.
    assessmentstring
    Plain-English class fit verdict (see below).

    Assessment Values

    AssessmentWhat It Means
    comfort_zoneRace is right at the runner's current level
    slight_riseStepping up — tougher race than recent form
    big_riseSignificant class jump — facing much stronger competition
    slight_dropDropping in class — should be competitive based on rating
    big_dropWell above this race's level — strong class edge

    Using These Together

    The real value comes from combining classProfile and raceClassFit to surface actionable insights:

    Bullish: Dropping in class + within optimal range — runner has a class edge and is in their sweet spot

    Watch: Big rise + trend rising — runner is being tested at a higher level but is on an upward trajectory

    Caution: Comfort zone + trend dropping — racing at the right level but form is declining

    Example Response

    A BM78 race (rating 72) with three runners at different class levels:

    json
    {
      "raceClass": "BM78",
      "runners": [
        {
          "number": 1,
          "name": "Class Act",
          "classProfile": {
            "currentRating": 85,
            "peakRating": 90,
            "highestClassWon": 85,
            "optimalRangeMin": 75,
            "optimalRangeMax": 90,
            "trend": "dropping"
          },
          "raceClassFit": {
            "raceClassRating": 72,
            "classDifference": -13,
            "withinOptimalRange": false,
            "assessment": "slight_drop"
          }
        },
        {
          "number": 4,
          "name": "Right Level",
          "classProfile": {
            "currentRating": 72,
            "peakRating": 75,
            "highestClassWon": 72,
            "optimalRangeMin": 65,
            "optimalRangeMax": 78,
            "trend": "stable"
          },
          "raceClassFit": {
            "raceClassRating": 72,
            "classDifference": 0,
            "withinOptimalRange": true,
            "assessment": "comfort_zone"
          }
        },
        {
          "number": 7,
          "name": "Rising Star",
          "classProfile": {
            "currentRating": 58,
            "peakRating": 58,
            "highestClassWon": 55,
            "optimalRangeMin": 50,
            "optimalRangeMax": 60,
            "trend": "rising"
          },
          "raceClassFit": {
            "raceClassRating": 72,
            "classDifference": 14,
            "withinOptimalRange": false,
            "assessment": "slight_rise"
          }
        }
      ]
    }