Page Summary
-
A SportsEvent entity represents a sports game or a full replay of a sports game.
-
Short form content, clips, and shoulder content are not modeled as a SportsEvent.
-
Modeling a SportsEvent can vary based on whether it's part of a Video on demand catalog, live TV catalog streaming online, or live TV catalog streaming online on a channel.
-
Specific entities like BroadcastEvent, Broadcast, BroadcastService, Organization, TelevisionChannel, and CableOrSatelliteService are required depending on the use case for modeling SportsEvents in live TV contexts.
-
Deep links for SportsEvents in a Video on demand catalog should be provided on the SportsEvent entity, while deep links for live broadcasts without a channel should be on the BroadcastEvent entity, and deep links for live broadcasts on a channel should be on the BroadcastService entity.
Definition
A SportsEvent is an entity type representing a sports game or a full
replay of a sports game.
| What can be modeled as a SportsEvent? | A sports game |
| What can't be modeled as a SportsEvent? |
Any short form or clip content or shoulder content. Here's the list:
|
Common Use-cases for SportsEvents
| S.No. | Description | Entities Required |
|---|---|---|
| Case 1 |
I need to model a The game streams over the internet and is not attached to any channel. |
|
| Case 2 |
I need to model a SportsEvent that's part of my live TV
catalog and is streamed online on a channel.
|
|
| Case 3 | Combinations of the preceding two cases. | If you combine the earlier use cases, provide all entity types listed in the corresponding "Entities Required" column. |
Best practices and insights into a few checks that we do
The following guidelines and quality checks apply when modeling sports events and their broadcasts.
Deep link placement and availability windows (actionAccessibilityRequirement)
Apply the following rules across all SportsEvent integrations:
- Place all sports deep links on
SportsEvent.potentialAction: Game-level deep links (WatchAction)—for both channel-less livestreams and Video-on-demand replays—must reside exclusively on theSportsEvententity (SportsEvent.potentialAction). Never placepotentialActionon aBroadcastEventthat references aSportsEvent. (For linear channel broadcasts without an event-specific deep link, provide the channel deep link onBroadcastService.potentialAction.) If a game has multiple streams (for example, regional feeds, home or away broadcasts, multiple languages, or separate live and Video-on-demand replay URLs), provide an array ofWatchActionobjects inSportsEvent.potentialAction. - Pre-roll window (
availabilityStarts): SetSportsEvent.potentialAction.actionAccessibilityRequirement.availabilityStartsat least 14 days beforeSportsEvent.startDate(availabilityStarts <= SportsEvent.startDate - 14 days) so upcoming game tiles and tune-in notifications can surface in advance. You don't need to deliver the feed entity 14 days in advance—event data can be delivered closer to game day, as long as theavailabilityStartstimestamp is set at least 14 days prior toSportsEvent.startDate. - Overtime buffer (
availabilityEnds): SetSportsEvent.potentialAction.actionAccessibilityRequirement.availabilityEndsafterSportsEvent.endDatewith at least a 2 to 3 hour buffer (availabilityEnds >= SportsEvent.endDate + 2 to 3 hours, or through the end of the Video-on-demand replay window) so the deep link doesn't expire during live overtimes or post-game coverage. @idandurlrequirements:- Use distinct
@idvalues:BroadcastEvent.@idmust be different fromSportsEvent.@id. - Omit
url: Do not include aurlproperty onBroadcastEventorSportsEvententities.
- Use distinct
| S.No. | Entities Required | Guidelines |
|---|---|---|
| Case 1 |
I need to model a The game streams over the internet and is not attached to any channel. Entities Required
|
Modeling guidelines Sub-case 1: The game is only available live (and not as part of the Video on demand catalog)
Sub-case 2: The game is available live and as part of the Video on demand catalog (for example, when full game replays remain available on demand)
Quality checks to perform
|
| Case 2 |
I need to model a Entities Required
|
Modeling guidelines Sub-case 1: The game is only available live on the linear channel (and not as part of the Video on demand catalog)
Sub-case 2: The game is available live on a channel and as part of the Video on demand catalog
Quality checks to perform
|
Examples
Case 1: A sports event that's part of a live TV catalog and is streamed online
Broadcast event
{
"@context": ["http://schema.org", {"@language": "en"}],
"@type": "BroadcastEvent",
"@id": "http://example.com/live_event/basketball/professional/final_game_6",
"name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
"description": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B.",
"startDate": "2019-09-16T10:00-08:00",
"endDate": "2019-09-16T13:00-08:00",
"videoFormat": "HD",
"isLiveBroadcast": true,
"broadcastOfEvent": {
"@type": "SportsEvent",
"@id": "http://example.com/basketball/professional/final_game_6"
},
"location": {
"@type": "Country",
"name": "US"
}
}
Sports event
{
"@context": ["http://schema.org", {"@language": "en"}],
"@type": "SportsEvent",
"@id": "http://example.com/basketball/professional/final_game_6",
"name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"description": {
"@language": "en",
"@value": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B."
},
"startDate": "2019-09-16T10:00-08:00",
"endDate": "2019-09-16T13:00-08:00",
"homeTeam": {
"@type": "SportsTeam",
"name": "Team B",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"parentOrganization": {
"@type": "SportsOrganization",
"name": "Professional Basketball League",
"sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
},
"athlete": [
{
"@type": "Person",
"name": "John Doe"
}
]
},
"awayTeam": {
"@type": "SportsTeam",
"name": "Team A",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"parentOrganization": {
"@type": "SportsOrganization",
"name": "Professional Basketball League",
"sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
},
"athlete": [
{
"@type": "Person",
"name": "Jane Doe"
}
]
},
"location": {
"@type": "Place",
"name": "Example Stadium",
"address": {
"@type": "PostalAddress",
"streetAddress": "1600 Amphitheatre Pkwy",
"addressLocality": "Mountain View",
"addressRegion": "CA",
"postalCode": "94043",
"addressCountry": "US"
}
},
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "TMS_ID",
"value": "EP000194303282"
}
],
"potentialAction": {
"@type": "WatchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "http://www.example.com/pbl_finals_game_6?autoplay=true",
"inLanguage": "en",
"actionPlatform": [
"http://schema.org/DesktopWebPlatform",
"http://schema.org/MobileWebPlatform",
"http://schema.org/AndroidPlatform",
"http://schema.org/AndroidTVPlatform",
"http://schema.org/IOSPlatform",
"http://schema.googleapis.com/GoogleVideoCast"
]
},
"actionAccessibilityRequirement": {
"@type": "ActionAccessSpecification",
"category": "subscription",
"availabilityStarts": "2019-09-01T10:00-08:00",
"availabilityEnds": "2019-09-16T16:00-08:00",
"requiresSubscription": {
"@type": "MediaSubscription",
"name": "Example Package",
"commonTier": true,
"@id": "http://www.example.com/example_package"
},
"eligibleRegion": [
{
"@type": "Country",
"name": "US"
}
]
}
}
}
Case 2: A sports event that's part of a live TV catalog and is streamed online on a channel
Broadcast event
{
"@context": ["http://schema.org", {"@language": "en"}],
"@type": "BroadcastEvent",
"@id": "http://example.com/live_event/basketball/professional/final_game_6",
"name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
"description": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B.",
"startDate": "2019-09-16T10:00-08:00",
"endDate": "2019-09-16T13:00-08:00",
"videoFormat": "HD",
"isLiveBroadcast": true,
"publishedOn": {
"@type": "BroadcastService",
"@id": "http://example.com/stations/example_tv"
},
"broadcastOfEvent": {
"@type": "SportsEvent",
"@id": "http://example.com/basketball/professional/final_game_6"
},
"location": {
"@type": "Country",
"name": "US"
}
}
Sports event
{
"@context": ["http://schema.org", {"@language": "en"}],
"@type": "SportsEvent",
"@id": "http://example.com/basketball/professional/final_game_6",
"name": "2019 Professional Basketball Finals, Game 6: Team A at Team B",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"description": {
"@language": "en",
"@value": "Game 6 of the 2019 Professional Basketball Finals. Team A leads the series 3-2 against Team B."
},
"startDate": "2019-09-16T10:00-08:00",
"endDate": "2019-09-16T13:00-08:00",
"homeTeam": {
"@type": "SportsTeam",
"name": "Team B",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"parentOrganization": {
"@type": "SportsOrganization",
"name": "Professional Basketball League",
"sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
},
"athlete": [
{
"@type": "Person",
"name": "John Doe"
}
]
},
"awayTeam": {
"@type": "SportsTeam",
"name": "Team A",
"sport": "https://en.wikipedia.org/wiki/Basketball",
"parentOrganization": {
"@type": "SportsOrganization",
"name": "Professional Basketball League",
"sameAs": "https://en.wikipedia.org/wiki/Professional_Basketball_League"
},
"athlete": [
{
"@type": "Person",
"name": "Jane Doe"
}
]
},
"location": {
"@type": "Place",
"name": "Example Stadium",
"address": {
"@type": "PostalAddress",
"streetAddress": "1600 Amphitheatre Pkwy",
"addressLocality": "Mountain View",
"addressRegion": "CA",
"postalCode": "94043",
"addressCountry": "US"
}
},
"identifier": [
{
"@type": "PropertyValue",
"propertyID": "TMS_ID",
"value": "EP000194303282"
}
]
}
BroadcastService, CableOrSatelliteService, TelevisionChannel, and
Organization entities as defined in the
Live TV Channel section under
Concepts.
How do I handle shoulder content?
| What qualifies as shoulder content? |
|
| S.No. | Use case | Modeling guidelines |
|---|---|---|
| Case 1 | I have shoulder content in my Video on demand catalog. | |
| Case 2 | I have shoulder content in my live catalog |
Sub-case 1: Content is available to stream live on the internet
Sub-case 2: Content is available to stream live on the internet on a channel
|
| Case 3 | I have shoulder content available as part of both Video on demand and live TV catalog |
Given that Video on demand sports shoulder content isn't accepted in the feed today, this is similar to case 2. See the instructions from there. |
Commonly Asked Questions
Q: Where can I find the associated specifications for the entities mentioned earlier?
A: You can find the required specifications here.
| Overall documentation | Link |
|---|---|
SportsEvent
|
Link |
BroadcastService, Organization, TelevisionChannel
, CableOrSatelliteService
|
Link |
BroadcastEvent
|
Link |
Q: Is there a more detailed document that explains how to model the live TV channels and lineups?
A: Yes, you can find more details in Live TV Channel section under Concepts. Please feel free to request view access if you aren't able to view the document.
Q: Does ViTA support full live games and full game replays as well?
A: ViTA supports metadata on league based full live games and full game replays (in addition to a subset of shoulder content)
For partners that already have a functional Media Actions feed with Google or have a Video on demand or live TV offering, Google requires the feed to expand and include the supported
SportsEventtypes as well.- For the short term, the partners can use ViTA for shoulder content ingestion. Support all types of content through the feed should roll out over the long term.
For partners that don't have a Video on demand or live TV offering but carry only league based sports and related shoulder content, ViTA is a great option to begin with. Contact your Google representative to learn more about ViTA.