OnDemandEvent
OnDemandEvent is a direct PublicationEvent subtype for non-linear availability: a catch-up TV window, a podcast episode published on a platform, a VOD rental window, a film's streaming availability. It adds no properties of its own.
Use the inherited startDate (when availability begins) and endDate (when it ends). publishedOn carries the BroadcastService or streaming platform.
Full example of schema.org/OnDemandEvent 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": "OnDemandEvent",
"name": "Thunderhawks vs Scrapers championship game - catch-up streaming",
"startDate": "2026-04-23T22:00:00-04:00",
"endDate": "2026-05-23T23:59:59-04:00",
"publishedOn": { "@type": "BroadcastService", "name": "Xoo Code Streaming", "broadcaster": { "@type": "Organization", "name": "Xoo Code Media" } },
"workPerformed": { "@type": "SportsEvent", "name": "Dunmore Thunderhawks vs Scranton Scrapers - DIHL Championship" }
}
</script>Minimal valid version
The smallest markup that still produces a valid OnDemandEvent 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": "OnDemandEvent",
"startDate": "2026-04-23T22:00:00-04:00",
"endDate": "2026-05-23T23:59:59-04:00",
"publishedOn": { "@type": "BroadcastService", "name": "Xoo Code Streaming" }
}
</script>Google rich results this unlocks
OnDemandEvent is a structural type. It does not produce a rich result on its own.
Its value comes from combining it with a primary type whose markup earns a rich result (Article, Product, Event, and so on). OnDemandEvent becomes the trunk that the primary type branches off viamainEntityorbreadcrumb. Include it on every page as the backbone of your markup.
Common OnDemandEvent 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
OnDemandEvent without endDate
WrongOnDemandEvent with only a startDateRightAlways populate endDate to express the availability windowThe whole point of OnDemandEvent is the window. Without endDate, consumers don't know when the availability expires.
Schema properties in this example
About the example data
The catch-up streaming window for the Thunderhawks-Scrapers championship game on Xoo Code Streaming, available for 30 days after the broadcast.
Comments
Loading comments...