TVEpisode
TVEpisode is an Episode subtype for a single television episode. It adds 4 direct properties: countryOfOrigin (Country), titleEIDR (episode-level EIDR), subtitleLanguage (Language or Text, IETF BCP 47 language tags), and partOfSeason (CreativeWorkSeason).
The canonical TV chain is: TVEpisode → partOfSeason → TVSeason → partOfSeries → TVSeries. Each step matters for Google's TV metadata, distributor joins, and EIDR graph connections.
Full example of schema.org/TVEpisode 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": "TVEpisode",
"name": "The Robots.txt Conspiracy",
"episodeNumber": 4,
"datePublished": "2024-10-06",
"countryOfOrigin": { "@type": "Country", "name": "United States" },
"titleEIDR": "10.5240/3E7F-A9B2-4C1D-8E5F-6A7B-C",
"subtitleLanguage": ["en", "es-419", "fr", "pt-BR", "de", "ja"],
"partOfSeason": { "@type": "TVSeason", "name": "Crawlers - Season 3", "seasonNumber": 3 },
"partOfSeries": { "@type": "TVSeries", "name": "Crawlers" },
"duration": "PT54M32S",
"actor": [
{ "@type": "Person", "name": "Nora Lindgren", "characterName": "Priya" },
{ "@type": "Person", "name": "Rahul Singh", "characterName": "Indexer Prime" }
],
"director": { "@type": "Person", "name": "Jane Xoo" },
"productionCompany": { "@type": "Organization", "name": "Xoo Code Studios" },
"trailer": { "@type": "VideoObject", "name": "S3E04 preview", "contentUrl": "https://xoocode.com/crawlers/s3e04/preview.mp4", "uploadDate": "2024-09-29", "duration": "PT00M48S" }
}
</script>Multiple subtitle languages
subtitleLanguage accepts a single BCP 47 tag ("en", "es-419") or an array. Use the array form when the episode has multi-language subtitles; use BCP 47 regional tags ("en-GB" vs "en-US") when the distinction matters for your audience.
Minimal valid version
The smallest markup that still produces a valid TVEpisode 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": "TVEpisode",
"name": "The Robots.txt Conspiracy",
"episodeNumber": 4,
"partOfSeason": { "@type": "TVSeason", "seasonNumber": 3 },
"partOfSeries": { "@type": "TVSeries", "name": "Crawlers" }
}
</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 docsTV episode rich result (Google Watch Actions)primary
Common TVEpisode 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
Skipping partOfSeason
WrongTVEpisode with partOfSeries but no partOfSeasonRightPopulate both: partOfSeason AND partOfSeriesGoogle's TV metadata and Watch Action flows expect the full chain. Missing partOfSeason breaks season-navigation UIs and some 'next episode' recommenders.
- 02
subtitleLanguage as free text
Wrong"subtitleLanguage": "English, Spanish, French"Right"subtitleLanguage": ["en", "es", "fr"] (BCP 47 tags)BCP 47 language tags are the standard. Free-text language names cannot be reliably parsed for closed-caption availability flags.
Schema properties in this example
About the example data
Crawlers S3E04, "The Robots.txt Conspiracy", directed by Jane Xoo, EIDR-tracked, subtitled in 6 languages.
Comments
Loading comments...