Play Game Actions

Overview

This document introduces Play Game Actions for Video Games, lists the schema requirements, and details out the onboarding process to launch on the feature.

Introduction to Play Game Actions

Mobile version of Play Game Actions
Image of Play Game Actions on a mobile device
Desktop version of Play Game Actions
Image of Play Game Actions on a desktop

Play Game Actions for Video Games lets users play a game directly from the Search Results Page (SRP) on desktop or mobile. Users are presented with a Play Game Action within the Overview tab of the Organized Search Result Page (OSRP) or in the Knowledge Panel when they search for a game that has at least one Play Game Action associated with it. This works for demo or full versions of the games that are available for free, through a subscription, or a la carte purchase and are streamable from the cloud on desktop or mobile, or downloadable via local client apps on desktop or console.

Play Game Actions are powered by a feed, which contains the details of your game catalog. The feed is a JSON object that contains a collection of entities. An entity is a schema.org object that represents the game in your catalog and its associated deep link to stream the game (demo, instant trial, or full version).

For Google to obtain your feed, you need to store the feed in a file and host the file in a location where Google can access it. To ensure your content is up to date, Google regularly fetches the feed file from your host.

We go into the details for each of these requirements in the following sections.

Get started

As the previous section states, your responsibilities as a provider include the following:

  • Understand the information that you need to create the feed; its sources and availability, as well as how it ends up in the feed.
  • Create a feed that contains the required details of each game entity in your catalog.
  • Host the feed on a server or a cloud storage service and allow Google to fetch the feed regularly.
  • Respond to and fix the issues raised by Google. These could be quality related or issues related to the structure of the JSON files themselves.
  • Keep the feed up to date as your catalog evolves.
  • Ensure that the feed quality is maintained post-launch.

Let’s understand these in detail.

Before you begin

Before you begin to create the feed, we suggest you spend time to understand the Play Game Actions metadata requirements and gather all of the necessary information in one place. We recommend the following for you before you begin to create a feed:

  • Review the metadata requirements for the VideoGame entity.
  • Collect the metadata.
    • Take a close look at the required and highly recommended properties. Google uses these properties to reconcile your content in the feed with the content in Google’s databases; the more metadata you provide for your content, the better Google can match the content.

Understand the use of Works and Editions in this documentation

  • Work: The abstract concept of a video game. Specifically, metadata such as the title, developer, game description, and publisher are attributes for a work.
  • Edition: A concrete version of the video game. Specifically, metadata such as the year of publication, name of the platform, and deep links are attributes for the edition.

For example, “Shadow of the Tomb Raider” is a work, but every single version it comes in is an edition. In this case, the work “Shadow of the Tomb Raider” might have an edition for Stadia, one edition for PlayStation, one edition for Early Access on Stadia, and so on.

This distinction is especially important in the feed where it might not be immediately obvious. There are two VideoGame entities:

  • VideoGame (Work) is the "top level" VideoGame entity:
    • exampleOfWork is a property of VideoGame (Work) and specifies one or more instances of VideoGame (Edition).
    • There must be at least one exampleOfWork VideoGame (Edition) for each VideoGame (Work).
  • VideoGame (Edition) is the "lower level" VideoGame entity.

It helps to remember that there can be multiple editions of a work. We recommend that you group these editions together as much as possible. This helps Google systems leverage all of the relevant information about a VideoGame and surface it in Search.

Understand two key properties and their requirements. It's crucial to get these right as we move towards feed creation, which is the next step.

Canonical URL (url)

A canonical URL (url) helps Google accurately reconcile the content in your catalog with the content in Google's databases.

"A canonical URL is the URL of the page that Google thinks is most representative from a set of duplicate pages on your site. For example, if you have URLs for the same page (for example: example.com?dress=1234 and example.com/dresses/1234), Google chooses one as canonical." (Source: Consolidate duplicate URLs)

The following are the requirements for the canonical URL:

  • url must be globally unique.
  • url must contain a working canonical URL that Google can crawl.

Identifier (@id)

