SeekToAction
SeekToAction is an Action subtype used as a potentialAction on a VideoObject to declare seek-to points for named moments. It adds one property: startOffset-input (wire name startOffset-input with a hyphen), a templated input representing the seconds offset to seek to. Google uses this alongside hasPart Clip objects to power the Key Moments rich result under a video in search.
The pattern is: declare hasPart Clips on the VideoObject with startOffset and name, plus a single potentialAction SeekToAction describing the URL template with {seek_to_second_number}. Google matches the Clip names to the templated URL so each moment becomes a clickable timestamp in the rich result.
Full example of schema.org/SeekToAction 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": "VideoObject",
"name": "XooStructured Product Tour",
"description": "10-minute walkthrough of the XooStructured schema IDE.",
"uploadDate": "2026-02-14",
"contentUrl": "https://xoocode.com/videos/xoostructured-tour.mp4",
"thumbnailUrl": "https://xoocode.com/videos/xoostructured-tour-thumb.jpg",
"duration": "PT10M32S",
"hasPart": [
{ "@type": "Clip", "name": "Schema tree navigation", "startOffset": 32, "url": "https://xoocode.com/videos/xoostructured-tour?t=32" },
{ "@type": "Clip", "name": "Live validation panel", "startOffset": 187, "url": "https://xoocode.com/videos/xoostructured-tour?t=187" },
{ "@type": "Clip", "name": "Exporting JSON-LD", "startOffset": 410, "url": "https://xoocode.com/videos/xoostructured-tour?t=410" }
],
"potentialAction": {
"@type": "SeekToAction",
"target": "https://xoocode.com/videos/xoostructured-tour?t={seek_to_second_number}",
"startOffset-input": "required name=seek_to_second_number"
}
}
</script>Minimal valid version
The smallest markup that still produces a valid SeekToAction 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": "VideoObject",
"name": "XooStructured Product Tour",
"potentialAction": {
"@type": "SeekToAction",
"target": "https://xoocode.com/videos/xoostructured-tour?t={seek_to_second_number}",
"startOffset-input": "required name=seek_to_second_number"
}
}
</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 docsVideo Key Momentsprimary
Common SeekToAction 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
SeekToAction without matching Clip hasPart entries
WrongSeekToAction on a VideoObject with no hasPart ClipsRightPair SeekToAction with hasPart Clip objects carrying startOffset and nameThe Key Moments rich result reads Clip names and startOffsets. SeekToAction alone describes the seek URL template; without Clips Google has no moments to show.
- 02
Hard-coded timestamp instead of templated placeholder
Wrong"target": "https://example.com/video?t=32"Right"target": "https://example.com/video?t={seek_to_second_number}"SeekToAction.target must be a URL template with the {seek_to_second_number} placeholder so Google can substitute the startOffset from each Clip.
Schema properties in this example
About the example data
Key moments on the XooStructured product tour video, referenced from the VideoObject example.
Comments
Loading comments...