Watch Actions - Examples

The following is a list of examples of some common scenarios for Watch Actions to guide you in your feed development. Many of the examples have omitted details of some of the properties to keep them concise.

Example 1 - Simple example

Movie with the same universal link across all platforms with the same access requirements

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2017-07-21T10:35:29Z",
           "availabilityEnds": "2018-10-21T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      },
      ... Other properties ...
    }

Movie with an old style link for Android and universal link across all other platforms with the same access requirements

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": [
          {
            "@type": "EntryPoint",
            "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
            "inLanguage": "en",
            "actionPlatform": [
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/MobileWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.googleapis.com/GoogleVideoCast"
            ]
          },
          {
            "@type": "EntryPoint",
            "urlTemplate": "android-app://com.example/example-scheme/forrest_gump?autoplay=true",
            "inLanguage": "en",
            "actionPlatform": [
              "http://schema.org/AndroidPlatform"
            ]
          }
        ],
         "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2017-07-21T10:35:29Z",
           "availabilityEnds": "2018-10-21T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      },
      ... Other properties ...
    }

Example 3 - Multiple access requirements

Access requirement is free for a limited time and subscription afterwards - same across all platforms.

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform",
            "http://schema.googleapis.com/GoogleVideoCast"
          ]
        },
         "actionAccessibilityRequirement": [
         {
            "@type": "ActionAccessSpecification",
            "category": "free",
            "availabilityStarts": "2018-01-01T00:00Z",
            "availabilityEnds": "2018-05-31T00:00Z",
            "eligibleRegion": {
              "@type": "Country",
              "name": "US"
            }
          },
          {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-06-01T10:35:29Z",
           "availabilityEnds": "2019-06-01T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
       ]
      },
      ... Other properties ...
    }

Example 4 - Different access requirements across different platforms

Access requirement is free for a limited time on Desktop and Mobile platforms and subscription afterwars, and always subscription on Cast

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": [
      {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform"
          ]
        },
        "actionAccessibilityRequirement": [
         {
            "@type": "ActionAccessSpecification",
            "category": "free",
            "availabilityStarts": "2018-01-01T10:35:29Z",
            "availabilityEnds": "2018-05-31T10:35:29Z",
            "eligibleRegion": {
              "@type": "Country",
              "name": "US"
            }
          },
          {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-06-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
       ]
      },
      {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": "http://schema.googleapis.com/GoogleVideoCast",
        },
        "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-01-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      }
      ]
      ... Other properties ...
    }

Example 5 - Catalog has TV Show content

Feed should contain entries for all episodes, a TVSeries entry and TVSeason entry(ies)

    {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "DataFeed",
      "dateModified": "2015-07-20T00:44:51Z",
      "dataFeedElement": [
        {
          "@type": "TVEpisode",
          "@id": "http://www.example.com/showname/s1/e1",
          "url": "http://www.example.com/showname/s1/e1",
          ... Other properties ...
        },
        {
          "@type": "TVEpisode",
          "@id": "http://www.example.com/showname/s1/e2",
          "url": "http://www.example.com/showname/s1/e2",
          ... Other properties ...
        },
        ... Other episodes ...
        {
          "@type": "TVSeries",
          "@id": "http://www.example.com/showname",
          "url": "http://www.example.com/showname",
          ... Properties for TVSeries action ...
        },
        {
          "@type": "TVSeason",
          "@id": "http://www.example.com/showname/s1",
          "url": "http://www.example.com/showname/s1",
          ... Properties for TVSeason action ...
        }
      ]
    }

Example 6 - additionalProperty representation

Used to represent additional properties of the entry point such as contentLanguage and subtitleLanguage.

   {
      "@context": ["http://schema.org", {"@language": "en"}],
      "@type": "Movie",
      "@id": "http://www.example.com/forrest_gump",
      "url": "http://www.example.com/forrest_gump",
      "name": "Forrest Gump",
      "potentialAction": [
      {
        "@type": "WatchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "http://www.example.com/forrest_gump?autoplay=true",
          "inLanguage": "en",
          "actionPlatform": [
            "http://schema.org/DesktopWebPlatform",
            "http://schema.org/MobileWebPlatform",
            "http://schema.org/AndroidPlatform",
            "http://schema.org/IOSPlatform"
          ]
        },
        "actionAccessibilityRequirement": [
         {
            "@type": "ActionAccessSpecification",
            "category": "free",
            "availabilityStarts": "2018-01-01T10:35:29Z",
            "availabilityEnds": "2018-05-31T10:35:29Z",
            "eligibleRegion": {
              "@type": "Country",
              "name": "US"
            }
          },
          {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-06-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
       ]
      },
      {
        "@type": "WatchAction",
        "target": [
          {
            "@type":"EntryPoint",
            "urlTemplate":"http://foo.com/multipleViews",
            "actionPlatform": [
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.googleapis.com/GoogleVideoCast"
            ],
            "additionalProperty": [
              {
                "@type": "PropertyValue",
                "name": "contentLanguage",
                "value": [
                  "en"
                ]
              },
              {
                "@type": "PropertyValue",
                "name": "subtitleLanguage",
                "value": [
                  "en",
                  "es"
                ]
              },
              {
                "@type": "PropertyValue",
                "name": "videoFormat",
                "value": [
                  "HD",
                  “4K”
                ]
              },
              {
                "@type": "PropertyValue",
                "name": "cameraAngle",
                "value": [
                  "Eye-Level",
                  "High-Angle"
                ]
              },

          ...
           ],
         },
          ...
        ],
        "actionAccessibilityRequirement": {
           "@type": "ActionAccessSpecification",
           "category": "subscription",
           "availabilityStarts": "2018-01-01T10:35:29Z",
           "availabilityEnds": "2019-05-31T10:35:29Z",
           "requiresSubscription": {
             "@type": "MediaSubscription",
             "@id": "http://www.example.com/premium_subscription",
             "name": "Example Premium",
             "sameAs": "http://www.example.com/premium_subscription"
           },
           "eligibleRegion": [
             {
                "@type": "Country",
                "name": "US"
             },
             {
                "@type": "Country",
                "name": "CA"
             }
           ]
        }
      }
      ]
      ... Other properties ...
    }

