search
Execute read-only GAQL queries to retrieve Google Ads data like campaigns, ad groups, and performance metrics. Supports manager accounts with automatic child routing.
Instructions
Execute a read-only GAQL query and return flattened results. Workflow: list_accessible_customers() → get_resource_metadata(resource) → search()
If customer_id is a manager (MCC) account, this auto-routes to child accounts and annotates results with _source_customer_id and _source_customer_name — no manual child enumeration needed.
Field rules:
Use fully-qualified names: campaign.id (not id), metrics.clicks, segments.date
Dates: YYYY-MM-DD format with dashes
Relative ranges: DURING LAST_7_DAYS, LAST_30_DAYS, THIS_MONTH, THIS_QUARTER
Conditions are AND-combined
Ordering: 'field_name DIRECTION' (e.g. 'metrics.clicks DESC')
For change_event resource, limit max is 10000
Common conditions: campaign.status = 'ENABLED' campaign.advertising_channel_type = 'SEARCH' segments.date DURING LAST_30_DAYS metrics.impressions > 1000
Example — active campaigns with performance: customer_id='1234567890', resource='campaign', fields=['campaign.id', 'campaign.name', 'campaign.status', 'metrics.clicks', 'metrics.impressions', 'metrics.cost_micros'], conditions=["campaign.status = 'ENABLED'", 'segments.date DURING LAST_7_DAYS'], orderings=['metrics.clicks DESC'], limit=10
Args: customer_id: Numeric Google Ads customer ID (e.g. '1234567890'). Manager (MCC) accounts are auto-detected and routed. resource: GAQL resource name (e.g. 'campaign', 'ad_group', 'keyword_view'). fields: Fully-qualified field names to SELECT. conditions: WHERE clauses joined with AND (optional). orderings: ORDER BY clauses (optional). limit: Max results (default: 100, max varies by resource).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| fields | Yes | ||
| resource | Yes | ||
| orderings | No | ||
| conditions | No | ||
| customer_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |