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.
<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.
<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.
- Google docsNo dedicated rich result (activity stream / wearable integration markup)
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.
- 01
Distance as a bare number
Wrong"distance": 18RightDistance node with a named value ("18 km") or QuantitativeValue with unitCode18 what? Kilometres, miles, metres? Without a unit hint the distance is ambiguous.
- 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.
- 03
Course + fromLocation + toLocation all filled with the same Place
WrongAll three fields pointing at one city nameRightfromLocation and toLocation for a point-to-point route, exerciseCourse for the named route itself, sportsActivityLocation for the venueThe four location fields describe different things: the venue, the route, and the two endpoints. Collapsing them loses geographic detail.
Schema properties in this example
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...