Report and optimize

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 = DISCOVERY

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

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

SELECT
  asset.id,
  asset.discovery_carousel_card_asset.marketing_image_asset,
  asset.discovery_carousel_card_asset.square_marketing_image_asset,
  asset.discovery_carousel_card_asset.portrait_marketing_image_asset,
  asset.discovery_carousel_card_asset.headline,
  asset.discovery_carousel_card_asset.call_to_action_text
FROM asset
WHERE asset.type = DISCOVERY_CAROUSEL_CARD

There are three types of Demand Gen ads supported by the Google Ads API. Use these queries with GoogleAdsService.SearchStream to retrieve them.

SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.discovery_multi_asset_ad.marketing_images,
  ad_group_ad.ad.discovery_multi_asset_ad.square_marketing_images,
  ad_group_ad.ad.discovery_multi_asset_ad.portrait_marketing_images,
  ad_group_ad.ad.discovery_multi_asset_ad.logo_images,
  ad_group_ad.ad.discovery_multi_asset_ad.headlines,
  ad_group_ad.ad.discovery_multi_asset_ad.descriptions,
  ad_group_ad.ad.discovery_multi_asset_ad.business_name,
  ad_group_ad.ad.discovery_multi_asset_ad.call_to_action_text,
  ad_group_ad.ad.discovery_multi_asset_ad.lead_form_only
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DISCOVERY_MULTI_ASSET_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.discovery_carousel_ad.business_name,
  ad_group_ad.ad.discovery_carousel_ad.logo_image,
  ad_group_ad.ad.discovery_carousel_ad.headline,
  ad_group_ad.ad.discovery_carousel_ad.description,
  ad_group_ad.ad.discovery_carousel_ad.call_to_action_text,
  ad_group_ad.ad.discovery_carousel_ad.carousel_cards
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DISCOVERY_CAROUSEL_AD
SELECT
  ad_group_ad.ad.id,
  ad_group_ad.ad.type,
  ad_group_ad.ad.discovery_video_responsive_ad.breadcrumb1,
  ad_group_ad.ad.discovery_video_responsive_ad.breadcrumb2,
  ad_group_ad.ad.discovery_video_responsive_ad.business_name,
  ad_group_ad.ad.discovery_video_responsive_ad.call_to_actions,
  ad_group_ad.ad.discovery_video_responsive_ad.descriptions,
  ad_group_ad.ad.discovery_video_responsive_ad.headlines,
  ad_group_ad.ad.discovery_video_responsive_ad.logo_images,
  ad_group_ad.ad.discovery_video_responsive_ad.long_headlines,
  ad_group_ad.ad.discovery_video_responsive_ad.videos,
FROM ad_group_ad
WHERE ad_group_ad.ad.type = DISCOVERY_VIDEO_RESPONSIVE_AD

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.