Report and optimize

  • Demand Gen campaign reporting data can be accessed through the Google Ads API, with campaign and ad-level details available via GoogleAdsService.SearchStream.

  • Demand Gen entities were renamed from discovery to demand_gen in Google Ads API v17, affecting campaign and ad type queries.

  • Three Demand Gen ad types are supported: DEMAND_GEN_MULTI_ASSET_AD, DEMAND_GEN_CAROUSEL_AD, and DEMAND_GEN_VIDEO_RESPONSIVE_AD, each with specific attributes retrievable through the API.

  • Demand Gen carousel ads utilize a dedicated asset type, DEMAND_GEN_CAROUSEL_CARD, for which asset-level reporting and metrics can be accessed.

  • "Demand Gen video ad (legacy)" ads visible in the Google Ads interface are not supported by the Google Ads API.

Reporting information for Demand Gen campaigns can be retrieved at different levels, similar to other campaign types.

Campaign-level reporting

As with other campaign types, you can use GoogleAdsService.SearchStream to retrieve attributes and performance metrics for Demand Gen campaigns.

SELECT
  campaign.id,
  campaign.status,
  campaign.bidding_strategy_type
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN

To retrieve clicks in reporting for Demand Gen campaigns, filter by click_type of CROSS_NETWORK.

Ad-level reporting

The Google Ads API supports three types of Demand Gen ads. Use these queries with GoogleAdsService.SearchStream to retrieve them.

SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_multi_asset_ad.marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.square_marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.portrait_marketing_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.logo_images,
  ad_group_ad.ad.demand_gen_multi_asset_ad.headlines,
  ad_group_ad.ad.demand_gen_multi_asset_ad.descriptions,
  ad_group_ad.ad.demand_gen_multi_asset_ad.business_name,
  ad_group_ad.ad.demand_gen_multi_asset_ad.call_to_action_text,
  ad_group_ad.ad.demand_gen_multi_asset_ad.lead_form_only
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_MULTI_ASSET_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_carousel_ad.business_name,
  ad_group_ad.ad.demand_gen_carousel_ad.logo_image,
  ad_group_ad.ad.demand_gen_carousel_ad.headline,
  ad_group_ad.ad.demand_gen_carousel_ad.description,
  ad_group_ad.ad.demand_gen_carousel_ad.call_to_action_text,
  ad_group_ad.ad.demand_gen_carousel_ad.carousel_cards
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_CAROUSEL_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.demand_gen_video_responsive_ad.breadcrumb1,
  ad_group_ad.ad.demand_gen_video_responsive_ad.breadcrumb2,
  ad_group_ad.ad.demand_gen_video_responsive_ad.business_name,
  ad_group_ad.ad.demand_gen_video_responsive_ad.call_to_actions,
  ad_group_ad.ad.demand_gen_video_responsive_ad.descriptions,
  ad_group_ad.ad.demand_gen_video_responsive_ad.headlines,
  ad_group_ad.ad.demand_gen_video_responsive_ad.logo_images,
  ad_group_ad.ad.demand_gen_video_responsive_ad.long_headlines,
  ad_group_ad.ad.demand_gen_video_responsive_ad.videos
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DEMAND_GEN_VIDEO_RESPONSIVE_AD

Asset-level reporting

Demand Gen campaigns have a specialized asset type for carousel ads. Use GoogleAdsService.SearchStream to retrieve these assets.

SELECT
  asset.id,
  asset.demand_gen_carousel_card_asset.marketing_image_asset,
  asset.demand_gen_carousel_card_asset.square_marketing_image_asset,
  asset.demand_gen_carousel_card_asset.portrait_marketing_image_asset,
  asset.demand_gen_carousel_card_asset.headline,
  asset.demand_gen_carousel_card_asset.call_to_action_text
FROM asset
WHERE asset.type = DEMAND_GEN_CAROUSEL_CARD

You can also retrieve metrics for DEMAND_GEN_CAROUSEL_CARD assets.

SELECT
  asset.id,
  asset.name,
  asset.type,
  metrics.impressions
FROM ad_group_ad_asset_view
WHERE ad_group_ad_asset_view.field_type = DEMAND_GEN_CAROUSEL_CARD

Unsupported entities

Ads that show up in the Google Ads frontend with ad type "Demand Gen video ad (legacy)" are not supported by the Google Ads API and won't be returned by GoogleAdsService.SearchStream.