Far from “new” within Google Search results / Google Voice Assistant – but still not perfectly understood by all SEOs – media actions are the OneBoxes (Rich Results) you see at the top of mobile results (or right hand side of desktop) when you type in your favorite show/movie.
The result takes up the complete ‘above the fold’ position on mobile, it includes buttons for where you can watch it, a checkmark for if you have watched it, and the ability to add it to your watch list. The result also frequently includes a trailer, images, and secondary navigation options for the overview, cast, episode guide and more.
On Google Assistant, Media Actions consist of being able to ask Google to play your favorite TV shows from your app (once verified).
As a seasoned SEO would expect, these results don’t appear by magic, but rather through structured data that a website feeds to Google.
But, is this the same thing as run-of-the-mill JSON structured data we’re used to seeing coded into stand alone pages, or is it something different? Are all companies eligible to compete for these type of OneBox (Rich Results) in search?

This post aims to cover some broad-level questions about what Media Actions are, and how they work. Google has actually covered the topic extensively in its Developer Hub. However, the the resources are hard to locate via Google Search – go figure. So I thought my article could be a helpful resource to curious (or frustrated 😉 ) SEOs.
Read on to learn more – or jump ahead to the part you care about:
- What Are Media Actions OneBoxes (Rich Results)
- How To Get ‘In On’ Media Actions
- How Can I Check If My Client / Company is Eligible For Media Actions
- Conclusion
So, What Are Media Actions OneBoxes (Rich Results)?
Media Actions are currently available for a select number of brands (to provide more hands on integration for each provider). The goal of Media Actions are to make it easier for people interact with media (watchable / listenable) content within traditional Google search as well as Google Voice Assistant – that can then initiate an immediate playback (within web or app).
The goal of Media Actions are to make it easier for people interact with media (watchable / listenable) content within traditional Google search as well as Google Voice Assistant.
For such a cool feature, it’s a bit surprising to me how few bloggers have written about it over the years (Google documentation was first published in 2018). But on the other hand, it could perhaps be the “exclusivity” of the websites eligible to participate in Media Actions right now that causes such little buzz.

At any rate, one of the best ways to illustrate what Media Actions are is to show examples. Let’s check that out next.
Watch Actions:


On Google Search
The trailer, images, Netflix button, etc are all generated thanks to a “Media Actions” feed. When a user clicks on the Netflix button, it opens the Netflix app on my phone and begins playing season 1 episode 1.
On Google Voice Assistant
Similarly, when using Google Assistant, voicing the query “play Bridgerton” prompts the assistant to open the Netflix app on my phone and begin playing season 1 episode 1.
A special note on Watch Actions for VOD vs. Live Events
For media content that is video on demand (VOD), Google will show all of the different platforms where you can watch a show. For example, when I click the down arrow on “available on”, Google shows me all of the other platforms (beyond the preferred platform) that a show is on. Because Bridgerton is only available on Netflix, it’s the only platform that appears.
When it comes to LIVE events on the other hand, Google can only feature ONE provider per event (example, a live sporting event). So, you will not see multiple streaming provider options even if there are multiple options available.
When it comes to LIVE events on the other hand, Google can only feature ONE provider per event (example, a live sporting event). So, you will not see multiple streaming provider options even if there are multiple options available. In the case that a live event is available on multiple platforms, Google will favor the brand it has partnered with the longest as the recommended provider within this section. Google has said that it is on their roadmap this year to allow for multiple stream options for live events. In the mean time, hang tight.
Listen Actions:


On Google Search:
When I type in the song name “Champaign Supernova” into Google, it shows me the various platforms where I am able to stream the song. When I click on the Spotify button, it begins to play the song for me in Spotify.
On Google Voice Assistant:
Similarly, when I ask Google Assistant to play the song, it also opens up my Spotify app for me and begins playing the song.
So How Do You Get In On Media Actions?
Like I mentioned earlier this article, Google is partnering with select brands one at a time to make sure things are properly integrated. But in a more general sense, Google has documented how Media Actions work and the process of getting featured for SEOs’ reading enjoyment. And in short, it all starts with the creation of a feed.
The Media Actions feed is a JSON object that contains a collection of entities – and ideally it will include your brand’s complete media catalog: TV episodes, series, movies, songs, albums, etc. It needs to be hosted in a location where Google can access it / regularly fetch it.
The Media Actions feed is a JSON object that contains a collection of entities – and ideally it will include your brand’s complete media catalog: TV episodes, series, movies, songs, albums, etc. It needs to be hosted in a location where Google can access it / regularly fetch it. Note: This is different than other applications of JSON where you’re just injecting a piece of code on the backend of a page.

