Skip to Content
Tool referenceGet Google Ads insights

Get Google Ads insights (adsap_google_get_insights)

Platform: Google Ads · Read or write: Read · Plan: All plans · Consumes a task: No · Preview supported: No

What it does

Reports Google Ads performance at campaign, ad group or keyword level for a date range. You get an account summary with a previous-period comparison, a sortable table per entity, and an optional daily series. Metrics cover cost, clicks, conversions, value, video views, engagement and Search impression share.

When to use it

  • Use it for Google Ads results over a date range. The default is last_7d at campaign level, sorted by cost.
  • It reads the Adsap cache first. It refreshes from Google when the cache is over one hour old, when the range is not covered, or when refresh is true.
  • Money fields such as cost, cpc and cost_per_conversion are amounts in the account currency, named in meta.currency.
  • At keyword level each row id reads <ad_group_id>:<criterion_id>. Pass it as is to adsap_google_set_entity_status or adsap_google_update_entity.
  • It does not split conversions by action or list search queries. Use adsap_google_get_conversion_breakdown or adsap_google_search_terms.

Worked example

You ask

“How did the campaigns in Google Ads account 1234567890 do over the last 7 days, compared with the week before?”

The assistant calls adsap_google_get_insights

{ "ad_account_id": "1234567890", "level": "campaign", "date_preset": "last_7d", "sort_column": "cost", "sort_dir": "desc" }

Adsap returns

The field names are the ones Adsap returns. The values are examples.

{ "ok": true, "data": { "summary": { "current": { "cost": 1250.4, "impressions": 84000, "clicks": 2100, "conversions": 63, "conversions_value": 5040, "roas": 4.03 }, "previous": { "cost": 1100, "impressions": 80000, "clicks": 1900, "conversions": 50, "conversions_value": 4000, "roas": 3.64 }, "change_pct": { "cost": 13.67, "impressions": 5, "clicks": 10.53, "conversions": 26, "conversions_value": 26, "roas": 10.71 } }, "campaigns": [ { "id": "21000000001", "name": "Spring sale", "cost": 800.4, "impressions": 50000, "clicks": 1300, "conversions": 45, "conversions_value": 3780, "roas": 4.72, "cpc": 0.62, "search_impression_share": 62.5, "search_lost_is_budget": 12.5, "search_lost_is_rank": 25 }, { "id": "21000000002", "name": "Summer collection", "cost": 450, "impressions": 34000, "clicks": 800, "conversions": 18, "conversions_value": 1260, "roas": 2.8, "cpc": 0.56, "search_impression_share": 40, "search_lost_is_budget": 35, "search_lost_is_rank": 25 } ] }, "meta": { "is_stale": false, "last_refreshed_at": "2026-09-18T08:05:00+00:00", "next_cursor": null, "total_count": 2, "currency": "USD", "date_range": { "from": "2026-09-11", "to": "2026-09-17" }, "previous_period": { "from": "2026-09-04", "to": "2026-09-10" }, "level": "campaign", "source": "cache" }, "human_readable_summary": "Google Ads account 1234567890, 2026-09-11 to 2026-09-17 (USD): cost 1250.4, 84000 impressions, 2100 clicks, 63 conversions (value 5040), ROAS 4.03. 2 campaign(s) with impressions in range." }

How to read it

The example shows a subset of the metrics. summary.current is the requested range and summary.previous is the same number of days right before it. change_pct is the percentage change, or null when the previous value is 0. The rows sit under campaigns, ad_groups or keywords, depending on level.

The three share fields are percentages and add up to 100 at campaign level. Here “Summer collection” loses 35 percent of eligible Search impressions to budget, a case for a budget review. meta.source reads cache or google_live_refresh. When meta.next_cursor is set, pass it as cursor for the next page.

Parameters

Descriptions are shortened from the tool schema. Your assistant sees the full text.

NameTypeRequiredDescription
levelone of campaign, ad_group, keywordNoAggregation level of the table rows (default campaign). ad_group and keyword ride the same cached sync: no extra API budget.
ad_account_idstringYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts).
date_presetone of today, yesterday, last_7d, last_14d, last_30d, this_month, last_monthNoDate range preset (default last_7d). Ignored when date_from/date_to are set.
date_fromstringNoCustom range start, YYYY-MM-DD. Use with date_to.
date_tostringNoCustom range end, YYYY-MM-DD. Use with date_from.
sort_columnone of entity_name, cost, impressions, clicks, conversions, conversions_value, roas, ctr and 29 moreNoEntity-table sort column.
sort_dirone of asc, descNo
limitnumberNoEntity-table page size.
cursorstringNo
include_timeseriesbooleanNoAlso return a per-day timeseries for the current range (for trend questions / charts).
refreshbooleanNoForce a refresh from the Google Ads API even if the cache is fresh. Spends Google API budget.

Example prompts

  • “How did my Google Ads perform last week compared with the week before?”
  • “Show me my top 10 keywords by conversions this month, with quality score.”
  • “Give me a daily cost and conversion trend for my Search campaigns since September 1.”
  • “Which Google campaigns are losing impression share to budget?”

Notes

Impression share figures are Search-only and read 0 for Display, Performance Max and video delivery. Lost share to budget exists at campaign level only. Only entities with impressions in the range appear.

  • adsap_google_get_account_activities: Change history for a Google Ads account: who changed what, and when.

Guide

Read Insights and reporting for the workflow around this tool, and the Tool reference for every tool.

The Google Ads MCP server  page shows how to connect Google Ads to Claude, ChatGPT or Perplexity.

Last updated on