Network advertiser video analytics

The Network Advertiser Video Analytics report can be used to view video event metrics for a specific advertiser that is more detailed than the data provided in the Network Video Analytics report. This report is available to network users only.

Note

Video metrics are recorded for VAST creatives only.

For usage instructions, see the Example below. Note that this report requires that an advertiser ID be specified as part of the URL, for example:

https://api.appnexus.com/report?advertiser_id=ADVERTISER_ID

Time frame

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

  • today
  • yesterday
  • last_24_hours
  • last_48_hours
  • last_2_days
  • last_7_days
  • last_14_days
  • last_30_days
  • last_available_day
  • last_7_available_days
  • last_14_available_days
  • last_30_available_days
  • month_to_date
  • month_to_yesterday
  • last_month
  • 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 date No "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 date No 2010-02-01 Day of the month.
month date date 2010-02 Month of the year.
seller_member_id int Yes 567 The internal ID of the selling member.
seller_member_name string No "AdMeld" The display name of the selling member.
seller_member string No "AdMeld (567)" Deprecated.
advertiser_id int Yes 344 The internal ID of the advertiser whose campaign and creative served in the impression.
campaign_id int Yes 728 Number to identify the campaign.
campaign_name string No "Test" Display name of the campaign
campaign string No "Test (123)" Deprecated.
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_name will be "External Clicks" or "External Imps".
creative string No "Q1 2010 728x90 (554)" Deprecated.
placement_id int Yes 567 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 "Photos 728x90" 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 string No "Photos 728x90 (123)" Deprecated.
placement_code string No "Placement Code" The custom code for the placement.
deal_code string No External seller deal code The custom code for the deal. For deals with external supply partners, this string typically identifies the deal.
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.
size string Yes "728x90" Size of the creative/placement
geo_country string Yes "US" Geographic country code
geo_country_name string No "Unites States" Name of the country
creative_recency_bucket string Yes "11-20" The bucket for how recently the creative was displayed. See Creative Recency Buckets below for possible values.
creative_recency_bucket_id string No "4" The ID of the creative recency bucket. See Creative Recency Buckets below for possible values.
creative_frequency_bucket string Yes "15-30 minutes" 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.
insertion_order_id int Yes 654 The ID of the insertion order
insertion_order_name string No "Insertion Order Name" The name of the insertion order
insertion_order string No "Insertion Order Name (654)" Deprecated.
line_item_id int Yes 932 Number to identify the line item
line_item_name string No "$3 CPM Verizon Remarketing" Display name of the line item
line_item string No "$3 CPM Verizon Remarketing (932)" Deprecated.
publisher_id int Yes 321 Number to identify the publisher
publisher_name string No "Test" Display name of the publisher
publisher string No "Test (123)" Deprecated.
trafficker_for_insertion_order string Yes "Chris Mack" The trafficker for the insertion order. See the "labels" field in the Insertion Order Service for more details.
salesrep_for_insertion_order string Yes "Jonathan Smith" The sales rep for the insertion order. See the "labels" field in the Insertion Order Service for more details.
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.
application_id string Yes '343200656' (iOS) or
com.rovio.angrybirds'(Android)
A targetable Apple App Store ID, Google Play package name, 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.
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, and 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.
video_delivery_type string No "vod" The type of streaming content delivery. For example, Video On Demand (VOD) and Live.

Note

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

  • video_content_genre
  • video_program_type
  • video_content_rating
  • video_content_duration
  • video_content_language
  • video_content_network
  • video_delivery_typ

Metrics

Column Type Example Formula Description
imps int 234123 imps The total number of impressions served.
clicks int 545 clicks The the total number of clicks across all impressions.
post_view_convs int 75 post_view_convs The total number of recorded post-view conversions.
post_click_convs int 15 post_click_convs The total number of recorded post-click conversions.
total_convs int 90 post_click_convs + post_view_convs The total number of post-view and post-click conversions.
convs_rate double 0.0003844 total_convs / imps The rate of conversions to impressions.
post_view_convs_rate double 0.000320 post_view_convs / imps The rate of post-view conversions to impressions.
post_click_convs_rate double 0.000064 post_click_convs / imps The rate of post-click conversions to impressions.
ctr double 0.2327836 clicks / imps The rate of clicks to impressions.
profit money 350.00 booked_revenue - total_cost Booked revenue minus total cost.
revenue_ecpm money 1.9221 booked_revenue / clicks The total revenue per 1000 impressions.
cost_ecpm money 0.4271259 media_cost / imps * 1,000 The cost per 1000 impressions.
profit_ecpm money 0.4949 profit/imps * 1,000 The profit per 1000 impressions. "Profit" is defined as booked revenue minus total cost.
revenue_ecpc money 0.8256 booked_revenue / clicks The total revenue per click.
revenue_ecpa money 5.00 booked_revenue / total_convs The total revenue per conversion.
cost_ecpc money 0.1834 media_cost / clicks The cost per click.
cost_ecpa money 1.1111 media_cost / total_convs The cost per acquisition/conversion.
profit_margin money 0.7778 profit/booked_revenue Profit divided by booked_revenue. "Profit" is defined as booked revenue minus total cost.
media_cost money 100.00 media_cost The total amount spent.
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.
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.
served int 87649 video impressions served The total number of video impressions served.

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.
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 1 consecutive second.
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)
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.
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.
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.

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

Example

Create a JSON report request

The JSON file should include the report_type of "video_analytics_network_advertiser", 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_advertiser

{"report":
    {
        "report_type":"video_analytics_network_advertiser",
        "columns":[
            "hour",
            "seller_member_id",
            "campaign_id",
            "imps",
            "starts",
            "75_pcts",
            "completions",
            "cost_per_video_complete",
            "served"
        ],
        "report_interval":"last_48_hours",
        "format":"csv"
    }
}

POST the request to the reporting service

POST the JSON request to get back a report ID.

$ curl -b cookies -c cookies -X post -d @video_analytics_network_advertiser "https://api.appnexus.com/report?advertiser_id=690"

{
   "response":{
      "status":"OK",
      "report_id":"09b6979a6a4c3805bdac8921378d3622"
   }
}

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=09b6979a6a4c3805bdac8921378d3622'

{
   "response":{
      "status":"OK",
      "report":{
         "name":null,
         "created_on":"2010-05-25 19:15:48",
         "json_request":"{\"report\":{\"report_type\":\"video_analytics_network_advertiser\",\"columns\":
          [\"hour\",\"seller_member_id\",\"campaign_id\",\"imps\",\"starts\",\"75_pcts\",
          \"completions\",\"cost_per_video_complete\",\"served\"],\"row_per\":
          [\"hour\",\"seller_member_id\",\"campaign_id\"],
          \"report_interval\":\"last_48_hours\",\"filters\":[{\"advertiser_id\":\"690\"}]}}",
         "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 response to your previous GET call. When identifying the file that you want to save to, be sure to use the file extension of the file 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_advertiser.csv

Note

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

Report Service