Network video analytics

The Network Video Analytics report can be used to view video event metrics for a network member. To drill down into more granular analytics for a specific advertiser or publisher, see the Network Video Advertiser Analytics and Network Video Publisher Analytics reports.

Note

  • Video metrics are recorded for VAST creatives only.
  • For instructions on retrieving a report, see Report Service or the examples below.

Time frame

The report_interval field can be set to one of the following:

  • today
  • yesterday
  • last_hour
  • last_24_hours
  • last_48_hours
  • month_to_date
  • month_to_yesterday
  • last_2_days
  • last_7_days
  • last_14_days
  • last_30_days
  • last_7_available_days
  • last_14_available_days
  • last_30_available_days
  • last_365_days

Data retention period

Data in this report is retained for 420 days.

Note

To run a report for a custom time frame, set the start_date and end_date fields in your report request. For more details about these fields, see Report Service.

Dimensions

Column Type Filter? Example Description
hour time Yes "2010-02-01 06:00:00" The hour of the auction.

Note: For impressions older than 100 days, the day will be returned rather than the hour.
day time Yes "2010-02-01" The day of the auction.
month time No "2010-02" The month of the auction.
buyer_member_id int Yes 123 The ID of the buying member. If the impression was not purchased, this field shows one of the following values:
229 = PSA
0 = Blank
319 = Default
buyer_member_name string No "My Network" The name of the buying member.
buyer_member string No "My Network (123)" Deprecated (as of October 17, 2016).
split_id int Yes 342 The ID of the split that purchased the impressions in this data set. Splits are only applicable to augmented line items. For any reports that contain campaigns, the split_id (if included) will be null.
split_name string Yes "Mobile Split A" The name of the split that purchased the impressions in this data set. Splits are only applicable to augmented line items. For any reports that contain campaigns, the split_name (if included) will be null.
creative_id int Yes 554 The ID of the creative.

Note: For external click or impression trackers, creative_id will be "External Clicks" or "External Imps".
creative_name string No "Q1 2010 728x90" The name of the creative.

Note: For external click or impression trackers, creative_id will be "External Clicks" or "External Imps".
creative string No "Q1 2010 728x90 (554)" Deprecated (as of October 17, 2016).
member_id int Yes 767 The ID of the member.
seller_member_id int Yes 456 The ID of the selling member.
seller_member_name string No "That Seller" The name of the selling member.
seller_member string No "That Seller (456)" Deprecated (as of October 17, 2016).
advertiser_id int Yes 789 The ID of the advertiser. If the value is 0, either the impression was purchased by an external buyer, or a default or PSA was shown.
advertiser_name string No "Verizon Wireless" The name of the advertiser.
advertiser string No "Verizon Wireless (789)" Deprecated (as of October 17, 2016).
advertiser_currency string Yes "USD" The currency of the advertiser.
publisher_id int Yes 321 The ID of the publisher.
publisher_name string No "Test" The name of the publisher.
publisher string No "Test (123)" Deprecated (as of October 17, 2016).
publisher_currency string Yes "USD" The currency of the publisher.
site_id int Yes 194 The ID of the site.

Note: For impressions older than 100 days, the site_id will be 0.
site_name string No "Site Name" The name of the site.
site string No "Site Name (194)" Deprecated (as of October 17, 2016).
placement_id int Yes 456 The ID of the placement.

Note: For impressions older than 100 days, placements will be aggregated into one row with -1 as the placement_id.
placement_name string No "Ivillage 160x600" The name of the placement.

