get_campaign_targeting

Google Ads Read

Full targeting view for a Google Ads campaign — locations, languages, demographics, audiences, devices, ad schedule, topics, placements, keywords, AND negative variants of each

Endpoint

POST https://api.adspirer.ai/api/v1/tools/get_campaign_targeting/execute

Headers

Description

Full targeting view for a Google Ads campaign — locations, languages, demographics, audiences, devices, ad schedule, topics, placements, keywords, AND negative variants of each. This tool retrieves READ-ONLY data via 2 GAQL queries (cached 15 min in Redis). Safe to call multiple times. **Returns sections (only the ones with data are rendered):** - 📍 **Locations** — geo target constants + bid modifiers - 🌐 **Languages** — language constants - 👥 **Demographics** — gender, age range, parental status, income range (campaign or ad-group level, with bid modifiers) - 🎯 **Audiences** — user lists (remarketing), user interests (in-market/affinity), custom audiences, combined audiences, AUDIENCE resource - 📱 **Devices** — device type + bid modifier - ⏰ **Ad Schedule** — day of week + hour window + bid modifier - 📺 **Topics** — topic constants (Display) - 🌐 **Placements** — managed placement URLs (Display) - 🔑 **Keywords** — keyword text + match type - 🚫 **Negatives** — exclusion list across the same dimensions **Parameters:** - campaign_id: The campaign ID (REQUIRED — get from list_campaigns) - customer_id: Optional (uses connected account if omitted) **Execution time:** 2-5 seconds (2 GAQL queries, then cached 15 min) **Use this tool when:** - User asks "what is this campaign targeting?" — covers ALL targeting axes - User asks "what audiences/demographics/devices does this campaign target?" - User wants ad schedule, placement, or topic exclusions - Before recommending targeting changes - To audit targeting setup post-creation **Out of scope (tracked separately):** - PMax `asset_group_signals` (different resource) - Customer-level negative criterion lists (account-wide negatives) - Shared negative keyword lists (separate resource) - 3rd-party brand safety / IVT services

Request body

All tool arguments are wrapped in an arguments object.

FieldTypeDescription
campaign_idstring requiredThe campaign ID to get location targeting for. Use list_campaigns first.
customer_idstring optionalGoogle Ads customer ID. Required for multi-account users. Get from get_connections_status.

Example request

{
  "arguments": {
    "campaign_id": "<campaign_id>",
    "customer_id": "string"
  }
}

Example responses

200 — Success

{
  "success": true,
  "data": {
    "text": "(tool-specific textual output for get_campaign_targeting)",
    "quota": {
      "used": 42,
      "limit": 150,
      "tier": "plus",
      "period_end": "2026-05-01"
    }
  },
  "tool": "get_campaign_targeting"
}

400 — Tool-level error (bad arguments / multi-account selection)

{
  "success": false,
  "error": "You have 25 meta_ads accounts connected. Please specify which account to use by passing the ad_account_id parameter:\n  - Acme Holdings (ad_account_id=\"act_123456789\")\n  - Acme EU (ad_account_id=\"act_987654321\")",
  "is_error": true,
  "tool": "get_campaign_targeting"
}

402 — Quota exhausted

{
  "success": false,
  "error": "\ud83d\udea8 Monthly limit reached (150/150 tool calls on Plus tier).\nUpgrade to Pro at https://adspirer.ai to keep building.",
  "is_error": true,
  "tool": "get_campaign_targeting",
  "quota": {
    "used": 150,
    "limit": 150,
    "tier": "plus",
    "period_end": "2026-05-01",
    "upgrade_url": "https://adspirer.ai"
  }
}

Try it live


Adspirer REST API — get an API key at adspirer.ai/keys · adspirer.ai