OpenRTB vs. VAST: Your Essential Guide to Video Ad Tech
CK 3788 Created at
27700
OpenRTB and VAST Relationship
OpenRTB (Open Real-Time Bidding) and VAST (Video Ad Serving Template) are two critical, yet distinct, standards in the digital advertising ecosystem. They work together synergistically, particularly in programmatic video advertising, but serve different functions:
OpenRTB is a technical protocol that standardizes the communication between ad exchanges/SSPs (Supply-Side Platforms) and DSPs (Demand-Side Platforms) to facilitate the real-time bidding and buying/selling of ad impressions. It defines how bid requests (containing information about the user, context, and ad slot) and bid responses (containing the advertiser's bid and creative details) are exchanged. Its primary role is to enable programmatic transactions.
VAST is an XML schema developed by the IAB Tech Lab that standardizes the communication between an ad server and a video player to describe and deliver video ad creatives. It dictates what video ad to play, how to play it (e.g., duration, skip functionality), and how to track its performance.
How they interact: In a typical programmatic video ad transaction:
A user visits a publisher's website or app, triggering a video ad request.
The publisher's SSP/ad exchange uses OpenRTB to send a bid request to multiple DSPs.
DSPs evaluate the request, and if they have a relevant ad, they respond with a bid, often including a URL to a VAST XML document (or the VAST XML itself) for their winning creative.
The ad exchange selects the winning bid and passes the VAST URL/XML to the publisher's ad server, which then delivers it to the video player.
The video player parses the VAST XML to retrieve the actual video creative file, tracking pixels, and other playback instructions, then plays the ad.
In essence, OpenRTB handles the "auction" for an ad impression, and VAST provides the "blueprint" for delivering the winning video ad creative.
VAST as an IAB Standard
VAST is indeed a standard developed and maintained by the IAB Tech Lab. It is one of their foundational standards for video advertising, alongside others like VPAID (Video Player Ad-Serving Interface Definition, though largely deprecated in favor of SIMID/OMID), VMAP (Video Multiple Ad Playlist), and Open Measurement (OMID). The IAB (Interactive Advertising Bureau) creates these standards to ensure interoperability and efficiency across the complex digital advertising ecosystem.
OpenRTB and VAST: Background, Timing, and Characteristics
Feature
OpenRTB (Open Real-Time Bidding)
VAST (Video Ad Serving Template)
Background
Created to standardize the programmatic buying and selling of digital ad impressions in real-time, moving away from manual negotiations and enabling greater efficiency and scale.
Developed to standardize the communication protocol between ad servers and video players for delivering video advertisements, addressing fragmentation in video ad delivery methods.
Timing
First version (1.0) released by IAB Tech Lab in 2010.
First version (1.0) released by IAB in 2008.
Primary Focus
Protocol for real-time auctioning of ad impressions. Defines bid requests and responses to facilitate automated transactions.
XML schema for video ad delivery metadata. Defines how video ads are described, delivered, and tracked within a video player.
Role
Facilitates the programmatic transaction for ad inventory. Connects DSPs with SSPs/ad exchanges.
Facilitates the delivery and playback of video ad creatives. Connects ad servers with video players.
Key Components
Bid Request (publisher/user info, ad slot details), Bid Response (bid amount, creative assets, tracking URLs, VAST tag URL).
XML document containing media file URLs, tracking event URLs, interactive elements, duration, and other ad attributes.
Scope
Cross-platform and multi-format: display, video, mobile, native, audio.
Primarily for video advertising, specifying how video creatives should be rendered.
Evolution
Has evolved through various versions (2.x, 3.0) to support diverse ad formats, private marketplaces (PMP), and more advanced data capabilities.
Has evolved through versions (2.0, 3.0, 4.x) to support advanced tracking, ad podding, interactive capabilities (SIMID/OMID integration), and server-side ad insertion.
OpenRTB Advantages
Efficiency and Automation: Automates the ad buying and selling process, reducing manual intervention and operational costs.
Real-time Decision Making: Enables advertisers to bid on individual impressions in milliseconds, optimizing campaign performance based on real-time data.
Granular Targeting: Allows advertisers to target specific user segments, contexts, and devices with high precision, leading to more relevant ad delivery.
Maximizes Publisher Revenue: Publishers can achieve higher CPMs (Cost Per Mille/Thousand) by exposing their inventory to a wider pool of demand sources and fostering competitive bidding.
Optimized Ad Spend: Advertisers can optimize their budgets by only bidding on impressions that meet their specific criteria and performance goals.
Scalability: Can handle vast volumes of transactions, facilitating the buying and selling of billions of impressions daily across global markets.
OpenRTB Disadvantages
Complexity: The technical infrastructure required for RTB (DSPs, SSPs, ad exchanges) can be complex to set up, integrate, and manage.
Latency Concerns: While fast, the RTB process adds a slight delay to ad serving, which, if not optimized, can potentially impact user experience.
Ad Fraud Risk: The automated and real-time nature can make RTB susceptible to various forms of ad fraud (e.g., impression fraud, bot traffic) if robust detection mechanisms are not in place.
Brand Safety Issues: There's a risk of ads appearing next to inappropriate or undesirable content if publishers' inventory quality controls or advertisers' brand safety measures are insufficient.
Data Privacy Challenges: Heavy reliance on user data for targeting raises significant privacy concerns and necessitates strict compliance with regulations like GDPR and CCPA.
Lack of Full Transparency (sometimes): While offering more data than traditional methods, the "black box" nature of some platforms can still limit advertisers' complete visibility into inventory sources and bidding logic.
Example of OpenRTB JSON
OpenRTB (Open Real-Time Bidding) is a standardized protocol that facilitates the real-time buying and selling of digital ad impressions through programmatic auctions. The communication between ad exchanges (SSPs) and demand-side platforms (DSPs) primarily happens using JSON (or Protobuf) structures.
Here's an example of an OpenRTB Bid Request JSON. This is what an ad exchange (SSP) would send to a DSP to ask for a bid on an ad impression.
Scenario: A user is viewing an article within a mobile news app, and the app wants to display a 320x50 banner ad.
Standardization: Provides a universal, consistent format for describing and delivering video ads, ensuring compatibility across different ad servers, video players, and platforms.
Simplified Integration: Reduces development effort for publishers and advertisers by offering a standardized interface for video ad serving, saving time and resources.
Rich Media and Interactivity Support: Supports various creative types (linear, non-linear, companion ads) and enables basic interactive elements, enhancing engagement (especially with later versions like 4.x).
Robust Tracking: Includes comprehensive event tracking mechanisms (impressions, clicks, various video playback events like quartile progress, mute, pause), providing detailed performance metrics.
Ad Podding and Sequencing: VAST 3.0+ facilitates the delivery of multiple ads in a sequence (ad pods) and supports complex ad break definitions.
Error Reporting: Standardized error codes help diagnose and troubleshoot issues in ad delivery and playback, improving reliability.
VAST Disadvantages
XML Complexity: VAST XML can be verbose and intricate, especially for advanced features, making manual creation and debugging challenging.
Versioning Fragmentation: Different VAST versions (2.0, 3.0, 4.x) exist, and not all video players or ad servers fully support the latest features, leading to compatibility issues and fragmented adoption.
Limited Custom Interactivity (historically): While VAST supports basic interactivity, highly dynamic, and custom interactive ads might have historically required more specialized solutions like VPAID (which has its own challenges and is being phased out in favor of OMID/SIMID with VAST 4.x).
Debugging Challenges: Tracing issues within complex VAST redirects, waterfalls, or third-party tracking can be difficult and time-consuming.
Bandwidth Overhead: For very complex VAST responses with many wrappers or extensive tracking, the XML parsing can introduce slight overhead.
Example of VAST XML
VAST (Video Ad Serving Template) XML is a standardized XML schema developed by the IAB (Interactive Advertising Bureau) that allows ad servers and video players to communicate and serve video ads consistently across different platforms.
It defines how a video ad should be played, including the media files themselves, tracking events, click-through URLs, and companion banners.
Here's an example of a VAST 3.0 InLine ad, which is one of the most common types. An "InLine" ad contains all the ad creative details directly within the XML.
<?xml version="1.0" encoding="UTF-8"?>
<VAST version="3.0">
<Ad id="60136">
<InLine>
<AdSystem version="3.0">MyAdServer</AdSystem>
<AdTitle>Example Video Ad</AdTitle>
<Description>A short example video advertisement showcasing a product.</Description>
<!-- Impression Tracking: Fired when the ad begins to load -->
<Impression id="my-impression-tracker"><![CDATA[https://myadserver.com/track/impression?id=12345]]></Impression>
<!-- Error Tracking: Fired if there's an error playing the ad -->
<Error><![CDATA[https://myadserver.com/track/error?id=12345&reason=[ERRORCODE]]]></Error>
<Creatives>
<Creative id="linear-ad-1" sequence="1">
<Linear>
<Duration>00:00:15</Duration> <!-- Ad duration: 15 seconds -->
<!-- Video Playback Tracking Events -->
<TrackingEvents>
<Tracking event="start"><![CDATA[https://myadserver.com/track/event?id=12345&event=start]]></Tracking>
<Tracking event="firstQuartile"><![CDATA[https://myadserver.com/track/event?id=12345&event=firstQ]]></Tracking>
<Tracking event="midpoint"><![CDATA[https://myadserver.com/track/event?id=12345&event=mid]]></Tracking>
<Tracking event="thirdQuartile"><![CDATA[https://myadserver.com/track/event?id=12345&event=thirdQ]]></Tracking>
<Tracking event="complete"><![CDATA[https://myadserver.com/track/event?id=12345&event=complete]]></Tracking>
<Tracking event="mute"><![CDATA[https://myadserver.com/track/event?id=12345&event=mute]]></Tracking>
<Tracking event="unmute"><![CDATA[https://myadserver.com/track/event?id=12345&event=unmute]]></Tracking>
<Tracking event="pause"><![CDATA[https://myadserver.com/track/event?id=12345&event=pause]]></Tracking>
<Tracking event="resume"><![CDATA[https://myadserver.com/track/event?id=12345&event=resume]]></Tracking>
<Tracking event="skip"><![CDATA[https://myadserver.com/track/event?id=12345&event=skip]]></Tracking>
</TrackingEvents>
<!-- Video Click-Through and Tracking -->
<VideoClicks>
<ClickThrough><![CDATA[https://www.example.com/product-page]]></ClickThrough>
<ClickTracking id="my-click-tracker"><![CDATA[https://myadserver.com/track/click?id=12345]]></ClickTracking>
</VideoClicks>
<!-- Ad Media Files (different formats/qualities) -->
<MediaFiles>
<MediaFile id="mp4-low" delivery="progressive" type="video/mp4" width="640" height="360" bitrate="800" scalable="true" maintainAspectRatio="true">
<![CDATA[https://example.com/assets/video/ad-640x360.mp4]]>
</MediaFile>
<MediaFile id="mp4-high" delivery="progressive" type="video/mp4" width="1280" height="720" bitrate="1500" scalable="true" maintainAspectRatio="true">
<![CDATA[https://example.com/assets/video/ad-1280x720.mp4]]>
</MediaFile>
<MediaFile id="webm-medium" delivery="progressive" type="video/webm" width="854" height="480" bitrate="1000" scalable="true" maintainAspectRatio="true">
<![CDATA[https://example.com/assets/video/ad-854x480.webm]]>
</MediaFile>
</MediaFiles>
<!-- Optional: Icons that can overlay the video -->
<!--
<Icons>
<Icon program="AdChoices" width="25" height="19" xPosition="right" yPosition="top" offset="00:00:05" duration="00:00:10">
<StaticResource creativeType="image/png"><![CDATA[https://example.com/adchoices.png]]></StaticResource>
<IconClicks>
<IconClickThrough><![CDATA[https://www.example.com/adchoices-info]]></IconClickThrough>
<IconClickTracking><![CDATA[https://myadserver.com/track/icon-click?id=12345]]></IconClickTracking>
</IconClicks>
</Icon>
</Icons>
-->
</Linear>
</Creative>
<!-- Optional: Companion Banners (display alongside or after the video) -->
<Creative id="companion-ad-1" sequence="1">
<CompanionAds>
<Companion width="300" height="250">
<StaticResource creativeType="image/jpeg"><![CDATA[https://example.com/assets/image/companion-300x250.jpg]]></StaticResource>
<TrackingEvents>
<Tracking event="creativeView"><![CDATA[https://myadserver.com/track/companion-view?id=12345]]></Tracking>
</TrackingEvents>
<CompanionClickThrough><![CDATA[https://www.example.com/product-page]]></CompanionClickThrough>
<AdParameters><![CDATA[{"param1": "value1"}]]></AdParameters>
</Companion>
<Companion width="728" height="90">
<HTMLResource><![CDATA[<a href="https://www.example.com/product-page"><img src="https://example.com/assets/image/companion-728x90.jpg" alt="Companion Ad"></a>]]></HTMLResource>
<CompanionClickThrough><![CDATA[https://www.example.com/product-page]]></CompanionClickThrough>
</Companion>
</CompanionAds>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
Explanation of Key VAST Elements:
: The root element, specifying the VAST version. VAST 3.0 is a widely adopted version.
: Represents a single ad. The id is a unique identifier.
: Indicates that all ad creative details (media files, tracking, etc.) are contained directly within this XML document.
Alternative: : Used when an ad server needs to chain requests to other VAST documents. It contains a pointing to another VAST XML URL.
: Identifies the ad server or ad source.
: A human-readable title for the ad.
: A longer description of the ad content.
: Contains a URL to a tracking pixel that is fired when the ad is requested and begins loading/playing.
: Contains a URL to a tracking pixel that is fired if an error occurs during ad playback. [ERRORCODE] is a macro replaced by the specific error code.
: A container for one or more elements.
: Represents a single creative asset.
: Defines a linear video ad (an ad that plays within the main content stream).
: The exact duration of the video ad in HH:MM:SS format.
: Contains URLs for various events during video playback.
: URLs fired at specific points in the video's lifecycle.
: Defines behavior for user clicks on the video.
: The URL to which the user is directed when they click on the video ad.
: A URL to a tracking pixel that fires when the user clicks the video ad.
: Contains references to the actual video ad files.
: Specifies details for a single video file.
delivery="progressive": For HTTP progressive download. "streaming" is another option.
type="video/mp4": The MIME type of the video file.
width, height: Dimensions of the video.
bitrate: The video bitrate.
scalable, maintainAspectRatio: Indicate if the player can scale the video while maintaining its aspect ratio.
: The actual URL of the video file. CDATA sections are used for URLs and other text that might contain characters that would otherwise conflict with XML parsing.
(Optional): Defines banner ads that can appear alongside the video player or after the video.
: Details for a specific companion ad size.
width, height: Dimensions of the companion ad.
: URL to an image file for the companion ad.
: HTML code for the companion ad.
: URL to an HTML page for the companion ad within an iframe.
: The URL for clicking on the companion ad.
This example provides a solid foundation for understanding the structure and common elements of a VAST XML document for linear video ads with optional companion banners. Real-world VAST can become more complex with features like ad pods, non-linear ads, and interactive creatives.
OpenRTB vs. VAST Usage
Both OpenRTB and VAST are ubiquitously used and indispensable in their respective domains.
OpenRTB is the dominant protocol for programmatic advertising transactions across almost all digital ad formats (display, video, mobile, native, audio). If an ad impression is bought or sold programmatically in real-time, OpenRTB (or a proprietary protocol heavily inspired by it) is almost certainly involved. Its use is pervasive across DSPs, SSPs, and ad exchanges globally.
VAST is the universal standard for delivering video ad creatives. Any time a video ad plays within a digital environment—whether it's from a programmatic transaction (often facilitated by OpenRTB) or a direct deal—VAST is typically the mechanism used to communicate the ad's details to the video player. Its use is foundational for all digital video advertising.
In summary, you cannot have scaled programmatic video advertising without both OpenRTB to facilitate the transaction and VAST to ensure the successful delivery and playback of the video ad. They are equally critical and pervasive within their interconnected roles.