Note: For impressions older than 100 days, placements will be aggregated into one row with "All placement data older than 100 days" as the placement_name.
placement_code string No "Ivillage Code" The custom code for the placement.
insertion_order_id int Yes 321 The ID of the insertion order.
insertion_order_name string No "Insertion Order" The name of the insertion order.
insertion_order string No "Insertion Order (321)" Deprecated (as of October 17, 2016).
line_item_id int Yes 111 The ID of the line item.
line_item_name string No "Default Line Item" The name of the line item.
line_item string No "Default Line Item (111)" Deprecated (as of October 17, 2016).
line_item_code string No "Default Line Item Code" The custom code for the line item.
campaign_id int Yes 222 The ID of the campaign.
campaign_name string No "Default Campaign" The name of the campaign.
campaign string No "Default Campaign (222)" Deprecated (as of October 17, 2016).
size string Yes "728x90" The size of the placement/creative served.
brand_id int Tes 3 The ID of the brand associated with a creative. For imp_type_id = 6, no information is available in the brand_id field for this report. See the Seller Brand Review Report instead.
brand_name string No "Ace Hardware" The name of the brand associated with a creative. For imp_type_id = 6, no information is available in the brand_name field for this report. See the Seller Brand Review Report instead.
brand string No "Ace Hardware (3)" Deprecated (as of October 17, 2016).
geo_country string Yes "US" The code for the geographic country.
geo_country_name string No "United States" The name of the geographic country.
deal_id int Yes 2345 The ID of the deal. For more information about negotiated deals between buyers and sellers, see Deal Service and Deal Buyer Access Service.
deal_name string No "Private deal for buyer 1085 with floor of $2.50" The name of the deal.
deal string No "Private deal for buyer 1085 with floor of $2.50 (45)" Deprecated (as of October 17, 2016).
trafficker_for_insertion_order string Yes "Maurice Truman" The trafficker for the insertion order. See the "labels" field in the Insertion Order Service for more details.
salesrep_for_insertion_order string Yes "Beverly Heller" The sales rep for the insertion order. See the "labels" field in the Insertion Order Service for more details.
creative_recency_bucket_id string no "4" The ID of the creative recency bucket. See Creative Recency Buckets below for possible values.
creative_recency_bucket string yes "15-30 minutes" The bucket for how recently the creative was displayed. See Creative Recency Buckets below for possible values.
creative_frequency_bucket string yes "11-20" The bucket for how frequently the creative was displayed. See Creative Frequency Buckets below for possible values.
creative_frequency_bucket_id string no "3" The ID of the creative frequency bucket. See Creative Frequency Buckets below for possible values.
site_domain string no bestsiteever.com The domain where the impression occurred. For mobile applications, this can be the URL of the app's location in the app store.
There are two additional values that may appear in place of a domain, specifically: "deals.unknown" or "managed.unknown". These mean that we didn't receive a valid domain as the referrer. For example, the domain may be blank or otherwise malformed.
mobile_application_id int Yes 343200656 A targetable Apple App Store ID, Android application ID, or Windows application ID.
supply_type string Yes "mobile_web" The seller-classified channel to denominate supply in terms of web, mobile-optimized web, and mobile app impressions. Possible values are
- "web"
- "mobile_app"
- "mobile_web"
video_playback_method string Yes "1" The playback method for the creative. See Video Playback Method below for possible values.
video_context string Yes "3" The type of the video creative. See Video Context below for possible values.
video_player_size_id string Yes "2" The ID of the video player width. See Player Size below for possible values.
imp_type_id int Yes 3 The ID of the associated impression type. Possible values: An integer value which translates as follows:
0 = Video Event Error
1 = Blank: "200 OK" response (blank) served.
2 = PSA : A public service announcement served because no other creative was eligible.
3 = Default Error: A default creative served due to timeout issue.
4 = Default: A default creative served because no campaigns bid or no other creative was eligible.
5 = Kept: One of your managed advertisers served a creative.
6 = Resold: The impression was sold to a third-party buyer.
7 = RTB: Your creative served on third-party inventory.
8 = PSA Error: A public service announcement served due to timeout issue.
9 = External Impression: An impression from an impression tracker.
10 = External Click: A click from a click tracker.
bidder_id int Yes 45 The ID of the associated bidder.
creative_duration int Yes 30 The duration of the video creative in seconds.
video_delivery_type string No "vod" The type of streaming content delivery. For example, Video On Demand (VOD) and Live.
video_content_genre string No "action" The main genre of the program in which the ad will be played. For example, Action, Adventure, Biography, Business, Comedy, etc.
video_program_type string No "series" The higher level categorization of the video program's format on which the ad will be played. For example, Movie, Series, Special, Show, Event, Clip, etc.
video_content_rating string No "teens" The publisher-identified audience group for which the content is rated. For example, All, Children (7+) , Teens (13+), Young Adults (14+), or Adults (18+).
content_duration_secs int Yes 480 The length of the video content in seconds.
device_type string Yes - Desktops & Laptops
- Mobile Phones
- Tablets
- TV
- Game Consoles
- Media Players
- Set Top Box
- Other Devices
The type of device where the creative was set to play.
video_content_duration int Yes 100 The length of the video content in seconds.
video_content_language string No "Spanish" The language of the video program in which ad will be played. For example, Spanish.
video_content_network string No "AMC" The network delivering the video content. For example, 9 Story, CBC, Disney, AMC, Fox, etc.
code_1 string No "Code A" An alias added to the placement object that is reportable as a sub-dimension of Placement. The report shows the current value of the alias and does not reflect historical values. This information is only reportable to Sellers.
code_2 string No "Code B" An alias added to the placement object that is reportable as a sub-dimension of Placement. The report shows the current value of the alias and does not reflect historical values. This information is only reportable to Sellers.
code_3 string No "Code C" An alias added to the placement object that is reportable as a sub-dimension of Placement. The report shows the current value of the alias and does not reflect historical values. This information is only reportable to Sellers.

