Podcast Schema Markup: JSON-LD for Episodes and Video Podcasts
By Kris Reid ·
Podcast schema markup is JSON-LD that describes a show and its episodes using schema.org’s PodcastSeries and PodcastEpisode types, usually with Person entries for the host and guest. Google Search has no podcast rich result, so those types label the page without changing how it looks in results. For video episodes, VideoObject markup is what makes the episode eligible for Google’s video features.
Most guides skip that distinction, or imply that podcast markup unlocks a special result. It doesn’t, as of October 2026. That doesn’t make the markup worthless, but it does change where you spend your effort. If your real estate show is recorded on video, VideoObject matters more than everything else here combined.
Does podcast schema markup get rich results in Google?
Podcast schema markup does not get a rich result in Google Search today. Google’s list of structured data features it supports (last updated June 2026 when we checked) includes Video, Article, Breadcrumb, Profile page and others, but nothing for PodcastSeries or PodcastEpisode.
Here is how the types you’re likely to use compare.
| Type | Defined by | Google Search rich result? | Use it for |
|---|---|---|---|
| PodcastSeries | schema.org | No | Describing the show: name, host, feed URL |
| PodcastEpisode | schema.org | No | Describing each episode: title, date, number, audio file, series |
| AudioObject | schema.org | No | The episode’s audio file inside PodcastEpisode |
| VideoObject | schema.org, documented by Google | Yes: video features | The video version of an episode on a watch page |
| Clip and SeekToAction | schema.org, documented by Google | Yes: key moments | Marking chapters in a video episode |
| Person | schema.org | No standalone result | The host and guest; used inside other markup |
| ProfilePage | schema.org, documented by Google | Yes: Profile page | Your own “About” or host page, not episode pages |
| Article | schema.org, documented by Google | Yes: Article | Episode articles written up from the transcript |
Two notes on that table. First, schema.org still lists PodcastEpisode in its “new” area, where, per the PodcastEpisode page on schema.org, “implementation feedback and adoption from applications and websites can help improve our definitions.” PodcastSeries carries the same label. Second, if you search for podcast schema you’ll find Google’s podcast schema.org specification. That page belongs to Google’s Media Actions documentation: it defines feeds that a limited set of media providers submit to Google so content can be played, not markup that a website adds to earn a search result. An agent website doesn’t need it.
Why add podcast schema if Google shows no rich result?
You add podcast schema because it describes your episode pages in a precise, machine-readable way at very little cost, not because it changes your listing in Google. It states plainly which show an episode belongs to, who hosted it, who the guest was and when it was published.
Be realistic about the payoff. Google’s general structured data guidelines say Google “does not guarantee that your structured data will show up in search results,” even for supported types. For unsupported types the honest expectation is lower still. Our view: add PodcastEpisode once, as part of your episode page template, and then stop thinking about it. Put the real effort into the page itself, which our podcast episode page template covers block by block.
What does PodcastEpisode JSON-LD look like?
PodcastEpisode JSON-LD names the episode, links it to its series with partOfSeries, and points to the audio file with associatedMedia. Here is a complete block for one episode of a local real estate show. Replace every bracketed value and example URL with your own.
{
"@context": "https://schema.org",
"@type": "PodcastEpisode",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#episode",
"url": "https://www.example.com/podcast/home-inspection-deal-breakers/",
"name": "What Home Inspection Problems Are Deal Breakers?",
"description": "A local home inspector explains which inspection findings should stop a purchase and which are normal repairs.",
"datePublished": "2026-10-09",
"episodeNumber": 41,
"duration": "PT32M15S",
"partOfSeries": {
"@type": "PodcastSeries",
"@id": "https://www.example.com/podcast/#series",
"name": "[Show name]",
"url": "https://www.example.com/podcast/",
"webFeed": "https://feeds.example.com/[show-feed].xml"
},
"associatedMedia": {
"@type": "AudioObject",
"contentUrl": "https://media.example.com/[episode-41].mp3",
"encodingFormat": "audio/mpeg"
}
}
What each property is doing:
@idgives the episode a stable identifier. Use the page URL plus a fragment, and never change it.nameshould match the H1 on the page, anddescriptionshould match the visible summary.durationuses ISO 8601 format:PT32M15Sis 32 minutes and 15 seconds.partOfSeriesconnects the episode to the show. On your main podcast page, publish a fuller PodcastSeries block with the same@id.webFeedis the property schema.org defines on PodcastSeries for the RSS feed.
How do you mark up a video podcast episode?
You mark up a video podcast episode with a VideoObject on the page where people can watch it. Google’s video structured data documentation requires three properties: name, thumbnailUrl and uploadDate. It recommends description, duration, contentUrl or embedUrl, and a few others, and says “VideoObject structured data must be added to a page where users can watch the video.”
{
"@context": "https://schema.org",
"@type": "VideoObject",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#video",
"name": "What Home Inspection Problems Are Deal Breakers?",
"description": "A local home inspector explains which inspection findings should stop a purchase and which are normal repairs.",
"thumbnailUrl": "https://www.example.com/images/podcast/home-inspection-deal-breakers.jpg",
"uploadDate": "2026-10-09T08:00:00-06:00",
"duration": "PT32M15S",
"embedUrl": "https://www.youtube.com/embed/[VIDEO_ID]",
"hasPart": [
{
"@type": "Clip",
"name": "Roof and foundation findings",
"startOffset": 190,
"endOffset": 540,
"url": "https://www.example.com/podcast/home-inspection-deal-breakers/?t=190"
}
]
}
Key moments: Clip or YouTube timestamps?
Key moments are the chapter links Google can show under a video result. Google says it tries to detect them automatically, and that it will “prioritize key moments set by you, either through structured data or the YouTube description.” For most agents whose episodes live on YouTube, timestamps in the YouTube description are the simpler route. Our guide to YouTube SEO for real estate video podcasts covers how to write them.
Only add Clip markup if the player on your own page can start at a time set in the URL. Google says the clip URL “must point to the same URL path as the video with additional query parameters that specify the time,” and that the video must be able to deep link to a point other than the start. If ?t=190 on your page doesn’t start the video at 3:10, leave hasPart out.
How do you mark up the host and guest?
You mark up the host and guest as Person entities with a name, a URL and, where useful, a job title, an employer and links to their other profiles through sameAs. Then reference them from the episode, so the page says clearly who spoke.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Person",
"@id": "https://www.example.com/about/#host",
"name": "[Host name]",
"jobTitle": "REALTOR®",
"url": "https://www.example.com/about/",
"worksFor": { "@type": "RealEstateAgent", "name": "[Brokerage name]" },
"sameAs": [
"https://www.youtube.com/@[channel]",
"https://www.linkedin.com/in/[profile]"
]
},
{
"@type": "Person",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#guest",
"name": "[Guest name]",
"jobTitle": "Home Inspector",
"url": "https://[guest-website].com/"
}
]
}
Only include details that appear on the page. If the guest bio doesn’t mention their company, leave worksFor out. Google’s guidelines say “Don’t mark up content that is not visible to readers of the page.” Use “REALTOR®” only if the host is a member of the National Association of REALTORS®, and follow your brokerage’s rules on how its name appears.
For the host’s own “About” page, Google does support ProfilePage markup, which is designed for pages focused on a single person or organization affiliated with the site. That belongs on the about page, not on each episode.
How do you put it all together on one episode page?
You put it all together with a single JSON-LD block that uses @graph and connects the pieces by @id. One block is easier to maintain than four separate ones, and the references make the relationships explicit: the episode is part of the series, the host is the author, the guest is a performer, and the video is the episode’s video.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "PodcastSeries",
"@id": "https://www.example.com/podcast/#series",
"name": "[Show name]",
"url": "https://www.example.com/podcast/",
"webFeed": "https://feeds.example.com/[show-feed].xml",
"author": { "@id": "https://www.example.com/about/#host" }
},
{
"@type": "PodcastEpisode",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#episode",
"url": "https://www.example.com/podcast/home-inspection-deal-breakers/",
"name": "What Home Inspection Problems Are Deal Breakers?",
"description": "A local home inspector explains which inspection findings should stop a purchase and which are normal repairs.",
"datePublished": "2026-10-09",
"episodeNumber": 41,
"duration": "PT32M15S",
"partOfSeries": { "@id": "https://www.example.com/podcast/#series" },
"author": { "@id": "https://www.example.com/about/#host" },
"actor": [
{ "@id": "https://www.example.com/about/#host" },
{ "@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#guest" }
],
"associatedMedia": [
{
"@type": "AudioObject",
"contentUrl": "https://media.example.com/[episode-41].mp3",
"encodingFormat": "audio/mpeg"
},
{ "@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#video" }
]
},
{
"@type": "VideoObject",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#video",
"name": "What Home Inspection Problems Are Deal Breakers?",
"description": "A local home inspector explains which inspection findings should stop a purchase and which are normal repairs.",
"thumbnailUrl": "https://www.example.com/images/podcast/home-inspection-deal-breakers.jpg",
"uploadDate": "2026-10-09T08:00:00-06:00",
"duration": "PT32M15S",
"embedUrl": "https://www.youtube.com/embed/[VIDEO_ID]"
},
{
"@type": "Person",
"@id": "https://www.example.com/about/#host",
"name": "[Host name]",
"url": "https://www.example.com/about/"
},
{
"@type": "Person",
"@id": "https://www.example.com/podcast/home-inspection-deal-breakers/#guest",
"name": "[Guest name]",
"jobTitle": "Home Inspector",
"url": "https://[guest-website].com/"
}
]
}
Schema.org defines actor on PodcastEpisode as a performer in the episode, which is why both host and guest appear there. Some sites use contributor for guests instead; either is valid vocabulary, and neither affects a Google rich result.
How do you test podcast schema markup?
You test podcast schema markup with two free tools, because each checks a different thing. Google’s general guidelines point to the Rich Results Test for checking technical compliance, and that tool reports on the features Google supports, such as Video. For PodcastSeries, PodcastEpisode and Person, use the Schema Markup Validator at validator.schema.org, which checks schema.org vocabulary in general.
- Publish the page, or paste its code into each tool before publishing.
- Run the Rich Results Test and confirm the video item is detected with no errors on required properties.
- Run the Schema Markup Validator and confirm every entity appears, with the relationships you expect.
- In Search Console, use URL Inspection on the live page to confirm Google can fetch it and see the structured data.
- If you have video episodes, check the video report in the Indexing section of Search Console after a few weeks to see whether Google indexed the videos.
What mistakes break podcast schema markup?
The mistakes that break podcast schema markup are mostly mismatches between the markup and the page, and formatting slips in dates and durations. Check these before you copy the template across every episode.
- Markup describes something not on the page, such as a guest employer that isn’t in the bio, or a video that isn’t embedded.
- Durations not in ISO 8601, for example
32:15instead ofPT32M15S. - uploadDate without a timezone. Google recommends including timezone information.
- Changing @id values between episodes or after publishing.
- Duplicate blocks from a plugin and a manual block describing the same episode differently.
- Keyword stuffing in
nameordescription. Keep them identical in meaning to the visible H1 and summary. - Clip URLs that don’t deep link to the right moment in your player.
- Markup copied from a template with placeholders left in, such as
[Guest name].
Who should maintain the markup?
The person who builds your episode pages should maintain the markup, ideally by adding it to the page template so each new episode fills it in automatically from the same fields as the visible page. Once that’s set up, the weekly work is checking that the fields are filled in correctly.
If your show’s weekly publishing is already stretched, outsourced podcast production for real estate agents from Icons of Real Estate, Ardor’s sister company, covers editing, publishing, promo clips and SEO-optimized website articles. For how markup fits alongside show notes, transcripts, YouTube and the podcast apps, see our guide to podcast SEO for real estate agents, and for the text that should sit beside the markup, our guide to writing podcast show notes that rank.
Sources
- Structured Data Markup that Google Search Supports, Google Search Central (accessed October 9, 2026)
- Video (VideoObject, Clip, BroadcastEvent) Schema Markup, Google Search Central (accessed October 9, 2026)
- General Structured Data Guidelines, Google Search Central (accessed October 9, 2026)
- PodcastEpisode, Schema.org (accessed October 9, 2026)
- Podcast Schema.org Specification, Google for Developers (Media Actions) (accessed October 9, 2026)
Frequently asked questions
Do I need podcast schema if my website platform has a podcast plugin?
Check what the plugin outputs before adding more. View the page source or run it through the Schema Markup Validator. Two conflicting blocks describing the same episode create confusion; keep one accurate version.
Should I use AudioObject or VideoObject?
Use AudioObject inside PodcastEpisode for the audio file, and a separate VideoObject when a video version is embedded and watchable on the page. Google's video features rely on VideoObject; AudioObject has no Google rich result.
Does schema markup help my podcast rank higher?
Google's documentation presents structured data as a way to help it understand a page and to make the page eligible for certain search features, not as a ranking boost. Treat it as accurate labeling, not a ranking lever.

Founder & CEO, Ardor SEO and Icons of Real Estate
Kris Reid founded Ardor SEO in 2010 after studying software engineering at the Queensland University of Technology. He also founded Icons of Real Estate, a podcast network for real estate professionals.