# 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`](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#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](https://developers.google.com/actions/media/reference/feed-examples/watch-actions-examples#multiple_regions_and_languages). |
| `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](https://developers.google.com/actions/media/reference/feed-examples/watch-actions-examples#multiple_regions_and_languages). |
| `alternativeHeadline` | **Optional** | Text | Subtitles of the podcast series. |
| `author` | **Required** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson). |
| `publisher` | **Optional** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson). This field is highly recommended for disambiguation and must be provided wherever applicable. |
| `actor` | **Optional** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) repeated | Actor of the podcast. For examples and details, see [Actor (host/guest)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#Actor) section . |
| `logo` | **Optional** | [ImageObject](https://schema.org/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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ImageObject) section. |
| `image` | **Required** | [ImageObject](https://schema.org/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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ImageObject) 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](https://help.apple.com/itc/podcasts_connect/#/itc9267a2f12). |
| `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** | `https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ListenAction` | The Action to be triggered for users to listen to the content. For details, see [ListenAction](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ListenAction). |
| `popularityScore` | **Optional** | [`PopularityScoreSpecification`](https://developers.google.com/actions/media/reference/data-specification/PopularityScoreSpecification) | A popularity score to help determine the serving priority when there are multiple candidates. Please see the [`PopularityScoreSpecification (popularityScore)`](https://developers.google.com/actions/media/reference/data-specification/PopularityScoreSpecification) 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** | `https://developers.google.com/actions/media/reference/data-specification/podcast-specification#releasedEvent`, 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#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`](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#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](https://developers.google.com/actions/media/reference/feed-examples/watch-actions-examples#multiple_regions_and_languages). |
| `description` | **Required** | Text | Description of the podcast episode. |
| `alternativeHeadline` | **Required** | Text | Subtitle of the podcast episode. |
| `author` | **Required** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson). |
| `publisher` | **Required** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) for examples and details. This field is highly recommended for disambiguation and we recommend you define it wherever applicable. |
| `actor` | **Required** | [Person or Organization](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) repeated | Actor of the podcast. For examples and details, see the [Actor (host/guest)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#Actor) 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](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PodcastSeries) | The `PodcastSeries` that this podcast episode is in. Please see [PodcastSeries(partOfSeries)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PodcastSeries) for details and examples. |
| `partOfSeason` | **Optional** | [PodcastSeason](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PodcastSeason) | For multi-season series, this property provides the season information along with the season number and season name. Please see [PodcastSeason(partOfSeason)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PodcastSeason) for details and examples. |
| `timeRequired` | **Required** | Duration | The length of the episode in ISO 8601 duration format. |
| `image` | **Optional** | [ImageObject](https://schema.org/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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ImageObject) 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](https://help.apple.com/itc/podcasts_connect/#/itc9267a2f12). |
| `associatedMedia` | **Optional** | [AudioObject](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#AudioObject) | The audio file of the podcast episode. For details and examples, see [AudioObject(associatedMedia)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#AudioObject). |
| `potentialAction` | **Required** | [ListenAction](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ListenAction) | The Action to be triggered for users to listen to the content. For details, see [ListenAction](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#ListenAction) section. |
| `popularityScore` | **Optional** | [PopularityScoreSpecification](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PopularityScoreSpecification) | A popularity score to determine the serving priority when there are multiple candidates. For details and examples, see the [PopularityScoreSpecification](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#PropertyValue) 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](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#releasedEvent), 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#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. |

> [!NOTE]
> **Note:** We recommend that you review all the available property fields for [`CreativeWorkSeries`](http://schema.org/CreativeWorkSeries) and [`Episode`](https://schema.org/Episode). For example, the Google feed spec for `PodcastSeries` is a subtype under [`CreativeWorkSeries`](http://schema.org/CreativeWorkSeries), and `PodcastEpisode` is a subtype under [`Episode`](https://schema.org/Episode). If there are some properties that you are able to provide, but not included in the preceding tables, you can still follow the schema.org specification to include those in your feed.
>
> Some properties we recommend you to consider: `editor`, `accountablePerson`,
> `dateModified`, `copyrightHolder`, `discussionUrl`, `actor`, and `director`.

### 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. - Use an array to mark up the description in mulitiple languages. See the [Multiple regions and languages](https://developers.google.com/actions/media/reference/feed-examples/listen-actions-examples#multiple_regions_and_languages) example. |

#### 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)

> [!NOTE]
> **Note:** **Author vs. Publisher**
>
> `author` in most cases refers to the host or
> creator of the podcast series. If the hosts are commonly recognized as a group
> instead of as individual persons, use the `Organization` type and provide the
> name of the group.
>
> `publisher` is the publishing organization or person of the show. It can be the same as the author when the podcast series is independently published, or can represent the network in case an Organization publishes the podcast.

| 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](https://www.iso.org/iso-3166-country-codes.html) 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](https://www.iso.org/iso-3166-country-codes.html) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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](https://www.iso.org/iso-3166-country-codes.html) 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)](https://developers.google.com/actions/media/reference/data-specification/podcast-specification#OrganizationPerson) 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"
                }
            }
        ]
    }