Note

The data for the following dimensions is only available if the publisher has implemented video taxonomy.

  • video_delivery_type
  • video_content_genre
  • video_program_type
  • video_content_rating
  • video_content_duration
  • video_content_language
  • video_content_network

Metrics

Column Type Example Formula Description
imps int 2340 imps The total number of impressions (served and resold).
ad_requests int 1234 ad_requests The number of ad requests associated with the placement.
ad_responses int 2340 ad_responses The number of responses delivered to the user's browser (or mediating server). A response can result in an impression, an error in player, or an auction with no impression event.

Note: An imp refers to when the video player loads the video and starts the first frame. Videos Served refers to the VAST document being served in response to a request from the video player.
clicks int 1 clicks The total number of clicks across all impressions.
cost money 16.833378 cost The total amount of media cost for direct publisher and purchased real-time inventory.
revenue money 25.767257 booked_revenue + reseller_revenue The sum of booked revenue and reseller revenue.
profit money 0.084102 booked_revenue - total_cost Booked revenue minus total cost.
cpm money 1.66051685393258 (cost / imps) x 1000 The cost per 1000 impressions.
total_convs int 5 total_convs The total number of post-view and post-click conversions.
convs_rate double 0.000221877080097626 total_convs / imps The rate of conversions to impressions.
ctr double 0.000221877080097626 clicks / imps The rate of clicks to impressions.
rpm money 2.60548314606741 (revenue / imps) x 1000 The revenue per 1000 impressions.
rpm_including_fees money 2.60548314606741 (revenue_including_fees / imps) x 1000 To be deprecated. The revenue minus commissions per 1000 impressions.
total_network_rpm money 2.60548314606741 (revenue / imps) x 1000 The revenue per 1000 impressions.
ppm money 0.944966292134831 (profit / imps) x 1000 To be deprecated. The profit per 1000 impressions.
ppm_including_fees money 0.662460674157303 (profit_including_fees / imps) x 1000 To be deprecated. The profit including additional fees per 1000 impressions.
cpm_including_fees money 2.60548314606741 (cost_including_fees / imps) x 1000 To be deprecated. The cost including additional fees per 1000 impressions.
errors int 5 errors The total number of times an error occurred.
starts int 360 starts The total number of times the first segment of the video creative was downloaded and started.
start_rate double 25.85 starts / imps The number of video starts divided by the number of impressions.
skips int 20 skips The total number of times a user skipped the video.
skip_rate double 20.5 skips / imps The number of video skips divided by the number of impressions.
25_pcts int 780 25% complete The total number of times the video creatives completed 25% of the entire duration.
50_pcts int 654 50% complete The total number of times the video completed 50% of the entire duration of time.
75_pcts int 567 75% complete The total number of times the video completed 75% of the entire duration of time.
completions int 989 100% complete The total number of times the video played for the entire duration of time.
completion_rate double 85.45 completions / imps The number of video completions divided by the number of impressions.
render_rate double 60% render_rate The percentage of videos delivered based on the number of ad responses delivered to the user's browser. (Impressions / Ad responses)
revenue_per_video_complete double 15.869 revenue / completions The revenue per video completion.
cost_per_video_complete double 2.056 cost / completions The cost per video completion.
imps_viewed int 30,450 imps_viewed The number of measured impressions that were viewable, per the IAB Viewability definition, which states that an impression is viewable if 50% of the pixels are in-view during 2 consecutive seconds.
view_measured_imps int 10,120 view_measured_imps The total number of impressions that were measured for viewability.
view_rate double 58% view_rate The percentage of impressions that were viewable out of the total number of impressions measured for viewability. (Viewed Imps / View Measured Imps)
view_measurement_rate double 45% view_measurement_rate The percentage of impressions measured for viewability out of the total number of impressions. (View Measured Imps / Imps)
started_video_completion_rate double 85.45 completions / video_starts The number of video completions divided by the number of video starts.
total_cost money 123.45 total_cost = media_cost + data_costs + partner_fees + commissions + serving_fees + publisher_revenue The total amount of costs accrued over the reported period of time. This generally includes two types of costs, budgeted costs (media cost, data cost, partner fees, serving fees, commissions) and publisher revenue if you track publisher payouts on the platform.

