The BenchmarksService enables advertisers and agencies to
compare their YouTube ad performance against industry benchmarks.
Using this service, you can evaluate how your campaigns perform relative to
industry verticals or across all advertisers in specific product and service
categories.
Key capabilities
With the BenchmarksService, you can:
- Compare performance: Evaluate a customer's average rate metrics (such as CPM, CPV, CTR, and viewability) against aggregated industry averages.
- Analyze market share: Understand a customer's relative market presence through share of voice (relative impressions) and share of spend.
- Evaluate competitive standing: Measure a customer's competitive position using percentile metrics that classify performance across key dimensions into competitive tiers (such as Market Leader or Competitor).
- Segment by time: Group benchmark metrics by weekly, monthly, or quarterly time granularities.
- Discover supported benchmark dimensions: Query available date ranges, geographic locations, advertising products, and benchmark sources (industry verticals or product and service categories).
Discovery methods
Before generating benchmark metrics, use the discovery methods to retrieve the valid parameters and scoping criteria for your requests.
List available dates
The ListBenchmarksAvailableDates
method returns the historical date ranges that support benchmark data in a
ListBenchmarksAvailableDatesResponse.
The response provides two distinct date ranges:
supported_dates: The overall date range where benchmark metrics are supported (inclusive). Benchmark requests can query dates within this range.supported_dates_for_all_metrics: A subset ofsupported_datesthat supports the full set of benchmark metrics. Certain metrics—specifically customer share metrics (share_of_voiceandshare_of_spend) and average rate metrics of the benchmark source—are only available within this date range due to limited data availability. These metrics are omitted from the response if the requesteddate_rangedoes not fall completely withinsupported_dates_for_all_metrics.
List locations
The ListBenchmarksLocations method returns the list
of geographic locations (such as countries) that support benchmark data.
Each BenchmarksLocation in the response includes:
location_name: The unique location name in English (for example,"United States").location_type: The location type corresponding to thetarget_typein the Google Ads API (for example,"Country").location_info: ALocationInfoobject containing the geographic target constant (such asgeo_target_constant: "geoTargetConstants/2840").
List products
The ListBenchmarksProducts method returns the list
of products and marketing objectives available for benchmarking.
Each BenchmarksProductMetadata entry includes:
product_name: The user-friendly product name.product_code: The unique identifier string for the product, used when constructing aProductFilter.marketing_objective: The associated marketing objective (BenchmarksMarketingObjective):AWARENESS: Campaigns designed to increase brand or product awareness.CONSIDERATION: Campaigns designed to encourage potential customers to consider the brand or products.ACTION: Campaigns designed to drive a specific conversion action.
List benchmarks sources
The ListBenchmarksSources method retrieves available
benchmark sources. Specify the source types to retrieve using
BenchmarksSourceType:
INDUSTRY_VERTICAL: Classifications of industry segments (for example, "Technology" or "Finance").CATEGORY: Product & Service Categories (for example, "/Apparel/Clothing"). Categories can be used as filters to scope benchmarking when comparing against all advertisers.
The response returns a list of
BenchmarksSourceMetadata objects containing
either:
IndustryVerticalInfo: Containsindustry_vertical_name,industry_vertical_id, andparent_industry_vertical_id(if applicable).CategoryInfo: Containscategory_name,category_id, andcategory_path(the full category hierarchy).
Generate benchmark metrics
Call GenerateBenchmarksMetrics to compare a
customer's YouTube ad metrics against industry benchmarks.
Request parameters
A GenerateBenchmarksMetricsRequest scopes
the analysis. At a minimum, you must specify a client customer_id, geographic
location, a benchmarks_source (such as a specific industry vertical or all
advertisers scoped by category_filter), and a product_filter. You can
optionally provide a date_range, group metrics with a breakdown_definition,
specify a currency_code, or request additional features such as
PERCENTILE_DATA through supplemental_data.
For full parameter definitions and requirements, refer to the
GenerateBenchmarksMetricsRequest reference
documentation.
Date breakdowns
You can group metrics by setting breakdown_definition.date_breakdown using
BenchmarksTimeGranularity:
WEEK: Aggregates metrics by week. Thedate_rangemust start on a Sunday and end on a Saturday (note that this differs from ISO 8601).MONTH: Aggregates metrics by month. Thedate_rangemust start on the first day of the month and end on the last day of the month.QUARTER: Aggregates metrics by calendar quarter. Thedate_rangemust start on the first day of the quarter and end on the last day of the quarter.
Response metrics
The GenerateBenchmarksMetricsResponse
returns:
customer_metrics: Metrics representing a customer's YouTube ad performance, includingaverage_rate_metrics,share_metrics,aggregate_metrics, andpercentile_metrics.average_benchmarks_metrics: Aggregated rate metrics (RateMetrics) across the selected benchmark source.breakdown_metrics: A list of metrics segmented by the breakdowns defined inbreakdown_definition.
For complete field specifications, refer to the
GenerateBenchmarksMetricsResponse
reference documentation.
Percentile metrics
Percentile metrics represent a customer's competitive standing as percentile tiers among other advertisers within the scoped analysis.
Prerequisites
To retrieve percentile metrics, your request must meet the following requirements:
- Benchmarks source:
benchmarks_sourcemust selectall_advertisers = true. - Category filter:
category_filtermust be provided, containing one or more validcategory_idsretrieved fromListBenchmarksSources. - Supplemental data: You must add
PERCENTILE_DATAto thesupplemental_datafield inGenerateBenchmarksMetricsRequest.
Percentile tiers
A customer's performance is classified into one of the
BenchmarksCustomerPercentileTier enum
values (ranging from DEVELOPING for the lower tiers up to MARKET_LEADER
for top-performing advertisers). For a description of each tier and its
percentile boundaries, refer to the
BenchmarksCustomerPercentileTier reference
documentation.
Example request
The following example illustrates a REST JSON request payload to generate benchmark metrics with percentile tiers for a user comparing their customer's YouTube ads performance against other advertisers running ads in the /Apparel/Clothing category:
{
"customer_id": "1234567890",
"location": {
"geo_target_constant": "geoTargetConstants/2840"
},
"benchmarks_source": {
"all_advertisers": true
},
"category_filter": {
"category_ids": ["10176"]
},
"product_filter": {
"marketing_objective_list": {
"marketing_objectives": ["AWARENESS", "CONSIDERATION"]
}
},
"supplemental_data": [
"PERCENTILE_DATA"
]
}
The response including the additional percentile data requested:
{
"customer_metrics": {
"average_rate_metrics": {
"average_cpm": 5.42,
"click_through_rate": 0.0185
},
"share_metrics": {
"share_of_voice": 0.0345,
"share_of_spend": 0.0410
},
"aggregate_metrics": {
"cost": 15200.0,
"impressions": 2800000.0,
"clicks": 51800.0
},
"percentile_metrics": {
"cost_percentile_tier": "STRONG_COMPETITOR",
"impressions_percentile_tier": "STRONG_COMPETITOR",
"clicks_percentile_tier": "MARKET_LEADER",
"video_trueview_views_percentile_tier": "COMPETITOR",
"viewable_impressions_percentile_tier": "STRONG_COMPETITOR",
"interactions_percentile_tier": "MARKET_LEADER",
"engagements_percentile_tier": "COMPETITOR"
}
},
"average_benchmarks_metrics": {
"average_rate_metrics": {
"average_cpm": 6.15,
"click_through_rate": 0.0142
}
}
}
Error handling
When calling the BenchmarksService, you may encounter errors specific to
benchmarks queries in BenchmarksError:
MAX_QUERY_COMPLEXITY_EXCEEDED: The combination of requested inputs is too complex to process. To reduce query complexity:- Select a more specific or granular benchmark source or category filter.
- Shorten the requested
date_range. - Reduce the number of products in
product_filter.
NO_METRICS_FOUND: No metrics were found for the requested combination of inputs (for example, a niche category in a specific location and date range where no advertisers ran campaigns). Try adjusting the category, location, date range, or products.
For general API error handling and best practices, refer to the Error handling guide.