An identifier (@id) must meet the following requirements:

  • Globally unique across your catalog:
    • For instance, don't use the same @id for two different video games.
  • Static:
    • You cannot change @id later.
  • In the form of a Unified Resource Identifier (URI):
    • If your content's local identifier (ID) is not in a URI format, prepend your domain to the ID to satisfy this requirement; for example, if your content's ID is 1234abc and your domain is https://example.com, @id can be https://example.com/1234abc.
    • @id doesn't have to be a working URL; it only needs to be in a URI format.
    • The domain used in @id (for example, https://example.com) must be owned by your organization.

Since an entity's url meets all the requirements as an identifier (that is, globally unique, static, and in the form of a URI), we recommend you use an entity's url as @id in cases where it makes sense.

Understand and identify the deep link requirements

When a user initiates Play Game Actions on content, Google uses the content's deep link to take the user directly to the content in your app or platform. Keep the following in mind:

  • Deep links need to open the content they target on all platforms specified. Different platforms can have different deep links. For example, the deep link that works on desktop web could be different from the deep link that works on mobile web. For each game, check whether it has different deep links based on the platform.
  • Deep links can include parameters (&) or anchor tags (#).
  • To ensure that your content is available on Google's multiple platforms (Search, Assistant, and Android TV), a deep link is a requirement.

Since an entity's url meets all the requirements as an identifier (that is, globally unique, static, and in the form of a URI), we recommend you use an entity's url as @id in cases where it makes sense.

Platform Description
http://schema.org/DesktopWebPlatform Search platform on desktop web browser.
http://schema.org/MobileWebPlatform Search platform on mobile web browser.
http://schema.org/AndroidPlatform Search platform on Android app.
http://schema.org/AndroidTVPlatform Android TV platform on Android TV app.
http://schema.org/IOSPlatform Search platform on iOS app.

Identify the access requirements for the games in your catalog: Ask yourself the following questions and make sure there's a way to identify their answers through metadata in the feed.

  • Do users need to log in to your app or platform to access the content?
  • Do users need a subscription?
  • Do users need to make a purchase to play the game?
  • Does the access requirement change over time?
  • Does the access requirement depend on the device location?

If you offer more than one subscription package that your users can purchase, understand what a commonTier is and how it applies to your integration with Google.

Paywall types

Play Game Actions only support the following paywall types today:

Category value Paywall type
nologinrequired No purchase or login is required.
free The user must be logged in, but doesn't need a paid subscription.
subscription The user must have an active subscription. Access is independent of the subscription tier.
subscription The user must have an active subscription. Access is independent of the subscription tier.
purchase The content is available for an indefinite amount of time after the purchase.
rental The content is available for a finite amount of time after the purchase.

These category values are utilized later when creating the feed. Also, consider that the rental category in the preceding table is totally optional today and might be supported in a future product enhancement. Right now, only the free, nologinrequired, subscription, and purchase category values are leveraged by the product from the feed.

Finally, quickly glance through the sample feed to get an idea of what we want to end up with.

Understanding the above and ensuring there's metadata to represent answers (to these questions), which is sufficient to move forward to the feed creation stage.

Create your feed

The Play Game Actions feed is a JSON object that contains a collection of entities that represent the video games in your catalog. You need to provide a feed as a file or as multiple files, and host it on a server or a cloud storage service for Google to fetch regularly.

Adhere to feed file size, quantity, and format requirements

You need to adhere to the following requirements:

  • All feed files need to use the filename extension .json.
  • Ensure that the file names don't contain a space.
  • Don't encrypt your feed file.
  • Encode your feed file in UTF-8 (check your file editor setting). encoding image
  • If your feed file is larger than 1 GB uncompressed, split the file into multiple files.
    • As long as the file size is less than 1 GB, there's no limitation on how many entities you can include in a single file or how many files you end up submitting to Google as part of your feed submission.
  • Ensure that the file is encoded without BOM, as per the JSON specification. To verify this on Linux OS, hexdump file.json | head -n 1 must not start with BBEF at address 0x00.

Adhere to the feed content requirements

You must adhere to the following content requirements:

  • The feed must not contain stale entities. Stale entities are entities where the deep link's availabilityEnds is set to a date that has passed or entities that are no longer available on your site.
  • All deep links, such as urlTemplate, and all URLs, such as url, that you include in your feed must be production URLs. Don't use QA, development, or any other type of non-production URL.
  • All URLs, such as url, must be canonical, as the previous section mentions.
  • Each entity in your feed must specify the following properties:
    • A unique ID: @id
    • A unique URL: url
    • A unique deep link: urlTemplate

We have the following recommendations for you when you create the feed:

  • Understand how the feed is structured in detail.
  • Start with a sample feed.
    • Select up to five representative entities from your catalog. Choose entities with a reasonably complex structure, but still typical for an entity in the catalog, and create the feed for the same.
  • Send it to your assigned Google representative for a quick validation.
  • After you resolve all of the errors in your sample feed, expand the feed to include all of the entities in your catalog.
    • To confirm that your feed includes all the entities in your catalog, compare the number of entities in your feed with the number of items in your catalog.

Host your feed

After your feed file is ready, host it at a secure location. Google then fetches the feed regularly to ensure that your content is up to date. We support the following hosting methods:

Hosting method Authentication support
Google Cloud Storage Grant Storage Object Viewer permission to 088794101-100000002-account@partnercontent.gserviceaccount.com
HTTPS Requires you to share Username+Password or HTTP client certificates.
SFTP Requires you to share Password, Key+Phrase, or both.
AWS S3 Requires you to share Key ID+Access Key for the AWS S3 bucket.

After you upload your feed file to a host system, contact the Play Game Actions team to review your feed file.

Submit your feed for review

After your feed file is hosted, reach out to your assigned Play Game Actions contact to begin the feed review process. Make sure to share the following information in this communication:

  • Overview/Description: Let us know if you’re sharing a sample feed or a full production feed. If sharing a sample feed, let us know the ETA for the production feed, if possible.
  • Host location: The URL of your feed file.
  • Host authentication: Include the authentication credentials to let Google retrieve the feed file from your host, if applicable. For more information, see Host your feed.
  • Test account: A test account that lets the Play Game Actions team access the deep links on your app or platform for testing. If your feed has entities in multiple platforms, provide a test account for each platform.
  • Icons: Submit the following five icons. These icons are used next to the Play Game Actions on Search.
Category Dimensions (px) File size Guidelines
Play Game Actions on Search/Cast/Others
16x16 File size for all icons, except the 112x112 px, cannot be greater than 1 KB.

File size for the 112x112 px icon cannot be greater than 3 KB.

All five icon dimensions are required.

Images must adhere to the following:

  • A PNG file format.
  • A round shape.
  • A transparent background.
  • Make sure the images are anti-aliased and not distorted or pixelated.
20x20
40x40
44x44
112x112

Sample

sample icons

How feed validation works

There are two stages of feed validation:

  • Structure validation:
    • This is the first phase of the validation checks.
    • Google provides feedback related to the structure of the JSON files. Is the JSON well formed? Do we have all of the required properties and highly recommended properties in the feed? Are the deep links provided and annotated as per our feed requirements?
    • This phase requires several back and forth discussions with Google and continues until all feedback is addressed.
  • Metadata Reconciliation:
    • This begins only after the feed passes the structure validation phase and this is when Google starts the reconciliation process with Google’s Knowledge Graph.
    • In this phase, we provide feedback on the metadata contained in the feed. All issues need to be addressed for a successful launch. For example, feedback in this phase could ask you to fix the title of a game or its release date.
    • This phase also requires several back and forth discussions with Google and continues until all feedback is addressed.

Feed acceptance criteria

A feed is considered acceptable for launch when all blocking issues are addressed and Google has certified the metadata quality to be at the launch bar.

Update your feed as needed

We recommend that you update your feed daily, but this ultimately depends on how often your catalog changes. Be aware of the following conditions and tips:

  • Google Search doesn't support real-time updates.
  • Google Search fetches your feed once a day and typically indexes the content within two days (when launched).
  • If there's a foreseeable change in a deep links availability, use availabilityStarts and availabilityEnds to set the exact dates.
  • If the entity is no longer available in your catalog, remove the entity completely from the feed.

Reference

Feed structure overview

The Play Game Actions feed has the following structure:

playgame feed diagram

Data feed envelope

A data feed envelope is the top level object in the Play Game Actions feed. The object contains an array of content markup objects (VideoGame (Work) entities) that represent all the video games in your catalog.

Property Expected type Description
@context URL Required. Set to http://schema.org
@type Text Required. Set to DataFeed.
dateModified DateTime Required. The last modified date and time of the feed, in ISO 8601 format (including timezone).
dataFeedElement Thing Required. The entities of your game catalog.

Template

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {  },
    {  },
    {  },
    ...
  ]
}
    

