Get Google Ads Insights
adsap_google_get_insightsGet Google Ads performance insights for an account, at campaign, ad-group, or keyword level (cache-first with auto-refresh from Google). Returns an account summary with previous-period comparison, a sortable per-entity table, and an optional daily timeseries. Metrics on both the summary and every row: cost, impressions, clicks, conversions, conversions_value + derived roas/ctr/cpc/cpm/cost_per_conversion/cvr; all_conversions, all_conversions_value, cost_per_all_conversion, view_through_conversions, cross_device_conversions (all_* counts EVERY conversion action, conversions counts only the ones included in bidding); engagements, engagement_rate, interactions, interaction_rate; video_views (TrueView/YouTube), video_view_rate, avg_cpv, video_p25/p50/p75/p100_rate; youtube_comments, youtube_likes, youtube_shares (v25 social engagement on Shorts ads on YouTube — 0 outside YouTube/Shorts delivery); and the competitive set search_impression_share, search_lost_is_budget, search_lost_is_rank, top_impression_pct, abs_top_impression_pct. The competitive metrics are Search-network only and read 0 for Display/PMax/Video delivery. search_lost_is_budget is CAMPAIGN LEVEL ONLY (the Google API does not report it for ad groups or keywords) so the key is ABSENT at the other levels rather than 0; at campaign level impression share plus the two lost shares add up to 100%. quality_score (1-10, null when Google reports none) appears only at keyword level. When Google capped most days in range, meta.share_metrics_note is set and rows carry search_share_is_approximate: report those three share figures as estimates. ad_account_id is the bare 10-digit customer ID from adsap_google_list_ad_accounts. Keyword-level row ids are ":" — pass them as-is to adsap_google_set_entity_status / adsap_google_update_entity (entity_type keyword). Only entities with impressions in range appear (PMax has no ad groups/keywords by design). Note: Google reports plain Clicks/CTR/CPC (no Meta-style link-click split). For Meta insights use adsap_get_insights.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Aggregation level of the table rows (default campaign). ad_group and keyword ride the same cached sync — no extra API budget. | campaign |
| limit | No | Entity-table page size. | |
| cursor | No | ||
| date_to | No | Custom range end, YYYY-MM-DD. Use with date_from. | |
| refresh | No | Force a refresh from the Google Ads API even if the cache is fresh. Spends Google API budget. | |
| sort_dir | No | desc | |
| date_from | No | Custom range start, YYYY-MM-DD. Use with date_to. | |
| date_preset | No | Date range preset (default last_7d). Ignored when date_from/date_to are set. | |
| sort_column | No | Entity-table sort column. | cost |
| ad_account_id | Yes | Bare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). | |
| include_timeseries | No | Also return a per-day timeseries for the current range (for trend questions / charts). |