What Information Needs To Be Included Within The Feed?
AN IMPORTANT CAVEAT: Before we get any farther, I strongly recommend that SEOs lean on their product teams for all of the “dirty work” coming in these next sections. The work of creating, hosting, submitting and monitoring a feed file is not a one-person job, and also requires multiple skill sets. That all said, a foundation in how this all works I think will really help SEOs be able to consult a bit through this. 🙂
OK, moving on…
So generally speaking, this is what Google recommends adding to your feed (they look like what’s recommended generally speaking for schema markup, but much more in-depth):
- Identify the content ID, URL, name of content
- Identify the relationship between entity types:
- Is it a TV show, radio, music, live TV?
- Collect the metadata:
- Highly recommended metadata includes: descriptions, releasedevent, sameas, cast, TMS ID, logo, inlanguage, category, and more.
- Identify the platform-specific deep links of your content
- For iOS this is Universal Links, and for Android this is Android App Links / custom scheme links
- Identify the content access requirements:
- Do users need to login, do they need a subscription, do access requirements depend on location, etc.
- Identify the price
Google uses the metadata properties to reconcile the content in your feed with the content in Google’s databases. A successful match means your title can appear in Google results. Google will not approve your feed if it has too many unsuccessful matches.
Google Developers
More specifically, this is the highly recommended metadata types for each entity type:

Other considerations:
Google actually has very detailed specifications about what type of images / sizes are acceptable for Media Actions images. For example, they prefer that you upload three different sizes of your logo for Broadcast Services. Here’s their cheat cheat:

