Skip to content

GAQL Query Reference

John Williams edited this page Mar 6, 2026 · 1 revision

GAQL Query Reference

All 47 Google Ads Query Language queries used by the agent, organized by resource type.

Customer

account_summary

SELECT customer.descriptive_name, customer.id, customer.currency_code,
       customer.time_zone, customer.manager,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.conversions_value,
       metrics.all_conversions, metrics.ctr, metrics.average_cpc,
       metrics.cost_per_conversion
FROM customer
WHERE segments.date DURING {dateRange}

daily_performance

SELECT segments.date,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.conversions_value, metrics.ctr,
       metrics.average_cpc
FROM customer
WHERE segments.date DURING {dateRange}
ORDER BY segments.date DESC

hourly_performance

SELECT segments.hour,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM customer
WHERE segments.date DURING LAST_7_DAYS

Campaign

list_campaigns

SELECT campaign.id, campaign.name, campaign.status,
       campaign.advertising_channel_type, campaign.bidding_strategy_type,
       campaign_budget.amount_micros,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.conversions_value, metrics.ctr,
       metrics.average_cpc, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

campaign_daily

SELECT campaign.name, campaign.id, segments.date,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.conversions_value
FROM campaign
WHERE segments.date DURING {dateRange}
ORDER BY segments.date DESC

list_budgets

SELECT campaign_budget.name, campaign_budget.id,
       campaign_budget.amount_micros, campaign.name, campaign.status,
       campaign_budget.delivery_method
FROM campaign_budget

impression_share

SELECT campaign.name,
       metrics.search_impression_share,
       metrics.search_budget_lost_impression_share,
       metrics.search_rank_lost_impression_share
FROM campaign
WHERE segments.date DURING {dateRange}

auction_insights

SELECT campaign.name, campaign.id,
       metrics.search_impression_share, metrics.cost_micros,
       metrics.impressions, metrics.clicks, metrics.conversions
FROM campaign
WHERE campaign.status = 'ENABLED'
  AND campaign.advertising_channel_type = 'SEARCH'
  AND segments.date DURING {dateRange}

video_campaign_performance

SELECT campaign.name, campaign.id,
       metrics.video_views, metrics.video_view_rate,
       metrics.video_quartile_p25_rate, metrics.video_quartile_p50_rate,
       metrics.video_quartile_p75_rate, metrics.video_quartile_p100_rate,
       metrics.average_cpv, metrics.cost_micros, metrics.impressions
FROM campaign
WHERE campaign.advertising_channel_type = 'VIDEO'
  AND segments.date DURING {dateRange}

Ad Group

list_ad_groups

SELECT ad_group.id, ad_group.name, ad_group.status, ad_group.type,
       campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.ctr, metrics.average_cpc
FROM ad_group
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

Ads

list_ads

SELECT ad_group_ad.ad.id, ad_group_ad.ad.type,
       ad_group_ad.ad_strength,
       ad_group_ad.ad.responsive_search_ad.headlines,
       ad_group_ad.ad.responsive_search_ad.descriptions,
       ad_group_ad.ad.final_urls,
       campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.ctr
FROM ad_group_ad
WHERE segments.date DURING {dateRange}
ORDER BY metrics.impressions DESC

video_ad_performance

SELECT ad_group_ad.ad.id, ad_group_ad.ad.name,
       metrics.video_views, metrics.video_view_rate,
       metrics.average_cpv, metrics.cost_micros,
       metrics.impressions, metrics.clicks
FROM ad_group_ad
WHERE campaign.advertising_channel_type = 'VIDEO'
  AND segments.date DURING {dateRange}

Keywords

list_keywords

SELECT ad_group_criterion.keyword.text,
       ad_group_criterion.keyword.match_type,
       ad_group_criterion.quality_info.quality_score,
       ad_group_criterion.criterion_id,
       campaign.name, ad_group.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.ctr, metrics.average_cpc
FROM keyword_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

quality_score_report

SELECT ad_group_criterion.keyword.text,
       ad_group_criterion.quality_info.quality_score,
       ad_group_criterion.quality_info.creative_quality_score,
       ad_group_criterion.quality_info.post_click_quality_score,
       ad_group_criterion.quality_info.search_predicted_ctr,
       campaign.name, metrics.impressions
FROM keyword_view
WHERE ad_group_criterion.quality_info.quality_score IS NOT NULL
  AND segments.date DURING {dateRange}
ORDER BY metrics.impressions DESC

Search Terms

list_search_terms

SELECT search_term_view.search_term, search_term_view.status,
       campaign.name, ad_group.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.ctr
FROM search_term_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC
LIMIT 200

wasted_spend

SELECT search_term_view.search_term,
       campaign.name, ad_group.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM search_term_view
WHERE segments.date DURING {dateRange}
  AND metrics.conversions = 0
  AND metrics.cost_micros > 0
ORDER BY metrics.cost_micros DESC
LIMIT 100

Demographics & Audiences

age_performance

SELECT age_range_view.resource_name, ad_group_criterion.age_range.type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM age_range_view
WHERE segments.date DURING {dateRange}

gender_performance

SELECT gender_view.resource_name, ad_group_criterion.gender.type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM gender_view
WHERE segments.date DURING {dateRange}

parental_status_performance

SELECT parental_status_view.resource_name,
       ad_group_criterion.parental_status.type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM parental_status_view
WHERE segments.date DURING {dateRange}

income_performance

SELECT income_range_view.resource_name,
       ad_group_criterion.income_range.type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM income_range_view
WHERE segments.date DURING {dateRange}

list_audiences