Content markup objects

A content markup object represents a single entity in your catalog: VideoGame (Work). The object contains the content's identifier and canonical URL and helps describe the content via metadata. The content markup object for VideoGame (Work) has a property called exampleOfWork to link it to the VideoGame(Edition) object. This VideoGame(Edition) can have an array of Action markup objects, which allow the content to be associated with multiple Action markup objects. For instance, the content can have a different Action markup object for each region.

Action markup objects

An Action markup object describes the deep link that takes users to the game and the access level required for the game. The object is a property (potentialAction) of a content markup object. For Play Game Actions, use an Action access specification object to specify the access restrictions.

Property Expected type Description
@type Text Required. Always set to PlayGameAction.
gameAvailabilityType GameAvailabilityEnumeration or Text Required. Indicates the availability type of the game content associated with this action, such as whether it's a full version or a demo. Accepted values include DEMO and FULL.
additionalType Text Required. Indicates the type of the play action associated with this game. Accepted values include:
  • StreamingPlayAction - Indicates that a game is available to stream online
  • DownloadPlayAction - Indicates that a game is available for download
target EntryPoint Required. A target object that provides the mapping of deep links to various Google platforms.
target.@type Text Required. Always set to EntryPoint.
target.urlTemplate URL Required. A deep link that takes users to your app or platform and initiates playback of the game.
target.inLanguage Text Optional. Original language of the series in BCP 47 format.
target.actionPlatform Text Required. The platforms that are mapped to urlTemplate. Play Game Actions support the following values:
  • http://schema.org/DesktopWebPlatform
  • http://schema.org/MobileWebPlatform
  • http://schema.org/AndroidPlatform
  • http://schema.org/AndroidTVPlatform
  • http://schema.org/IOSPlatform

For requirements, see Platform types.

actionAccessibilityRequirement ActionAccessSpecification Required. An Action access specification object that describes the access requirement of the content. For details, see Action Access Specification Properties.

Template

"potentialAction": {
  "@type": "PlayGameAction",
  "target": [
    {  },
    {  }
  ],
  "actionAccessibilityRequirement": [
    {  },
    {  }
  ]
}
    

Target

