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.
With Google Ads API v17 and later:
SELECT
campaign.id,
campaign.status,
campaign.bidding_strategy_type
FROM campaign
WHERE campaign.advertising_channel_type = DEMAND_GEN
With Google Ads API v16:
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
.
Ad-level reporting
There are three types of Demand Gen ads supported by the Google Ads API. Use these
queries with GoogleAdsService.SearchStream
to retrieve them.
With Google Ads API v17 and later:
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
With Google Ads API v16:
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
Asset-level reporting
Demand Gen campaigns have a specialized asset type for carousel ads.
Use
GoogleAdsService.SearchStream
to retrieve these assets.
With Google Ads API v17 and later:
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
With Google Ads API v16:
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
You can also retrieve metrics for DEMAND_GEN_CAROUSEL_CARD
assets.
With Google Ads API v17 and later:
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
With Google Ads API v16:
SELECT
asset.id,
asset.name,
asset.type,
metrics.impressions
FROM ad_group_ad_asset_view
WHERE ad_group_ad_asset_view.field_type = DISCOVERY_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`](/google-ads/api/reference/rpc/v18/GoogleAdsService#searchstream)