Note: We have added logic to prevent double counting third-party fees during the breaking change period.
total_cost_ecpm money 123.45 (total_cost/imps) * 1,000 The total cost per 1,000 imps.
total_cost_ecpc money 123.45 total_cost/clicks The total cost per click.
total_cost_ecpa money 123.45 total_cost/conversions The total cost per conversion.
network_profit money 123.45 (booked_revenue + reseller_revenue) - total_cost The sum of booked revenue and reseller revenue minus total cost.
network_profit_ecpm money 123.45 (network_profit/imps) * 1,000 Network profit per 1,000 imps.
network_profit_ecpc money 123.45 network_profit/clicks Network profit per click.
network_profit_ecpa money 123.45 network_profit/conversions Network profit per conversion.
network_profit_margin money 123.45 network_profit/(booked_revenue + reseller_revenue) Network profit margin.
profit_ecpm money 123.45 ((booked_revenue - total_cost)/imps) * 1,000 Profit per 1,000 imps.
profit_ecpc money 123.45 (booked_revenue - total_cost)/clicks Profit per click.
profit_ecpa money 123.45 (booked_revenue - total_cost)/conversions Profit per conversion.
profit_margin money 123.45 (booked_revenue - total_cost)/booked_revenue Buyer profit margin.
Average View Time int 28 sum (creative_duration * ((0.125 × starts) + (0.25 × first_quartiles) + (0.25 × second_quartiles) + (0.25 × third_quartiles) + (0.125 × completions)) / sum (starts)) An estimate for the average duration in seconds (rounded to 0 decimal places) of the creative that was viewed. This is calculated by approximating the duration watched as the mid-point between the video events (for example, a start event would estimate that 12.5% of the creative is viewed).
Average View Time Percent percentage 89% sum (((0.125 × starts) + (0.25 × first_quartiles) + (0.25 × second_quartiles) + (0.25 × third_quartiles) + (0.125 × completions))∕starts) The average view time expressed as a percentage of the total possible view time.
fill_rate double 85.00 (imps_resold+imps_kept)/total_ad_requests The percentage of total impressions (both resold and retained) out of the total number of ad requests sent to Xandr for auction.

Creative frequency buckets

