calendar Last updated: 8 September 2026
Google Ads logo on a Windsor.ai branded cover graphic
Data integration
Data Pipelines
Google Ads
How to's

Google Ads API Guide: Resources, GAQL, and the No-Code Path

Try It Now

Connect your data in 1 min. Start free, no credit card

Got insights from this post? Give it a boost by sharing with others!

The Google Ads API doesn’t return one flat table. It splits your account’s data across separate resources, campaign performance, ad group performance, keyword criteria, conversion action metadata, and more, each queried with Google Ads Query Language (GAQL). That split is also the source of the connector’s most common error, fields from different resources refusing to combine in one request. Windsor.ai exposes the same underlying API as 2,542 flattened fields, reachable without writing GAQL or handling OAuth yourself.

The resource split, in API terms

Standard performance metrics (cost, clicks, impressions, conversions) live on the campaign and ad_group resources and combine freely with each other. Live keyword fields (Windsor’s keyword_text, keyword_match_type) sit on the same resource and join the standard metrics without issue. ad_group_criterion_* fields, by contrast, live entirely inside the ad_group_criterion resource: no metrics, no usable date segment, but campaign and ad group context are fine alongside them. Conversion action metadata (conversion_action_name, conversion_action_category, conversion_action_type) is rooted on the separate conversion_action resource, and Keyword Planner data (avg_monthly_searches, the raw keyword field) comes from an entirely different API service, not just a different resource. For the full breakdown of which fields conflict and how to split a query around each case, see the Google Ads “Fields Cannot Be Queried Together” Error: Troubleshooting Guide.

The canonical pull, API and no-code

The most common full pull, campaign, clicks, conversions, date, impressions, and spend, is a single GAQL query against the campaign resource:

SELECT campaign.id, campaign.name, metrics.clicks, metrics.conversions,
       metrics.impressions, metrics.cost_micros, segments.date
FROM campaign
WHERE segments.date DURING LAST_30_DAYS

The same pull through Windsor.ai, once Google Ads is connected, is a plain-language prompt to ChatGPT, Claude, or Copilot:

Pull campaign, clicks, conversions, date, impressions, and spend for my
Google Ads account over the last 30 days, grouped by campaign.

Most-requested fields, mapped to their resources

Beyond the canonical pull, the fields teams request most sit across a small number of resources. campaign_status, campaign_id, and campaign_primary_status_reasons come from campaign. The three impression-share fields, search_impression_share, search_budget_lost_impression_share, and search_rank_lost_impression_share, are campaign-level metrics segmented by the Search Network. conversions, all_conversions, and cost_per_conversion are standard metrics available at both the campaign and ad group level. keyword_text, keyword_match_type, and quality_score come from the ad group criterion’s keyword view, the live-keyword resource, not ad_group_criterion itself.

Authentication, without managing it yourself

A direct integration against the Google Ads API needs a developer token, OAuth client credentials, a refresh token, and a login customer ID, renewed and rotated on your own infrastructure. Connecting through Windsor.ai replaces that setup with a native one-click connection: authorize once, and the same 2,542 fields are available to an AI assistant or scheduled into Looker Studio, Power BI, or BigQuery.

Related reading

Tired of juggling fragmented data? Get started with Windsor.ai today to create a single source of truth

Let us help you automate data integration and AI-driven insights, so you can focus on what matters, growth strategy.
g logo
fb logo
big query data
youtube logo
power logo
looker logo