A target object provides the mapping of a deep link to various Google platforms. The object is a property (target) of an Action markup object. The urlTemplate property captures the deep link and the actionPlatform captures the platforms that support the deep link.

Example

"target": [
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/game007?autoplay=true",
    "actionPlatform": [
      "http://schema.org/DesktopWebPlatform",
      "http://schema.org/AndroidPlatform",
      "http://schema.org/AndroidTVPlatform",
      "http://schema.org/IOSPlatform"
    ]
  },
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/mobile/game007?autoplay=true",
    "actionPlatform": [
      "http://schema.org/MobileWebPlatform"
    ]
  }
]
    

Action access specification

An Action access specification object describes the access requirement for the content based on the region and period of time. The object is a property, actionAccessibilityRequirement, of an Action markup object.

Example Target with two deep links

"target": [
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/game007?autoplay=true",
    "actionPlatform": [
      "http://schema.org/DesktopWebPlatform",
      "http://schema.org/AndroidPlatform",
      "http://schema.org/AndroidTVPlatform",
      "http://schema.org/IOSPlatform"
    ]
  },
  {
    "@type": "EntryPoint",
    "urlTemplate": "http://www.example.com/mobile/game007?autoplay=true",
    "actionPlatform": [
      "http://schema.org/MobileWebPlatform"
    ]
  }
]
    

Action access specification

An Action access specification object describes the access requirement for the content based on the region and period of time. The object is a property, actionAccessibilityRequirement, of an Action markup object.

Property Expected type Description
actionAccessibilityRequirement.@type Text Required. Always set to ActionAccessSpecification.
actionAccessibilityRequirement.category Text Required. An access requirement for the content. For accepted values and more information, see Paywall type.

If an entity represents a group of content, you need to set the category to the least restrictive access requirement of its content. For instance, if a game has access available at no charge using nologinrequired and through a subscription, set the category to nologinrequired.

actionAccessibilityRequirement.availabilityStarts Date Required. Date after which the action is available, in ISO 8601 format (including timezone). The date can be set in the future.
  • Must be equal or greater than 72 hours after availabilityStarts.
  • If the content is always available after it's published, set this date to be 20 years from the current date.

We require the corresponding entity to be provided in the feed at least seven days ahead of its availabilityStarts date. This enhances the chances that the game shows up on Google surfaces on time.

actionAccessibilityRequirement.availabilityEnds Date Required. Date after which the action is no longer available, in ISO 8601 format (including timezone). The date can be set in the future.
  • Must be equal or greater than 72 hours after availabilityStarts.
  • If the content is always available after it's published, set this date to be 20 years from the current date.

We require that any updates to the availabilityEnds date be made in the feed at least seven days before the availabilityEnds date. This enhances the chances that the game ceases to appear on Google surfaces on the availabilityEnds date.

actionAccessibilityRequirement.eligibleRegion Country, City, State, GeoShape, or Text Required. Regions where the content is available. If the content is available globally, use the special string EARTH. To understand what's required, see GeoShape properties.
actionAccessibilityRequirement.ineligibleRegion Country, City, State, GeoShape, or Text Required if applicable. Regions where the content is restricted. You don't need to provide this property if the content is available everywhere within eligibleRegion.

To understand what's required, see GeoShape properties.

actionAccessibilityRequirement.requiresSubscription MediaSubscription Required if applicable. The details of the subscription that users need to access the content. For details, see Media subscription properties.
  • Provide this property if category is subscription.
actionAccessibilityRequirement.expectsAcceptanceOf Offer Required if the content requires a purchase. The details of the offer associated with the content. Provide the price information for the following cases:
  • One-time purchase content (rental or purchase)
  • Subscription-based content that requires an additional purchase from subscribers (subscription)

If the price is 0.00, then remove the Offer object entirely and set the actionAccessibilityRequirement.category to free. For more details, see Offer properties.

The Media Subscription specification

A media subscription object describes the details of the subscription required for content. The object is a property, requiresSubscription, of an Action access specification object.

Important: This is required if actionAccessibilityRequirement.category is subscription and your subscription offering includes multiple packages or tiers, or has add-on support. Omit this if your subscription is one-tiered and gives access to all content in your catalog.
Property Expected type Description
requiresSubscription.@type Text Required. Always set to MediaSubscription.
requiresSubscription.@id URL Required. The unique ID for the subscription. If the content is accessible with different subscriptions, each subscription must have a unique ID.
requiresSubscription.name Text Required. The name of the subscription. Notice the following:
  • If the content is accessible with different subscriptions, this name needs to match the name in your user authentication system. For example, if a user can access the content based on the subscription called Package 1, but the authentication system uses the name PKG1, use PKG1.
requiresSubscription.sameAs URL Optional. The page that describes the subscription.
requiresSubscription.identifier Text Required if category is subscription and commonTier is false. A unique string for this subscription that represents access to a group of content in your media catalog.
  • Google recommends that you use the following syntax for identifier:domain name + colon (:) + access level to content, Examples : example.com:basic, example.com:premium, example.com:sports
