XooCode(){

ExerciseAction

ExerciseAction is a PlayAction subtype for any exertive activity undertaken for health or fitness. It is the richest Action subtype in the vocabulary — 13 direct properties covering the activity itself, the route, the venue, the plan, and any opposing team or event.

Full example of schema.org/ExerciseAction json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/ExerciseAction
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ExerciseAction",
  "name": "18 km Rhine long run",
  "agent": { "@type": "Person", "name": "Sam Xoo" },
  "exerciseType": "Running",
  "distance": { "@type": "Distance", "name": "18 km" },
  "startTime": "2026-03-15T07:30:00+01:00",
  "endTime": "2026-03-15T09:14:00+01:00",
  "fromLocation": { "@type": "Place", "name": "Basel Mittlere Brücke" },
  "toLocation": { "@type": "Place", "name": "Kaiseraugst Rheinbrücke" },
  "sportsActivityLocation": { "@type": "SportsActivityLocation", "name": "Rhine riverside path" },
  "exercisePlan": { "@type": "ExercisePlan", "name": "Copenhagen Marathon 2026 — Week 10 long run", "exerciseType": "Running" },
  "actionStatus": "https://schema.org/CompletedActionStatus"
}
</script>

Direct properties (13)

  • exerciseType: Text — "Running", "Cycling", "Swimming", "CrossFit", "Yoga".
  • distance: Distance / Distance subtype carrying value + unitCode (SMI for miles, KMT for km).
  • sportsActivityLocation: SportsActivityLocation — gym, track, pool.
  • exerciseCourse / course: Place — the route.
  • fromLocation / toLocation: start and end Place.
  • exercisePlan: ExercisePlan — the programme the session follows.
  • exerciseRelatedDiet / diet: Diet — nutrition paired with the activity.
  • sportsEvent: SportsEvent — race or match the session was part of.
  • sportsTeam / opponent: SportsTeam or Person.

Minimal valid version

The smallest markup that still produces a valid ExerciseAction entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/ExerciseAction (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ExerciseAction",
  "agent": { "@type": "Person", "name": "Sam Xoo" },
  "exerciseType": "Running",
  "distance": { "@type": "Distance", "name": "5 km" }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

  • No dedicated rich result (activity stream / wearable integration markup)
    Google docs

Common ExerciseAction mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Distance as a bare number

    Wrong
    "distance": 18
    Right
    Distance node with a named value ("18 km") or QuantitativeValue with unitCode

    18 what? Kilometres, miles, metres? Without a unit hint the distance is ambiguous.

  2. 02

    exerciseType as a sport brand

    Wrong
    "exerciseType": "Peloton"
    Right
    "exerciseType": "Cycling"

    Type is the activity class; the product or app belongs on exercisePlan.name or elsewhere.

  3. 03

    Course + fromLocation + toLocation all filled with the same Place

    Wrong
    All three fields pointing at one city name
    Right
    fromLocation and toLocation for a point-to-point route, exerciseCourse for the named route itself, sportsActivityLocation for the venue

    The four location fields describe different things: the venue, the route, and the two endpoints. Collapsing them loses geographic detail.

About the example data

Sam Xoo's Sunday long run — 18 km along the Rhine path between Basel and Kaiseraugst, part of her Copenhagen Marathon 2026 build.

Comments

Loading comments...

Leave a comment