Here’s an example of a feed with a single movie entity:
{
"@context": "http://schema.org",
"@type": "DataFeed",
"dateModified": "2018-07-20T00:44:51Z",
"dataFeedElement": [
{
"@context": ["http://schema.org", {"@language": "en"}],
"@type": "Movie",
"@id": "http://www.example.com/my_favorite_movie",
"url": "http://www.example.com/my_favorite_movie",
"name": "My Favorite Movie",
"potentialAction": {
"@type": "WatchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "http://www.example.com/my_favorite_movie?autoplay=true",
"inLanguage": "en",
"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/GoogleVideoCast"
]
},
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"requiresSubscription": {
"@type": "MediaSubscription",
"name": "Example Package",
"commonTier": true,
"@id": "[partner determined string]"
},
"availabilityStarts": "2018-07-21T10:35:29Z",
"availabilityEnds": "2019-10-21T10:35:29Z",
"eligibleRegion": [
{
"@type": "Country",
"name": "US"
},
{
"@type": "Country",
"name": "CA"
}
]
}
},
"sameAs": "https://en.wikipedia.org/wiki/my_favorite_movie",
"releasedEvent": {
"@type": "PublicationEvent",
"startDate": "2008-01-20",
"location": {
"@type": "Country",
"name": "US"
}
},
"description": "This is my favorite movie.",
"actor": [
{
"@type": "Person",
"name": "John Doe",
"sameAs": "https://en.wikipedia.org/wiki/John_Doe"
},
{
"@type": "Person",
"name": "Jane Doe",
"sameAs": "https://en.wikipedia.org/wiki/Jane_Doe"
}
],
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "IMDB_ID",
"value": "tt0123456"
}
]
}
]
}
But How Do I Actually Create a Complete Feed?
Google goes into this in great detail within its Developers Hub on how to do this (best suited to be shared with developers you’re partnering with), but the simplified explanation is that Google recommends first selecting 3-5 entities from your catalog, and create a sample feed –– by following these steps:
- Use the filename extension
.json
. - Don’t encrypt your feed file.
- Encode your feed file in UTF-8 (check your file editor setting).
- Split the file into multiple files if your feed file is larger than 1 GB (uncompressed).
- We recommend you create a file per entity type (for example,
tvseries.json
,tvseasons.json
,tvepisodes.json
,movies.json
, etc).- If any of these files exceeds 1GB, split its entities into multiple files (for example,
tvepisodes_01.json
,tvepisodes_02.json
, etc). - As long as the file size is less than 1 GB, there is no limitation on how many entities you can include in a single file.
- If any of these files exceeds 1GB, split its entities into multiple files (for example,
- Last, create a MediaService entity to mark up your Media Action integration configuration. This entity should be delivered in the media_config.json file. You can find more information in the MediaService Reference Documentation
Once your sample feed is create, you can validate the code your team created using the Data Feed Validation Tool. Be sure to choose what vertical you want to validate on from the drop down. Once your sample feed free of errors, you can create a feed for your full catalog.
How Do I Host The Feed?
Google allows for multiple hosting methods, including Google Cloud Storage, HTTPS, SFTP, and AWS S3. For more detailed instructions on how to host it on Google Cloud Storage, click here. (I could walk you through it step-by-step, but Google makes it very simple in its tutorial).

After uploading your feed file to a host system, you can contact the Media Actions team to review your feed file.
After uploading your feed file to a host system, it’s helpful to make sure that it meets Google’s Quality Checklist that it created special for Media Actions. If you think it looks good, contact the Media Actions team to review your feed file.
How Do I Submit The Feed?
When you’re ready to request a review of your feed, Google will require that you have the following items handy:
- Quality checklist: Include the quality checklist with all the items verified.
- Host location: The URL of your feed file.
- Host authentication: Include the authentication credentials to allow Google to retrieve the feed file from your host, if applicable.
- Top 200 entities (Listen Action only): A spreadsheet that contains the top 200 entities of your feed. As part of testing, we check the availability and correctness of the top 200 entities of your choice.
- Include the top 200 entities per entity type you provide.
- For instance, 200 entities for
MusicGroup
, 200 entities forMusicAlbum
, etc.
- For instance, 200 entities for
- The list needs to contain the following properties:
@id
,url
, andname
.
- Include the top 200 entities per entity type you provide.
- Test account: A test account that allows the Media Actions team to access the deep links on your app or platform for testing. If your feed has entities in multiple platforms, provide a test account per platform.
- Icon image (required for all integrations): Image files that contain your brand icon. Google associates your content deep links to your brand icon.
- Provide five icons, one in each of the following sizes: 16×16, 20×20, 40×40, 44×44, and 112×112 px.
- Your brand icon must meet the following requirements:
- Filesize for all icons, except the 112×112 px, cannot be greater than 1 KB.
- Filesize for the 112×112 px icon cannot be greater than 3 KB.
- A PNG file format.
- A transparent background.
- A round shape.
- Make sure the images are anti-aliased and not distorted/pixelated.
- Icon image (additional requirement for Google TV integrations): Image files that contain your brand icon. This icon will be displayed at the top of the Programming Guide, on Watch Action buttons and in Google TV settings.
- Provide three icons meeting the following requirements:
- One square icon. (with a resolution of 512×512 px, 1:1 aspect ratio)
- One white wordmark icon. (highest resolution available, no preference for aspect ratio)
- One colored wordmark icon. (highest resolution available, no preference for aspect ratio)
- All brand icons must be in a PNG file format.
- Make sure the images are anti-aliased and not distorted/pixelated.


How Do I Monitor My Feed?
The Actions Console provides a dashboard where you can monitor the ingestion status of your feed. If a member of your team has already created an Actions Project for your feed, you can simply request to be added as a new member.


If nobody from your team has set this up yet, you can create an Actions Project by following these simple steps from Google. Another special note here – I’ve found in my (limited experience) working with the Google Actions team that they are VERY helpful with the Media Actions Feeds / monitoring process along the way… I hit the scene at FOX way after this was all set up – but am still looped into emails on occasion and have seen first-hand how great they are at helping us when something isn’t behaving as expected. Also, explaining to us the way things work between VOD / live event OneBoxes, etc.
As it relates to updating your feed, it is recommended to always validate your JSON Schema to detect issues that would impact the feed quality. Google highlights some excellent validator options as well as an example of validating schema here.
How Can I Check If My Client / Company Is Eligible for Media Actions?
If you aren’t sure if your client / company already uses Media Actions, the quickest way to check is A) performing a Google Search, and/or B) checking Google Search Console for SEO clicks to “Media Actions”. If neither option yields results, your team likely doesn’t have a feed set up yet.

Alternative ways to check is to simply reach out to members of your product/marketing teams to see if they have a login for the feed / Google Actions Console, or know of a rep at Google / their Media Actions team.
Conclusion
This post was aimed at introducing SEOs to some basic ideas surrounding what Media Actions are, and how they work behind the scenes. The last thing I would like to highlight that I think SEOs might find helpful are examples of Watch Actions and Listen Actions code:
- Watch Action Examples: https://developers.google.com/actions/media/reference/feed-examples/watch-actions-examples
- Listen Action Examples: https://developers.google.com/actions/media/reference/feed-examples/listen-actions-examples
Let me know if you have any questions about this article or would like me to go more in depth in any areas.