SELECT campaign_audience_view.resource_name, campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM campaign_audience_view
WHERE segments.date DURING {dateRange}

ad_group_audience_performance

SELECT ad_group_audience_view.resource_name,
       ad_group.name, campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM ad_group_audience_view
WHERE segments.date DURING {dateRange}

list_user_lists

SELECT user_list.name, user_list.id, user_list.type,
       user_list.size_for_search, user_list.size_for_display,
       user_list.membership_status
FROM user_list

Geographic & Device

geo_performance

SELECT geographic_view.country_criterion_id,
       geographic_view.location_type, campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM geographic_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC
LIMIT 100

device_performance

SELECT campaign.name, segments.device,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.ctr
FROM campaign
WHERE segments.date DURING {dateRange}

Shopping & PMax

shopping_performance

SELECT segments.product_item_id, segments.product_title,
       segments.product_brand, segments.product_type_l1,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions, metrics.conversions_value
FROM shopping_performance_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

product_group_performance

SELECT ad_group.name, campaign.name,
       ad_group_criterion.listing_group.type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM product_group_view
WHERE segments.date DURING {dateRange}

list_asset_groups

SELECT asset_group.name, asset_group.id, asset_group.status,
       asset_group.performance_label, campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM asset_group
WHERE segments.date DURING {dateRange}

pmax_asset_performance

SELECT asset_group.name, asset_group_asset.asset,
       asset_group_asset.field_type,
       asset_group_asset.performance_label
FROM asset_group_asset

pmax_listing_groups

SELECT asset_group_listing_group_filter.type,
       asset_group_listing_group_filter.vertical,
       asset_group.name
FROM asset_group_listing_group_filter

Placements & Topics

placement_performance

SELECT detail_placement_view.display_name,
       detail_placement_view.target_url,
       detail_placement_view.placement_type,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM detail_placement_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

topic_performance

SELECT topic_view.resource_name, campaign.name, ad_group.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM topic_view
WHERE segments.date DURING {dateRange}

Conversions & Extensions

list_conversions

SELECT conversion_action.id, conversion_action.name,
       conversion_action.type, conversion_action.category,
       conversion_action.status,
       metrics.conversions, metrics.conversions_value,
       metrics.all_conversions
FROM conversion_action
WHERE segments.date DURING {dateRange}

conversion_action_detail

SELECT conversion_action.name, conversion_action.id,
       conversion_action.type, conversion_action.category,
       conversion_action.status, conversion_action.counting_type,
       conversion_action.attribution_model_settings.attribution_model,
       conversion_action.value_settings.default_value,
       conversion_action.value_settings.default_currency_code
FROM conversion_action

list_extensions

SELECT asset.name, asset.id, asset.type,
       asset.final_urls, asset.sitelink_asset.link_text,
       asset.callout_asset.callout_text,
       asset.structured_snippet_asset.header,
       asset.call_asset.phone_number
FROM asset
WHERE asset.type IN ('SITELINK', 'CALLOUT', 'STRUCTURED_SNIPPET', 'CALL')

Other

change_history

SELECT change_event.change_date_time,
       change_event.change_resource_type,
       change_event.resource_change_operation,
       change_event.user_email,
       change_event.old_resource, change_event.new_resource,
       campaign.name
FROM change_event
WHERE change_event.change_date_time DURING LAST_14_DAYS
ORDER BY change_event.change_date_time DESC
LIMIT 100

list_recommendations

SELECT recommendation.type,
       recommendation.impact.base_metrics.conversions,
       recommendation.impact.potential_metrics.conversions,
       recommendation.campaign, recommendation.resource_name
FROM recommendation
LIMIT 100

ad_schedule_performance

SELECT ad_schedule_view.resource_name, campaign.name,
       metrics.cost_micros, metrics.clicks, metrics.impressions,
       metrics.conversions
FROM ad_schedule_view
WHERE segments.date DURING {dateRange}

landing_page_performance

SELECT landing_page_view.unexpanded_final_url,
       metrics.clicks, metrics.impressions, metrics.cost_micros,
       metrics.conversions, metrics.mobile_friendly_clicks_percentage,
       metrics.speed_score
FROM landing_page_view
WHERE segments.date DURING {dateRange}
ORDER BY metrics.cost_micros DESC

list_experiments

SELECT experiment.name, experiment.experiment_id,
       experiment.status, experiment.start_date,
       experiment.end_date
FROM experiment

list_labels

SELECT label.name, label.id, label.status,
       label.text_label.background_color,
       label.text_label.description
FROM label

list_bidding_strategies

SELECT bidding_strategy.name, bidding_strategy.id,
       bidding_strategy.type, bidding_strategy.status,
       bidding_strategy.campaign_count,
       metrics.cost_micros, metrics.conversions
FROM bidding_strategy
WHERE segments.date DURING {dateRange}

list_campaign_criteria

SELECT campaign_criterion.criterion_id, campaign_criterion.type,
       campaign_criterion.negative, campaign_criterion.status,
       campaign_criterion.bid_modifier, campaign.name
FROM campaign_criterion

shared_budget_detail

SELECT campaign.name, campaign_budget.name,
       campaign_budget.amount_micros, campaign_budget.explicitly_shared,
       campaign.status
FROM campaign
WHERE campaign_budget.explicitly_shared = true

list_negative_keyword_lists

SELECT shared_set.name, shared_set.id, shared_set.type,
       shared_set.status, shared_set.member_count
FROM shared_set
WHERE shared_set.type = 'NEGATIVE_KEYWORDS'

Clone this wiki locally