Docs menu
Get started
What is Opus GrowthQuickstartAdd to your AIHow it worksSafety and approvalCreditsPlansFAQAI apps
All AI appsChatGPTClaudeGrokPerplexityClaude CodeCodexGemini CLIOpenClawCursorVS CodeWindsurfOther MCPConnect ad platforms
Google AdsMeta AdsLinkedIn AdsMicrosoft AdvertisingTikTok AdsChatGPT AdsAgencies and MCCConnect data sources
Search ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWebsites and SEO
AI ServerWordPressSEO IntelligenceClick fraudTool reference
All toolsGoogle AdsMeta AdsTikTok AdsLinkedIn AdsMicrosoft AdvertisingChatGPT AdsSearch ConsoleGoogle AnalyticsYouTubeBusiness ProfileTag ManagerWordPressAI ServerSEO IntelligenceClick fraudCross-channelAccount and billingLanguage
Google Ads Query (GAQL)
Runs ANY read-only Google Ads Query Language (GAQL) SELECT against a connected Google Ads account and returns the raw rows — the escape hatch for data no other tool exposes: any resource (campaign, ad_group,…
- Type
- Reads only
- Credits
- 2
- Platform
- Google Ads
- Approval
- Not needed, nothing changes
What it does
Runs ANY read-only Google Ads Query Language (GAQL) SELECT against a connected Google Ads account and returns the raw rows — the escape hatch for data no other tool exposes: any resource (campaign, ad_group, ad_group_ad, ad_group_criterion, keyword_view, search_term_view, change_event, change_status, asset, conversion_action, customer_client, bidding_strategy, geographic_view, user_location_view, landing_page_view, recommendation, ...), any metric and any segment the Google Ads API supports. GAQL can only READ; it cannot change the account. Reference: https://developers.google.com/google-ads/api/docs/query/overview and the field list per resource at https://developers.google.com/google-ads/api/fields (for the API version this server runs; field names occasionally change between versions, campaign.start_date_time being one). Rules: a query starts with SELECT; metrics need a date filter or segments.date range for meaningful periods (WHERE segments.date DURING LAST_30_DAYS); money fields are in micros (÷1,000,000, account currency). list_entities / get_report return normalised statuses (is_serving) and currencies for the common questions. limit = rows to return in this response (no upper bound; 0 or empty = as many as fit in one response, about 380 KB). Every row the query matches is kept: total_rows is the full count, and when has_more is true, call again with page_token=next_page_token (query not needed) to get the next rows at no credit cost. customer_id empty = the default connected account.
MCP: google_ads_query
How to use it
You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.
Parameters
| Name | Type | Required | Default | |
|---|---|---|---|---|
| query | string | Optional | · | Search or report query used to filter or select results. |
| customer_id | string | Optional | · | Google Ads customer account ID to query or change. Use the numeric ID returned by list_accounts; omit separators unless this tool explicitly says otherwise. |
| limit | integer | Optional | 0 | Maximum number of rows returned in this response. When the result has_more flag is true, continue with next_page_token rather than assuming the list is complete. |
| page_token | string | Optional | · | Continuation token returned as next_page_token by a previous call. Leave empty for the first page; pass it unchanged to retrieve the cached next page. |
Related tools
account_auditAccount Snapshotaccount_snapshotAdd Keywordsadd_keywordsAdd Negative Keywordadd_negative_keywordAdd PMax Imagesadd_pmax_imagesApply Recommendationapply_recommendationBudget Pacing Alertsbudget_pacing_alertsCompetitor Adscompetitor_adsConnect Business Profileconnect_business_profile