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
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.
- For instance, don't use the same
- Static:
- You cannot change
@id
later.
- You cannot change
- 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 ishttps://example.com
,@id
can behttps://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.
- 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
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).
- 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 withBBEF
at address0x00
.
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 asurl
, 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
- A unique ID:
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:
|
|
20x20 | |||
40x40 | |||
44x44 | |||
112x112 |
Sample
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
andavailabilityEnds
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:
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:
|
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:
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 |
|||
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.
We require the corresponding entity to be provided in the feed at least
seven days ahead of its |
|||
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.
We require that any updates to the |
|||
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.
|
|||
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:
If the price is 0.00, then remove the Offer object entirely and set the |
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.
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:
|
|||
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.
|
|||
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 topurchase
for this use case. - To provide the purchase details of the game when it's on sale.
actionAccessibilityRequirement.category
should be set topurchase
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:
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.
- 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.
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"}] .
|
|||
@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:
Since an entity's |
|||
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:
For a playback's deep link, see the target object's |
|||
name |
Text | The name of the game.
|
|||
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:
|
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:
Since an entity's |
|||
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:
For a playback's deep link, see the target object's |
|||
name |
Text | The name of the game.
|
|||
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:
|
|||
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 |
|||
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:
|
|||
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
andlargeFormat
. -
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
{ "@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... }