This section provides the details of the content markup properties for podcasts.
PodcastSeries spec
PodcastSeries
is the representation of a podcast series, which also is
referred to as a podcast "show."
Property | Priority | Type | Description |
---|---|---|---|
@context |
Required | Text | Schema.org context. Always set to
[http://schema.googleapis.com,{@language}:xx}] , where the
xx should be in the language code. This sets the default language
used for the text values in the entity. |
@type |
Required | Text | Always set to PodcastSeries . |
@id |
Required | Text | A globally unique ID for the podcast series in URI format. The ID must be
stable and not change over time. It's treated as an opaque string and doesn't
have to be a working link. The domain used for the @id value must
be owned by your organization.
|
url |
Required | Text | The canonical URL on your website where the podcast series is introduced or
described. This must be globally unique. This link helps to accurately
reconcile the content in your feed with the content in Google's databases. For
playback, use the target.urlTemplate detailed in the ListenAction section of the documentation. |
name |
Required | Text | Name of the podcast series. Only include one name per language. Use an array to mark up the description in multiple languages. See the Multiple regions and languages example. |
description |
Required | Text | A synopsis of the podcast series. Use an array to mark up the description in multiple languages. See the Multiple regions and languages example. |
alternativeHeadline |
Optional | Text | Subtitles of the podcast series. |
author |
Required | repeated |
The person or group that develops or delivers the show. Often refers to the host. For examples and details, see Organization, Person (author/publisher). |
publisher |
Optional | repeated |
The original group or network responsible for publishing the show. Often refers to an organization responsible for publishing/producing several podcasts. For examples and details, please see Organization, Person (author/publisher). This field is highly recommended for disambiguation and must be provided wherever applicable. |
actor |
Optional | repeated |
Actor of the podcast. For examples and details, see Actor (host/guest) section . |
logo |
Optional | repeated |
A logo image of the series. Provide this as a fully described
ImageObject . Provide the highest resolution available. JPEG or PNG
is preferred. For details and examples, see the
ImageObject (logo) section. |
image |
Required | repeated |
An artwork image of the series. Provid this as a fully described
ImageObject . Provide the highest resolution available. JPEG or PNG is
preferred. Please see the ImageObject (logo) section for details and
examples. |
isFamilyFriendly |
Required | Boolean | Indicates whether this content is family friendly (that is, if the content
is suitable for all members of a family, including children). Google products
might use isFamilyFriendly to help determine what content to play. The
value must be either true or false . |
inLanguage |
Required | Text | The language of the podcast content in ISO 639-1 format. This value can be used to fulfill user queries that requests contents in a specific language. |
genre |
Required | Text repeated |
The category or genre of the podcast series. For example, you can follow standard Podcast categories. |
endDate |
Optional | Date | The date of the release of the ending episode of the podcast series. Only include this field when the series is already finished. |
rssFeed |
Required | URL | The URL for the RSS feed of the podcast series. |
potentialAction |
Required | ListenAction |
The Action to be triggered for users to listen to the content. For details, see ListenAction. |
popularityScore
| Optional | PopularityScoreSpecification |
A popularity score to help determine the serving priority when there are
multiple candidates. Please see the
PopularityScoreSpecification (popularityScore) section for
details and examples. |
keywords |
Optional | Text repeated |
A list of keywords that would be associated with the podcast series. These keywords might be used to expand the user queries that can trigger this podcast series. For example, guest names, topics covered, etc. |
sameAs |
Optional | URL | URL of a third-party (not within your domain) reference web page that unambiguously indicates the item's identity. This webpage is used for disambiguation when multiple similar series exist. For example, a Wikipedia page, or the podcast series’s homepage. This field is highly recommended for disambiguation of the series. |
releasedEvent |
Optional | PublicationEvent , or more specific subtypes - FeaturedEvent or ExclusiveEvent |
The event that marks the publication or release of the podcast series. A publication event might note the initial release of a podcast by a publisher and the more specialized types can be used to denote the exclusivity or featuredness of the release. For details and examples, see the PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent) section. Note that marking a series as exclusive or featured implies that all episodes of the show are exclusive or featured. |
countryOfOrigin |
Optional | Country | The country of the principal offices of the production company or the individual responsible for the podcast. |
PodcastEpisode Spec
PodcastEpisode
is the schema.org representation of an episode
within a PodcastSeries
.
Property | Priority | Type | Description |
---|---|---|---|
@context |
Required | Text | Schema.org context. Always set to [http://schema.googleapis.com,{@language:xx}]
where the xx is the language code. This sets the default character
language used for the text values in the feed. |
@type |
Required | Text | Always set to PodcastEpisode . |
@id |
Required | Text | A globally unique ID for the podcast episode in URI format. The ID must be
stable and not change over time. It's treated as an opaque string and doesn't
have to be a working link. Your organization must own the domain used for the @id value. |
url |
Required | Text | The canonical URL on your website where you introduce or describe the
podcast episode. This value must be globally unique. This link is used to help
accurately reconcile the content in your feed with the content in Google's
databases. For playback, the target.urlTemplate detailed in the
ListenAction section of the documentation is used. |
name
| Required | Text | Name of the podcast episode. There must only be one name per language. Use an array to mark up the description in multiple languages. See the Multiple regions and languages example. |
description |
Required | Text | Description of the podcast episode. |
alternativeHeadline |
Required | Text | Subtitle of the podcast episode. |
author |
Required | repeated |
The person or group that develops or delivers the episode. This value often
refers to the host. If the author is the same as the show, you can reuse the
information from the PodcastSeries entity. For examples and
details, please see Organization, Person (author/publisher). |
publisher |
Required | repeated |
The original group or network responsible for publishing the show. Often refers to an organization responsible for publishing or producing several podcasts. Please see Organization, Person (author/publisher) for examples and details. This field is highly recommended for disambiguation and we recommend you define it wherever applicable. |
actor |
Required | repeated |
Actor of the podcast. For examples and details, see the Actor (host/guest) section. |
datePublished |
Required | Datetime | The datetime of the release of the podcast episode. This value is used to sort the episode sequence and disambiguation. |
episodeNumber |
Required | Integer | The episode number. |
partOfSeries |
Required | PodcastSeries | The PodcastSeries that this podcast episode is in. Please see
PodcastSeries(partOfSeries) for details and examples. |
partOfSeason |
Optional | PodcastSeason | For multi-season series, this property provides the season information along with the season number and season name. Please see PodcastSeason(partOfSeason) for details and examples. |
timeRequired |
Required | Duration | The length of the episode in ISO 8601 duration format. |
image |
Optional | repeated |
An artwork image of the series. This must be a fully described
ImageObject . Provide the highest resolution available. JPEG or PNG
is preferred. Please see the ImageObject (logo) section for
details and examples. |
isFamilyFriendly |
Required | Boolean | Indicates whether this content is family friendly (that is, whether the
content is suitable for all members of a family, including children). Google
products might use isFamilyFriendly to determine the content to play.
The value must be either true or false . |
inLanguage |
Required | Text | The content language of the podcast episode in ISO 639-1 format. Use this value to fulfill user queries that request contents in a specific language. If the content is in multiple languages, list just one primary language. |
genre |
Required | Text repeated |
The category or genre of the podcast series. For example, you can follow standard Podcast categories. |
associatedMedia |
Optional | AudioObject | The audio file of the podcast episode. For details and examples, see AudioObject(associatedMedia). |
potentialAction |
Required | ListenAction | The Action to be triggered for users to listen to the content. For details, see ListenAction section. |
popularityScore |
Optional | PopularityScoreSpecification | A popularity score to determine the serving priority when there are multiple candidates. For details and examples, see the PopularityScoreSpecification section. |
keywords |
Optional | Text repeated |
A list of keywords associated with the podcast series. These keywords might
be used to expand the user queries that can trigger this podcast episode. For
example, news , sports , or history . |
identifier |
Required | PropertyValue repeated |
For See PropertyValue (identifier) section for example. |
sameAs |
Optional | URL | URL of a third-party (not within your domain) reference web page that unambiguously indicates the item's identity. Google uses this webpage for disambiguation when multiple similar series exist. For example, a Wikipedia page, or the podcast episodes’ homepage. Note that the series level reference page mustn't be provided here. We highly recommend this field for disambiguation of the episode. |
releasedEvent |
Optional | PublicationEvent, or more specific subtypes - FeaturedEvent or ExclusiveEvent | The event that marks the publication or release of the podcast episode. A publication event might note the initial release of a podcast episode by a publisher and the more specific subtypes can denote exclusivity or featuredness of the release. For details and examples, see the PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent) section. Note that to mark a series as exclusive or featured above implies that all episodes of the show are exclusive or featured. We recommend that you mark such properties at the most granular level. |
countryOfOrigin |
Optional | Country | The country of the principal offices of the production company or individual responsible for the podcast. |
PodcastSeries (partOfSeries)
Use the partOfSeries
to establish the relationship between a PodcastEpisode
and its parent PodcastSeries
. Because the full detail of the PodcastSeries
is described in the separate PodcastSeries
entity, you don't need to provide
full details in partOfSeries
. You only need to provide the following
properties:
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to PodcastSeries . |
@id |
Required | URL | The globally unique ID for the series in URI format. The ID must match the
ID of the complete PodcastSeries entity in your feed. |
name |
Required | Text | The name of the podcast series.
|
Example 1
"partOfSeries": {
"@type": "PodcastSeries",
"@id": "http://www.tjpodcast.org/series?id=1",
"name": "Radiolab"
},
PodcastSeason (partOfSeason)
The PodcastSeason
represents the season information of an
PodcastEpisode
, most importantly the season number. You only need
this property when the podcast series has multiple seasons.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to PodcastSeason |
@id |
Required | URL | A globally unique ID for the season in URI format. The ID must be stable and not change over time. It's treated as an opaque string and doesn't have to be a working link. |
seasonNumber |
Required | Integer | The season number of the podcast series. |
name |
Optional | Text | The name of the podcast season. |
Example 1
"partOfSeason": {
"@type": "PodcastSeason",
"@id": "http://www.tjpodcast.org/seriesx/season?id=1",
"seasonNumber": 1,
"name": "Radiolab Season 1"
},
Organization, Person (author or publisher)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to either Organization or Person . |
@id |
Required | URL | A globally unique ID for the organization or person in URI format. The ID must be stable and not change over time. It's treated as an opaque string and doesn't have to be a working link. |
name |
Required | Text | The name of the organization or the person. |
sameAs |
Optional | URL | URL of a third-party (not within your domain) reference web page that unambiguously indicates the item's identity. Google uses this webpage for disambiguation when multiple similar series exist. Examples can include a Wikipedia page for an organization, or the organization’s official website. |
Example 1
"author": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/wnyc",
"sameAs": "https://en.wikipedia.org/wiki/WNYC",
"name": "WNYC"
},
Example 2
"author": {
"@type": "Person",
"@id": "https://www.tjpodcast.org/person/jad_abumrad",
"sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad",
"name": "Jad Abumrad"
},
Actor (Host or guest)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to either Organization or Person . |
@id |
Required | URL | A globally unique ID for the organization or person in URI format. The ID must be stable and not change over time. It's treated as an opaque string and doesn't have to be a working link. |
name |
Required | Text | The name of the organization or person. |
roleName |
Required | Text | `Host` or `Guest`. |
sameAs |
Optional | URL | URL of a third-party (not within your domain) reference web page that unambiguously indicates the item's identity. Google uses this webpage for disambiguation when multiple similar series exist. Examples can include a Wikipedia page for an organization, or the organization’s official website. |
Example 1
"actor":[{
"@type": "PerformanceRole",
"actor": {
"@type": "Person",
"@id": "https://www.tjpodcast.org/person/Roman",
"name": {
"@language":"en",
"@value": "Roman Mars"
},
"roleName": "Host"
"sameAs": "https://en.wikipedia.org/wiki/Roman",
},
"actor": {
"@type": "Person",
"@id": "https://www.tjpodcast.org/person/guest",
"name":{
"@language":"en",
"@value": "Kurt Kohlstedt"
},
"roleName": "Guest"
},
}]
ImageObject (logo or image)
The ImageObject
is used to provide the logo or artwork for the content.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to ImageObject . |
height |
Optional | Integer | Height of the image in pixels. |
width |
Optional | Integer | Width of the image in pixels. |
contentUrl |
Required | URL | A URL where the image can be located. |
regionsAllowed |
Optional | Country repeated |
The countries where the media is allowed:
|
Country (image.regionsAllowed)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to Country. |
name |
Required | Text | The
ISO 3166-1 alpha-2 country code. For example, GB ,
US . |
Example 1
"logo": {
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.foo.com/img/67890.jpg",
},
Example 2
"logo": [
{
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.foo.com/img/67890.jpg",
"regionsAllowed": [
{
"@type": "Country",
"name": "US"
},
{
"@type": "Country",
"name": "GB"
}
]
},
{
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.foo.com/img/12345.jpg",
"regionsAllowed": [
{
"@type": "Country",
"name": "IN"
},
{
"@type": "Country",
"name": "PK"
}
]
},
],
PropertyValue (identifier)
If you have GUIDs for your content, you can provide these IDs with the
identifier
field to improve the accuracy of Google’s reconciliation of your
content. Please note that the GUID is required for PodcastEpisode
.
This must be different from the @id
field of the episode (not
within your domain) and must represent the source episode globally and
uniquely over time, across sources.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to `PropertyValue`. |
propertyID |
Required | Text | Always set to GUID . |
value |
Required | Text | The GUID of the series or episode. |
Example 1
"identifier": {
"@type": "PropertyValue",
"propertyID": "GUID",
"value": "50204fe4-bc68-4b34-aae6-e73c700cc5ca"
},
PopularityScoreSpecification (popularityScore)
The popularityScore
can help users get to the most appropriate
content, in scenarios where the criteria from the user query matches multiple
entities from your feed. The content with the highest popularity score
available for the user’s region is served to the user when this value is
available. All content without this field defaults to popularity score 0
. The
score comparison happens within the scope of your full catalog, so please
ensure the scale is consistent across all of your feeds.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to PopularityScoreSpecification . |
value |
Required | Numeric | A positive numeric value to compare with other entities from your catalog for serving priority. A bigger number represents a higher popularity. |
eligibleRegion |
Optional | Country or Text repeated |
One region or a list of the regions where this popularity score applies to. If the popularity score applies globally, use If specific regions need to be listed, please use `Country` type. If you leave this field out, |
Country (popularityScore.eligibleRegion)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to Country . |
name |
Required | Text | The
ISO 3166-1 alpha-2 country code. For example, GB ,
US . |
Example 1
"popularityScore": {
"@type": "PopularityScoreSpecification",
"value": 4.3,
"eligibleRegion": "Earth"
},
Example 2
"popularityScore": {
"@type": "PopularityScoreSpecification",
"value": 2,
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
},
Example 3
"popularityScore": {
"@type": "PopularityScoreSpecification",
"value": 101,
"eligibleRegion": [
{
"@type": "Country",
"name": "US"
},
{
"@type": "Country",
"name": "GB"
}
]
},
PublicationEvent, FeaturedEvent, ExclusiveEvent (releasedEvent)
- PublicationEvent
- Use this object to represent the date and location of publication of a show or
episode (also known as the "release date" of a series or episode).
Additionally, the
publishedBy
field denotes the publishing or distributing entity of the podcast series or episode. - ExclusiveEvent
- Use this object to denote that the provider has exclusive distribution rights for the podcast. Exclusivity can be region specific and time bound, and must include the organization field that points to the exclusive provider of the content.
- FeaturedEvent
- Use this object to represent that the provider features the podcast to consumers (for example, as an "original").
- Originals is different from Exclusive
- The term "originals (featured") often denotes exclusive rights to a given
entity, which overloads the term. As such, the intended meaning must be split
into the above two categories. It's possible for an original entity to also be
exclusive, and in this case the
releasedEvent
can take an array with both types of events on the same entity.
Note that, while exclusivity or featuredness might share similar meanings within
a provider’s catalog, PublicationEvent
more generally applies to enable
disambiguation of entities and to provide additional metadata about the same,
such as release date of a series or episode.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to one of PublicationEvent ,
ExclusiveEvent , or FeaturedEvent . |
location |
Required | Country | The region where the publication event occurs. You can also use this
to represent the exclusivity restrictions and distribution restrictions
of the entity. Use ISO 3166 codes for the country. If you need to apply
global semantics, set to EARTH . Explicitly set
location to EARTH , in case locale specific
restrictions aren't applicable. |
startDate |
Recommended (Required for ExclusiveEvent) | Date or DateTime | Start date of the entities' publication. In the case of
PublicationEvent , this denotes the initial release date of
this entity. In the case of ExclusiveEvent or
FeaturedEvent , this represents the start date of the
exclusiveness or featuredness of the entity. |
endDate |
Recommended (Required for ExclusiveEvent) | Date or DateTime | End date of the entities’ publication. In the case of
PublicationEvent , this denotes the final publication date
of this entity. In the case of ExclusiveEvent or
FeaturedEvent , this represents the end date of the
exclusiveness or featuredness of the entity. |
publishedBy |
Required | Organization or Person | The Organization or Person entity which
publishes this entity and applies to this publication event. Please use
the same schema as described in the
Organization
(author/Publisher) section. |
Example 1
"releasedEvent": [ {
"@type": "PublicationEvent",
"location": "EARTH",
"startDate": "2016-04-21T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/wnyc",
"sameAs": "https://en.wikipedia.org/wiki/WNYC",
"name": "WNYC"
},
}, {
"@type": "FeaturedEvent",
"location": "US",
"startDate": "2020-04-18T20:00",
"endDate": "2020-04-21T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast",
},
},
]
Example 2
"releasedEvent": [ {
"@type": "FeaturedEvent",
"location": "US",
"startDate": "2020-04-18T20:00",
"endDate": "2020-05-21T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast",
},
}, {
"@type": "ExclusiveEvent",
"location": "US",
"startDate": "2020-04-18T20:00",
"endDate": "2020-04-24T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast",
},
}, {
"@type": "ExclusiveEvent",
"location": "CA",
"startDate": "2020-04-21T20:00",
"endDate": "2020-04-24T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast",
},
}
]
AudioObject (associatedMedia)
AudioObject
is used to provide the raw media file for the podcast episode.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to AudioObject . |
contentUrl |
Required | URL | The URL of the media file. |
contentSize |
Required | Integer | The size of the media file in bytes. |
encodingFormat |
Required | Text | The IANA media types of the media file. For example
audio/mpeg . |
duration |
Required | Duration | The length of the media in ISO 8601 duration format. |
transcript |
Optional | Text | Transcript of the episode. |
bitrate |
Optional | Text | The bitrate of the media file. |
name |
Optional | Text | The filename of the media file. |
Example 1
"associatedMedia": {
"@type": "AudioObject",
"contentUrl": "https://www.tjpodcast.org/media_files/mp3/radiolab_podcast19.mp3",
"duration": "PT5M32S",
"contentSize": "53616000",
"encodingFormat": "audio/mpeg",
"name": "radiolab_podcast19.mp3",
"transcript": "Transcript of the episode",
"bitrate": "64Kbps"
},
ListenAction (potentialAction)
The ListenAction
entity defines your deep links for playback and the criteria
for the users (for example, geo, chronal, login, or subscription status) to
access the content.
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to ListenAction . |
target |
Required |
repeated |
The specifications of your deep link with the supported platform
information. You can use multiple EntryPoint fields to
define different deep links for different platform sets. |
actionAccessibilityRequirement |
Required |
repeated |
The definition of user requirements to access this entity. If multiple
ActionAccessSpecification presents, a user who matches any
specification criteria can access the content. |
EntryPoint (potentialAction.target)
@type
EntryPoint
.urlTemplate
actionPlatform
Text
repeated
The platform that this deep link is valid for. The following values are possible:
"http://schema.org/DesktopWebPlatform"
"http://schema.org/MobileWebPlatform"
"http://schema.org/AndroidPlatform"
"http://schema.org/AndroidTVPlatform"
"http://schema.org/IOSPlatform"
"http://schema.googleapis.com/GoogleAudioCast"
"http://schema.googleapis.com/GoogleVideoCast"
ActionAccessSpecification (potentialAction.actionAccessibilityRequirement)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to ActionAccessSpecification . |
category |
Required | Text |
The type of access requirement. This needs to be one of the following values:
|
availabilityStarts |
Optional | Datetime | The start time of the availability window. You can use this to control the exact time when this content can be exposed to users. |
availabilityEnds |
Optional | Datetime | The end time of the availability window. You can use this to control the exact time when this content stops being exposed to users. |
eligibleRegion |
Required | Country repeated |
The country that's eligible for this Offer. You can use this to control the country or region where this content must be available. |
requiresSubscription |
Required if applicable | MediaSubscription | The subscription package required to access this content. If your service offers multiple subscription packages, this field is required. If your service is free, or there is only a single tier of subscription, you can skip this field. |
Country (potentialAction.actionAccessibilityRequirement.eligibleRegion)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to Country . |
name |
Required | Text | The ISO 3166-1 alpha 2 country code. |
MediaSubscription (potentialAction.actionAccessibilityRequirement.requiresSubscription)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to MediaSubscription . |
@id |
Required | URL | A globally unique ID for the subscription package in URI format. The ID must be stable and not change over time. It's treated as an opaque string and doesn't have to be a working link. |
name |
Required | Text | The name of the subscription package. For example
Premium , Basic . |
expectsAcceptanceOf |
Recommended | Offer | The offer associated with the purchase of the Media Subscription. You can use this to express the price of the subscription. |
Offer (potentialAction.actionAccessibilityRequirement.requiresSubscription.expectsAcceptanceOf)
Property | Priority | Type | Description |
---|---|---|---|
@type |
Required | Text | Always set to Offer . |
price |
Required | Number | The price of the subscription. |
priceCurrency |
Required | Text | The currency (in three-letter ISO 4217 format) of the price. |
seller |
Recommended | Organization | The organization that offers the subscription or purchase of the action. Use the same schema as described in the Organization (author/Publisher) section. |
Example 1
"potentialAction": {
"@type": "ListenAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.tjpodcast.org/?streamStationId=170",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.org/AndroidPlatform",
"http://schema.org/AndroidTVPlatform",
"http://schema.org/IOSPlatform",
"http://schema.googleapis.com/GoogleAudioCast",
"http://schema.googleapis.com/GoogleVideoCast"
]
},
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "nologinrequired",
"availabilityStarts": "2018-04-01T11:01:00-04:00",
"availabilityEnds": "2018-06-30T23:59:00-04:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
}
},
Example 2
"potentialAction": {
"@type": "ListenAction",
"target": [
{
"@type": "EntryPoint",
"urlTemplate": "https://www.tjpodcast.org/?streamStationId=170",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.org/AndroidPlatform",
"http://schema.org/AndroidTVPlatform",
"http://schema.org/IOSPlatform"
]
},
{
"@type": "EntryPoint",
"urlTemplate": "https://www.tjpodcast.org/castlink?streamStationId=170",
"actionPlatform": [
"http://schema.googleapis.com/GoogleAudioCast",
"http://schema.googleapis.com/GoogleVideoCast"
]
}
],
"actionAccessibilityRequirement": [
{
"@type": "ActionAccessSpecification",
"category": "nologinrequired",
"availabilityStarts": "2018-04-01T11:01:00-04:00",
"availabilityEnds": "2018-06-30T23:59:00-04:00",
"eligibleRegion": [
{
"@type": "Country",
"name": "IN"
},
{
"@type": "Country",
"name": "GB"
}
]
},
{
"@type": "ActionAccessSpecification",
"category": "Subscription",
"requiresSubscription": {
"@type": "MediaSubscription",
"@id": "http://www.example.com/packages/basic-pack",
"name": "Basic Pack",
"expectsAcceptanceOf": {
"@type": "Offer",
"price": 8.99,
"priceCurrency": "USD"
}
},
"availabilityStarts": "2018-04-01T11:01:00-04:00",
"availabilityEnds": "2018-06-30T23:59:00-04:00",
"eligibleRegion": {
"@type": "Country",
"name": "US"
}
}
]
},
Appendix
Full Example
{
"@context": "http://schema.org",
"@type": "DataFeed",
"dateModified": "2018-09-10T13:58:26.892Z",
"dataFeedElement": [
{
"@context": [
"http://schema.googleapis.com",
{
"@language": "en"
}
],
"@type": "PodcastSeries",
"@id": "http://www.tjpodcast.org/series?id=2",
"url": "http://www.tjpodcast.org/series?id=2",
"name": "Radiolab",
"description": "A two-time Peabody Award-winner...",
"alternativeHeadline": "Radiolab - Powered by WNYC",
"sameAs": "https://en.wikipedia.org/wiki/Radiolab",
"image": {
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.tjpodcast.org/img/2.jpg"
},
"logo": {
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.tjpodcast.org/logo/2/1.jpg"
},
"keywords": [
"Science",
"Technology",
"Philosophy",
"Education"
],
"author": [
{
"@type": "Person",
"@id": "https://www.tjpodcast.org/author/jad_abumrad",
"name": "Jad Abumrad",
"sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad"
},
{
"@type": "Person",
"@id": "https://www.tjpodcast.org/author/robert_krulwich",
"name": "Robert Krulwich",
"sameAs": "https://en.wikipedia.org/wiki/Robert_Krulwich"
}
],
"publisher": {
"@type": "Organization",
"name": "WNYC",
"@id": "https://www.tjpodcast.org/network/wnyc_studios",
"sameAs": "https://en.wikipedia.org/wiki/WNYC_Studios"
},
"isFamilyFriendly": "True",
"inLanguage": "en",
"genre": [
"Science & Medicine",
"Natural Sciences"
],
"endDate": "2017-12-22T08:59:00",
"rssFeed": "http://feeds.wnyc.org/radiolab",
"potentialAction": {
"@type": "ListenAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.tjpodcast.org/?streamSeriesId=2",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.googleapis.com/GoogleAudioCast",
"http://schema.googleapis.com/GoogleVideoCast"
]
},
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "nologinrequired",
"availabilityStarts": "2018-04-01T11:01:00-04:00",
"availabilityEnds": "2019-12-30T23:59:00-04:00",
"eligibleRegion": {
"@type": "Country",
"name": "FR"
}
}
},
"popularityScore": {
"@type": "PopularityScoreSpecification",
"value": 4.2
}
},
{
"@context": [
"http://schema.googleapis.com",
{
"@language": "en"
}
],
"@type": "PodcastEpisode",
"@id": "http://www.tjpodcast.org/episode?id=1",
"url": "http://www.tjpodcast.org/episode?id=1",
"name": "A Clockwork Miracle",
"description": "As legend goes, in 1562, King Philip II...",
"sameAs": "https://www.wnycstudios.org/story/radiolab-clockwork-miracle",
"image": {
"@type": "ImageObject",
"height": "100",
"width": "800",
"contentUrl": "http://www.tjpodcast.org/img/2/1.jpg"
},
"keywords": [
"Education",
"Philosophy",
"Science",
],
"partOfSeries": {
"@type": "PodcastSeries",
"@id": "http://www.tjpodcast.org/series?id=2",
"name": "Radiolab",
"sameAs": "https://en.wikipedia.org/wiki/Radiolab",
},
"episodeNumber": 101,
"inLanguage": "en",
"author": [
{
"@type": "Person",
"@id": "https://www.tjpodcast.org/author/jad_abumrad",
"name": "Jad Abumrad",
"sameAs": "https://en.wikipedia.org/wiki/Jad_Abumrad"
},
{
"@type": "Person",
"@id": "https://www.tjpodcast.org/author/robert_krulwich",
"name": "Robert Krulwich",
"sameAs": "https://en.wikipedia.org/wiki/Robert_Krulwich"
}
],
"publisher": {
"@type": "Organization",
"name": "WNYC",
"@id": "https://www.tjpodcast.org/network/wnyc_studios",
"sameAs": "https://en.wikipedia.org/wiki/WNYC_Studios"
},
"isFamilyFriendly": "True",
"genre": [
"Science",
"Philosophy",
"Fiction"
],
"datePublished": "2018-12-27T23:23:00Z",
"timeRequired": "PT22M",
"associatedMedia": {
"@type": "AudioObject",
"contentUrl": "https://www.tjpodcast.org/media_files/mp3/radiolab_podcast19.mp3",
"duration": "PT21M45S",
"contentSize": "53616000",
"encodingFormat": "audio/mpeg",
"transcript": "Transcript of the episode",
"bitrate": "64Kbps"
},
"potentialAction": {
"@type": "ListenAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.tjpodcast.org/?streamEpisodeId=1",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.googleapis.com/GoogleAudioCast",
"http://schema.googleapis.com/GoogleVideoCast"
]
},
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "nologinrequired",
"availabilityStarts": "2018-04-01T11:01:00-04:00",
"availabilityEnds": "2019-12-30T23:59:00-04:00",
"eligibleRegion": {
"@type": "Country",
"name": "FR"
}
}
},
"popularityScore": {
"@type": "PopularityScoreSpecification",
"value": 3.8
},
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "GUID",
"value": "53ff386e-e768-40b5-8854-1b7415826ded"
}
]
}
],
"actor": [
{
"@type": "PerformanceRole",
"actor": {
"@type": "Person",
"@id": "https://www.tjpodcast.org/person/Roman",
"name": {
"@language": "en",
"@value": "Roman Mars"
},
"roleName": "Host",
"sameAs": "https://en.wikipedia.org/wiki/Roman"
},
"actor": {
"@type": "Person",
"@id": "https://www.tjpodcast.org/person/guest",
"name": {
"@language": "en",
"@value": "Kurt Kohlstedt"
},
"roleName": "Guest"
}
}
],
"releasedEvent": [
{
"@type": "FeaturedEvent",
"location": "US",
"startDate": "2020-04-18T20:00",
"endDate": "2020-05-21T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast"
}
},
{
"@type": "ExclusiveEvent",
"location": "US",
"startDate": "2020-04-18T20:00",
"endDate": "2020-04-24T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast"
}
},
{
"@type": "ExclusiveEvent",
"location": "CA",
"startDate": "2020-04-21T20:00",
"endDate": "2020-04-24T20:00",
"publishedBy": {
"@type": "Organization",
"@id": "https://www.tjpodcast.org/organization/tjpodcast",
"sameAs": "https://en.wikipedia.org/wiki/tjpodcast",
"name": "TJPodcast"
}
}
]
}