Example 7 - Multiple Language Representation

Content is available in multiple languages / regions.

Note : The @language information denotes spelling variations and doesnt necessarily mean availability of the language in a specific country. For example, "pt-br" does not mean that the content is available in Portuguese to users in Brazil (BR) but simply identifies the Portuguese Brazilain spelling for the associated entity. (You should use the eligibleRegion to specify regional availability and use the contentLanguage to specify the languages users can consume the content in)

    {
      "@id": "http://www.example.com/episode/video/432432432",
      "@context": "http://schema.org",
      "@type": "TVEpisode",
      "description": [
        {
          "@language": "en-us",
          "@value": "Jenny meets Paul"
        },
        {
          "@language": "en-au",
          "@value": "Jenny meets Paul"
        },
        {
          "@language": "en-ca",
          "@value": "Jenny meets Paul"
        }
      ],
      "episodeNumber": "1",
      "image": "http://example.com/86/459/2018/09/02/1308431427947/IMAGE_NO_LOGO_thumb_Master.jpg",
      "name": [
        {
          "@language": "en-us",
          "@value": "The Pull-Over"
        },
        {
          "@language": "en-au",
          "@value": "The Pull-Over"
        },
        {
          "@language": "en-ca",
          "@value": "The Pull-Over"
        }
      ],
      "partOfSeason": {
        "@type": "TVSeason",
        "seasonNumber": "46"
      },
      "partOfSeries": {
        "@type": "TVSeries",
        "@id": "http://www.example.com/series/video/1546",
        "name": "The Young and the Restless",
        "sameAs": "http://www.imdb.com/title/tt0069658/"
      },
      "potentialAction": [
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "US"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/MobileWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.org/AndroidTVPlatform"
            ],
            "urlTemplate": "http://www.example.com/episode/video/432432432"
          }
        },
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "US"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.googleapis.com/GoogleVideoCast"
            ],
            "urlTemplate": "http://www.example.com/episode/video/432432432/cast"
          }
        },
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "CA"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/MobileWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.org/AndroidTVPlatform"
            ],
            "urlTemplate": "http://www.example.ca/shows/episode/video/432432432"
          }
        },
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "CA"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.googleapis.com/GoogleVideoCast"
            ],
            "urlTemplate": "http://www.example.ca/episode/video/432432432/cast"
          }
        },
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "AU"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.org/DesktopWebPlatform",
              "http://schema.org/MobileWebPlatform",
              "http://schema.org/IOSPlatform",
              "http://schema.org/AndroidPlatform",
              "http://schema.org/AndroidTVPlatform"
            ],
            "urlTemplate": "http://www.example.com.au/episode/video/432432432"
          }
        },
        {
          "@type": "WatchAction",
          "expectsAcceptanceOf": [
            {
              "@type": "Offer",
              "availabilityEnds": "2028-10-12T02:29:21-04:00",
              "availabilityStarts": "2018-09-03T17:00:00-04:00",
              "category": "subscription",
              "eligibleRegion": {
                "@type": "Country",
                "name": "AU"
              }
            }
          ],
          "target": {
            "@type": "EntryPoint",
            "actionPlatform": [
              "http://schema.googleapis.com/GoogleVideoCast"
            ],
            "urlTemplate": "http://www.example.com.au/episode/video/432432432/cast"
          }
        }
      ],
      "releasedEvent": {
        "@type": "PublicationEvent",
        "location": {
          "@type": "Country",
          "name": "US"
        },
        "startDate": "2018-09-03T17:00:00-04:00"
      },
      "url": "http://www.example.com/episode/video/432432432"
    }