requiresSubscription.commonTier Boolean Required if category is set to subscription. Read more about commonTier in the common tier requirements documentation.

Offer properties

An offer object describes the price associated with content. The object is a property (expectsAcceptanceOf) of the Action access specification object. It can be used for two purposes:

  • To provide the purchase details of the game. actionAccessibilityRequirement.category should be set to purchase for this use case.
  • To provide the purchase details of the game when it's on sale. actionAccessibilityRequirement.category should be set to purchase for this use case and two offers per action should be provided - one for providing the list price details and another for the sale price details.

Property Expected type Description
expectsAcceptanceOf.@type Text Required - Always set to Offer.
expectsAcceptanceOf.name Text Optional - The name of the offer.
expectsAcceptanceOf.priceSpecification PriceSpecification Required - The pricing details associated with the game.
expectsAcceptanceOf.priceSpecification.@type Text Required - Always set to UnitPriceSpecification.
expectsAcceptanceOf.priceSpecification.price Number Required - The purchase price of content. Price must be a non-zero positive value. For games with 0.00 price, please set the actionAccessibilityRequirement.category to `free`.
expectsAcceptanceOf.priceSpecification.priceCurrency Text Required - The currency of the price in 3-letter ISO 4217 format.
expectsAcceptanceOf.priceSpecification.priceType PriceTypeEnumeration or Text Required if applicable - The type of price provided in the offer.
When actionAccessibilityRequirement.category is set to purchase, this is a required property and can accept only 2 values:
  • https://schema.org/ListPrice - Represents the list price of a game.
  • https://schema.org/SalePrice - Represents a sale price (usually active for a limited period) of a game.

Both https://schema.org/ListPrice and https://schema.org/SalePrice are required when providing sale pricing details.
expectsAcceptanceOf.seller Organization The organization that offers the purchase of content.
expectsAcceptanceOf.seller.@type Text Always set to Organization.
expectsAcceptanceOf.seller.name Text The name of the seller.
expectsAcceptanceOf.seller.sameAs URL The URL of a web page that identifies the seller; for example, the seller's homepage.

For each of the supported Paywall types, an example below provides an insight into how the actionAccessibilityObject needs to be created:

Free (no login required)

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

Free (no login required) with one hour trial only

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "nologinrequired",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "eligibleDuration": 60
    }
  }
}

Free (login required)

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "free",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

One-time purchase with sale

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "purchase",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": [
      {
        "@type": "Offer",
        "name": "Original Price",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": 7.99
          "priceCurrency": "USD"
          "priceType": "https://schema.org/ListPrice"
        },
        "seller": {
          "@type": "Organization",
          "name": "Example",
          "sameAs": "http://www.example.com/"
          }
        },
        {
          "@type": "Offer",
          "name": "Sale Price",
          "priceSpecification": {
            "@type": "UnitPriceSpecification",
            "price": 4.99
            "priceCurrency": "USD"
            "priceType": "https://schema.org/SalePrice"
          },
          "seller": {
          "@type": "Organization",
          "name": "Example",
          "sameAs": "http://www.example.com/"
        }
      }
    ]
  }
}

One-time purchase

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "purchase",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    },
    "expectsAcceptanceOf": {
      "@type": "Offer",
      "price": 7.99,
      "priceCurrency": "USD",
      "seller": {
        "@type": "Organization",
        "name": "Example",
        "sameAs": "http://www.example.com/"
      }
    }
  }
}

Single-tier/Multi-tier/Add-on subscriptions

{
  "actionAccessibilityRequirement": {
    "@type": "ActionAccessSpecification",
    "category": "subscription",
    "availabilityStarts": "2015-01-01T00:00Z",
    "availabilityEnds": "2015-12-31T00:00Z",
    "requiresSubscription": {
        "@type": "MediaSubscription",
        "name": "Example Package",
        "commonTier": true,
        "@id": "http://www.example.com/example_package"
    },
    "eligibleRegion": {
      "@type": "Country",
      "name": "US"
    }
  }
}

Tiered subscriptions and add-ons

The following describes how tiered subscriptions and add-ons are applied:

  • In a single-tiered subscription model, a service provider has one subscription tier. All subscribers can access the same content, regardless of their subscription package.
  • In a tiered subscription model, a service provider has multiple subscription tiers, such as Gold, Silver, and Bronze. Users who have the upper tier subscription can access all the lower tier content. However, users who have the lower tier subscription can't access the upper tier content. content example 1
  • In an add-ons subscription model, a service provider allows users to expand their entitlements and add content to a base subscription. Users can add as many pieces of content as they want to. content example 2

Overall template of an entity

This is an example of the overall template of an entity:

Template