Bucket ID Bucket Name
-2 "no-cookie-date"
-1 "no-cookie"
0 "0"
1 "1"
2 "2-5"
3 "6-10"
4 "11-20"
5 "21-40"
6 "41-60"
7 "61-100"
8 "101-150"
9 "151-250"
10 "251-500"
11 "500+"

Creative recency buckets

Bucket ID Bucket Name
-2 "no-cookie-date"
-1 "no-cookie"
0 "< 1 minute"
1 "1-5 minutes"
2 "5-15 minutes"
3 "15-30 minutes"
4 "30-60 minutes"
5 "1-4 hours"
6 "4-12 hours"
7 "12-24 hours"
8 "1-2 days"
9 "2-7 days"
10 "8-14 days"
11 "14-30 days"

Video playback method

Method ID Method
0 Unknown
1 Auto-play, sound on
2 Auto-play, sound off
3 Click-to-play
4 Mouse-over
5 Auto-play, sound unknown

Video context

Method ID Method
0 Unknown
1 Pre-roll
2 Mid-roll
3 Post-roll
4 Outstream

Player size

ID Name
0 small
1 medium
2 large

Examples

Create a JSON formatted report request

The JSON file should include the report_type of "video_analytics_network", as well as the columns (dimensions and metrics) and report_interval that you want to retrieve. You can also filter for specific dimensions, define granularity (year, month, day), and specify the format in which the data should be returned (csv, excel, or html). For a full explanation of fields that can be included in the JSON file, see the Report Service.

$ cat video_analytics_network

{
    "report":
    {
        "report_type":"video_analytics_network",
        "columns":[
            "hour",
            "seller_member_id",
            "buyer_member_id",
            "advertiser_id",
            "publisher_id",
            "imps",
            "ad_requests",
            "ad_responses",
            "25_pcts",
            "completions",
            "completion_rate",
            "convs_rate"
        ],
        "report_interval":"last_48_hours",
        "format":"csv"
    }
}

POST the request to the reporting service

$ curl -b cookies -c cookies -X POST -d @video_analytics_network 'https://api.appnexus.com/report'
{
   "response":{
      "status":"OK",
      "report_id":"097f59fc3ab7d02c5d60db42081d9b69"
   }
}

GET the report status from the report service

Make a GET call with the report ID to retrieve the status of the report. Continue making this call until the execution_status is "ready". Then use the report-download service to save the reporting data to a file (described in the next step).

$ curl -b cookies -c cookies 'https://api.appnexus.com/report?id=097f59fc3ab7d02c5d60db42081d9b69'
{
   "response":{
      "status":"OK",
      "report":{
         "name":null,
         "created_on":"2010-05-25 19:19:53",
         "json_request":"{\"report\":{\"report_type\":\"video_analytics_network\",\"columns\":[\"hour\",\"seller_member_id\",
   \"buyer_member_id\",\"advertiser_id\",\"publisher_id\",\"imps\",\"25_pcts\",\"completions\",\"completion_rate\",\"convs_rate\"],
            \"row_per\":[\"hour\",\"seller_member_id\",\"buyer_member_id\",\"advertiser_id\",\"publisher_id\"],
            \"report_interval\":\"last_48_hours\"}}",
         "url": "report-download?id=b97897a7864dd8f34e7457226c7af592"
      },
      "execution_status":"ready"
   }
}

GET the report data from the report download service

To download the report data to a file, make another GET call with the Report ID, but this time to the report-download service. You can find the service and Report ID in the url field of the previous GET response. When identifying the file that you want to save to, be sure to use the file extension of the "format" that you specified in your initial POST.

Note

If an error occurs during download, the response header will include an HTTP error code and message. Use -i or -v in your call to expose the response header.

$ curl -b cookies -c cookies 'https://api.appnexus.com/report-download?id=b97897a7864dd8f34e7457226c7af592' > /tmp/video_analytics_network.csv

Note

There is a limit of 100,000 rows per report when you download them as XLSX and Excel file.