Podcast Schema.org Specification

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

Person or Organization

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

Person or Organization

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

Person or Organization

repeated

Actor of the podcast. For examples and details, see Actor (host/guest) section .
logo Optional

ImageObject

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

ImageObject

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

Person or Organization

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

Person or Organization

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

Person or Organization

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

ImageObject

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 PodcastEpisode, use this property to provide a GUID. The GUID needs to be an ID which can globally and uniquely identify a podcast’s episodes. It's different from the @id field on the episode.

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:

  • If not specified, then it's assumed the image is allowed in all locales.
  • To submit different images per region, add multiple ImageObject properties, each with its own set of countries and a corresponding image URL.

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 earth as the text value.

If specific regions need to be listed, please use `Country` type.

If you leave this field out, eligibleRegion defaults to earth.

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

EntryPoint

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

ActionAccessSpecification

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)

table class="fixed"> Property Priority Type Description @type Required Text Always set to EntryPoint. urlTemplate Required URL The link that's used to initiate playback of your content. actionPlatform Required

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:

  • nologinrequired: The action is available to the user with no purchase or login to access content.
  • free: The action is available with no purchase or paid subscription required of the user. The action does require a user to log in.
  • subscription: The action is included with a paid subscription to your service.
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"
            }
        }
    ]
}