{
  "@context": "http://schema.org",
  "@type": "DataFeed",
  "dateModified": "2018-07-20T00:44:51Z",
  "dataFeedElement": [
    {  },
    {
       "@context": ["http://schema.org", {"@language": "en"}],
       "@type": "VideoGame",
       "@id": "http://www.example.com/game007",
       "url": "http://www.example.com/game007",
       "name": "Games Bond 007",
       "exampleOfWork": [
        {  },
        {
           "@type": "VideoGame",
            "@id": "http://www.example.com/game007Stadia",
            "url": "http://www.example.com/game007Stadia",
            "name": "Games Bond 007",
            // Other properties
           "potentialAction": [
              {  },
              {
                  "@type": "PlayGameAction",
                  "target": [
                  {  },
                  {  }
                  ],
                 "actionAccessibilityRequirement": [
                 {  },
                 {  }
                 ]
              }
          ],
    ...
    }
  ]
}

Structured data type definitions

This section provides details for the content markup properties for the VideoGame entity type. You must include the required properties listed here for your content to be eligible for display in the search results. We encourage you to also include highly recommended properties to add more information about your content, which can provide a better user experience and help us with entity reconciliation with Google's Knowledge Graph.

VideoGame (Work) specification table

Property Expected type Description
@context Text Required. Always set to ["http://schema.org", {"@language": "xx"}].
  • The Where xx value represents the language of the strings in the feed. Each root entity context needs to have its @language set to the appropriate language code in BCP 47 format. For example, if the language is set to Spanish, the names are assumed to be in Spanish, even if the subtitle/dub language is in English.
@type Text Required. Always set to VideoGame.
@id URL Required. The content's identifier in URI format; for example, https://example.com/1234abc. @id must meet the following requirements:
  • Globally unique across your catalog.
  • Static. The ID must be stable and not change over time, even if the url property of the game changes. It's treated as an opaque string and doesn't need to be a working link.
  • In the form of a Unified Resource Identifier (URI).
  • The domain used for the @id value must be owned by your organization.

Since an entity's url meets all the requirements of an identifier, we recommend that you use an entity's url as its @id. For more details, see the Identifier section.

url URL Required. The content's canonical URL, which Google uses to match the content in your feed to the content in Google's databases. url must meet the following requirements:
  • url must be globally unique.
  • url must contain a working canonical URL that Google can crawl.

For a playback's deep link, see the target object's urlTemplate property instead.

name Text The name of the game.
  • Use an array to list the names in different languages. For more details, see the Multiple regions and languages example.
  • Note that only one name is supported per locale (language-country pair).
description Text Highly recommended. A synopsis of the game. 300-character limit.
genre Text An ordered list of all relevant genres. For example: ["Action", "Role playing"]
image ImageObject Highly recommended. The images related to the game. For more details on the required and optional properties to include with image, see Image properties.
applicationCategory Text Optional. Type of software application. Set value to Game.
exampleOfWork VideoGame Required The edition of the VideoGame. This VideoGame (Edition) entity carries the deep link details as well. For more details, see VideoGame (Edition) specification table.
playMode Text or GamePlayMode Optional. Indicates whether this game is multiplayer, co-op, or single-player. The game can be marked as multi-player, co-op, and single-player at the same time. Accepts the following values:
  • SINGLE_PLAYER
  • LOCAL_MULTI_PLAYER
  • ONLINE_MULTI_PLAYER
  • LOCAL_COOP
  • ONLINE_COOP

VideoGame (Edition) specification table

Property Expected type Description
@type Text Required. Always set to VideoGame.
@id URL Required. The content's identifier in URI format; for example, https://example.com/1234abc.@id must meet the following requirements:
  • Globally unique across your catalog.
  • Static. The ID must be stable and not change over time, even if the url property of the game changes. It's treated as an opaque string and doesn't need to be a working link.
  • In the form of a Unified Resource Identifier (URI).
  • The domain used for the @id value must be owned by your organization.

Since an entity's url meets all the requirements of an identifier, we recommend that you use an entity's url as its @id. For more details, see the Identifier section.

url URL Required. The content's canonical URL, which Google uses to match the content in your feed to the content in Google's databases. url must meet the following requirements:
  • url must be globally unique.
  • url must contain a working canonical URL that Google can crawl.

For a playback's deep link, see the target object's urlTemplate property instead.

name Text The name of the game.
  • Use an array to list the names in different languages. For more details, see the Multiple regions and languages example.
  • Note that only one name is supported per locale (language-country pair).
description Text Highly recommended. A synopsis of the game. 300-character limit.
genre Text An ordered list of all relevant genres. For example: ["Action", "Role playing"]
image ImageObject Highly recommended. The images related to the game. For more details on the required and optional properties to include with image, see Image properties.
applicationCategory Text Optional. Type of software application. Set value to Game.
playMode Text or GamePlayMode Optional. Indicates whether this game is multiplayer, co-op, or single-player. The game can be marked as multi-player, co-op, and single-player at the same time. Accepts the following values:
  • SINGLE_PLAYER
  • LOCAL_MULTI_PLAYER
  • ONLINE_MULTI_PLAYER
  • LOCAL_COOP
  • ONLINE_COOP
potentialAction PlayGameAction

Required if applicable. An Action markup object that provides the details of the action.

Use an array to specify different deep links in multiple regions. For more information, see the Multiple regions and languages example.

gameEdition Text

Required. The edition of this game.

As an example, the popular game "Shadow of the Tomb Raider" is offered in four editions: The "Croft Edition," "Standard Edition," "Digital Deluxe Edition," and "Ultimate Edition."

gamePlatform Text Required. Platform or electronic system used to play the video game.
releasedEvent PublicationEvent Highly recommended. A PublicationEvent is used to specify the original (global or local) release of content by a publisher.
releasedEvent.@type Text Required. Be sure to always set this property to PublicationEvent.
releasedEvent.Location Country Required. The regions that are associated with this launch event.

Use ISO 3166 codes for countries. To indicate everywhere in the world, set to EARTH.

releasedEvent.startDate Date or Time Recommended. Required for ExclusiveEvent. The start date of the entity's publication.
releasedEvent.endDate Date or Time Optional. This represents the date when the rights to the content expire.
releasedEvent.publishedBy Organization or Person Optional. The organization or person that published this entity.
contentRating Text Required for adult games, highly recommended otherwise. Overall content rating. If the content rating is given in the form of a text string, two variations are accepted:
  • The rating agency prepended to the rating with a whitespace in between. For example, a "Mature" rating from the agency "Entertainment Software Rating Board" in the US needs to be described as Entertainment Software Rating Board Mature.
  • A value of RATING NOT KNOWN (case insensitive) to indicate that you don't know the rating for the game.
publisher Organization or Person Optional. The organization or person that published this entity.
contributor Organization or Person Optional. A secondary contributor to this entity.

Image specification table

The Play Game Actions reuse use the Media Actions schema to capture the image requirements. For more information, see image schema specifications.

Here are some other requirements to keep in mind.

Aspect ratio and contentAttributes Minimum resolution (in pixels)
16:9, iconic poster 3840x2160
2:3, iconic poster 1000x1500
4:3, iconic poster 800x600
1:1, iconic poster 600x600
3:4, iconic poster 600x800
16:9, iconic background [preferred] or sceneStill 3840x2160
2:3, iconic background [preferred] or sceneStill 1000x1500
3:4, iconic background [preferred] or sceneStill 600x800

Format requirements

These are the format requirements you must adhere to for image size, quality, and so forth:

  • Include the highest-resolution posters and sceneStills you have for the game.
  • The image must be in JPG, PNG, or WebP format.
  • The image's URL must be crawlable and indexable.
  • File sizes must not exceed 20 MB.
  • We prefer images that work for both smallFormat and largeFormat.
  • The image must not contain the following:

    • Blurry, pixelated, rotated, or poor quality image.
    • Unlicensed or stock photography.
    • Nudity.
    • Illegal content.
  • You can include image sizes in addition to the ones listed in the preceding table.

Examples

The following sections contain examples of sample feeds for different scenarios.

Sample feed with one VideoGame entity

Here’s an example of a VideoGame entity that represents the “Space Wars Made Up Game” game. Keep in mind that this entity needs to be enclosed in the Data feed envelope in the JSON file to be visible to Google.

{
   "@context": ["http://schema.org", {"@language": "en"}],
   "@type":"DataFeed",
   "dateModified":"2021-07-20T00:44:51Z",
   "dataFeedElement":[
      {
         "@context": ["http://schema.org", {"@language": "en"}],
         "@id":"https://www.examplegame.com/VideoGame007",
         "@type":"VideoGame",
         "url":"https://www.examplegame.com/games/VideoGame007",
         "name":"Space Wars Made Up Game",
         "description":"Space Wars offers an immersive RPG experience coupled with realistic gameplay.",
         "genre":[
            "Role playing"
         ],
         "applicationCategory":"Game",
         "publisher":{
            "name":"Made Up Media",
            "@id":"https://www.examplegame.com/uniuqe-id-org",
            "@type":"Organization"
         },
         "contributor":[
            {
               "roleName":"developer",
               "name":"Alpha Labs Man Made Studio",
               "@id":"https://www.studionice.com/uniuqe-id-alpha",
               "@type":"Organization"
            }
         ],
         "playMode":[
           "SINGLE_PLAYER", "LOCAL_MULTI_PLAYER", "ONLINE_MULTI_PLAYER", "LOCAL_COOP", "ONLINE_COOP"
         ],
         "image":[
            {
               "@context":"http://schema.org",
               "@type":"ImageObject",
               "name":"keyart_1X1_3X",
               "contentUrl":"https://lh3.googleusercontent.com/ept4",
               "copyrightHolder":{
                  "@type":"Organization",
                  "name":"Studio Nice"
               },
               "additionalProperty":[
                  {
                     "@type":"PropertyValue",
                     "name":"contentAttributes",
                     "value":[
                         "SMALLFORMAT", "LARGEFORMAT", "SCENESTILL", "CENTERED", "NOTITLE", "NOLOGO"
                     ]
                  }
               ]
            }
         ],
         "exampleOfWork":{
            "@id":"https://www.examplegame.com/VideoGame007/version/v3",
            "name":"Space Wars Made Up Game",
            "description":"Space Wars offers an immersive RPG experience coupled with realistic gameplay.",
            "gameEdition":"Early Access",
            "url":"https://www.examplegame.com/VideoGame007/version/v3/stream",
            "contentRating":[
               "Entertainment Software Rating Board Mature",
               "Pan European Game Information 12",
               "Unterhaltungssoftware Selbstkontrolle Video Game Rating System USK 12"
            ],
            "applicationCategory":"Game",
            "releasedEvent":[
               {
                  "@type":"PublicationEvent",
                  "startDate":"2020-11-30",
                  "location":{
                     "@type":"Country",
                     "name":"US"
                  }
               }
            ],
            "potentialAction":{
               "@type":"PlayGameAction",
               "gameAvailabilityType":"DEMO",
               "target":[
                  {
                     "@type":"EntryPoint",
                     "urlTemplate":"https://www.examplegame.com/VideoGame007/play",
                     "actionPlatform":[
                        "http://schema.org/DesktopWebPlatform",
                        "http://schema.org/MobileWebPlatform",
                        "http://schema.org/AndroidPlatform",
                        "http://schema.org/AndroidTVPlatform",
                        "http://schema.org/IOSPlatform"
                     ]
                  }
               ],
               "actionAccessibilityRequirement":[
                  {
                     "@type":"ActionAccessSpecification",
                     "availabilityStarts": "2015-01-01T00:00Z",
                     "availabilityEnds": "2015-12-31T00:00Z",
                     "eligibleRegion":{
                        "@type":"Country",
                        "name":[
                           "US"
                        ]
                     },
                     "category":"subscription",
                     "requiresSubscription":{
                        "@type":"MediaSubscription",
                        "name":"",
                        "@id":""
                     }
                  }
               ],
            },
            "gamePlatform": "Google Stadia",
            "publisher":{
               "name":"Made Up Media",
               "@id":"https://www.examplegame.com/uniuqe-id-org",
               "@type":"Organization"
            },
            "contributor":[
               {
                  "roleName":"developer",
                  "name":"Alpha Labs Man Made Studio",
                  "@id":"https://www.studionice.com/uniuqe-id-alpha",
                  "@type":"Organization"
               }
            ]
         }
      }
   ]
}

Representing a sample image with two game characters

Illustration of a woman and bird in a field.
{
  "@context": [ "http://schema.org", { "@language": "en" } ],
  "@type": "VideoGame",
  "@id": "http://www.examplegame.com/videoGame1",
  "url": "http://www.examplegame.com/videoGame1",

  ...,

  "image": {
    "@context": "http://schema.org",
    "@type": "ImageObject",
    "name": "Mauren and Lord Wingflap!",
    "Keywords": "Mauren, Lord Wingflap the Destroyer",
    "contentUrl": "http://example.com/images/mountain-view.jpg",
    "character": [
      { "@type": "Person", "name": "Mauren" },
      { "@type": "Person", "name": "Lord Wingflap the Destoyer" }
    ],
    "copyrightHolder": {
      "@type": "Organization",
      "name": " ExampleOrganization Studios, Inc."
    },
    "inLanguage": "en-US",
    "audience": {
        "@type": "Audience",
        "geographicArea": [{"@type": "Country", "name": "US"},
                           {"@type": "Country", "name": "GB"}]
    },
    "additionalProperty": [
      {
        "@type": "PropertyValue",
        "name": "contentAttributes",
        "value": [ "iconic", "background", "rightCentered", "noTitle", "noLogo",
                   "noCopyright", "noMatte", "smallFormat", "largeFormat"]
      }
    ]
  }
}

Dealing with multiple regions and languages

A VideoGame entity could be available in multiple regions and languages.

{
  "@context": ["http://schema.org", {"@language": "en"}],
  "@type": "Movie",
  "@id": "http://www.example.com/my_favorite_game",
  "url": "http://www.example.com/my_favorite_game",
  "name": [
    {
      "@language": "en-us",
      "@value": "My Favorite Game"
    },
    {
      "@language": "es-mx",
      "@value": "mi juego favorito"
    }
  ],
  "description": [
    {
      "@language": "en-us",
      "@value": "Jenny meets Paul."
    },
    {
      "@language": "es-mx",
      "@value": "Jenny conoce a paul."
    }
  ],
  "potentialAction": [
    {
      "@type": "PlayGameAction",
      "target": {
        "@type": "EntryPoint",
        "urlTemplate": "http://www.example.com/my_favorite_game?autoplay=true",
        "actionPlatform": [
          "http://schema.org/DesktopWebPlatform",
          "http://schema.org/MobileWebPlatform"
        ]
      }
      "actionAccessibilityRequirement": {
        // Other properties
        "eligibleRegion": [
          {
            "@type": "Country",
            "name": "US"
          },
          {
            "@type": "Country",
            "name": "MX"
          }
        ]
      },
      "additionalProperty": [
        {
          "@type": "PropertyValue",
          "name": "contentLanguage",
          "value": [
            "en",
            "es"
          ]
        }
      ]
    }
  ],
  // Other properties...
}