Skip to main content
POST
Get Brand Intelligence Google Ads Group Insights Route

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

brand_id
string<uuid>
required

Body

application/json
domains
string[]
Maximum array length: 60
group_label
string | null
Maximum string length: 120

Response

Successful Response

brand_id
string<uuid>
required
generated_at
string<date-time>
required
group_key
string
required
module
string
default:google-ads
Allowed value: "google-ads"
group_label
string | null
brand_domain
string | null
domains
string[]
cohort_domains
string[]
coverage
ModuleCoverageStrip · object

N-of-M acquisition coverage for one module's cohort (the ★S0/★C0 strip).

measured counts cohort domains that produced a stored metric row. missing are targets that never did — their fetch or persist failed, or they have not been acquired yet. For Content, fetch_failed is a typed subset of missing, not an additional shortfall, so clients must de-duplicate rather than sum those lengths. A competitor with a failed acquisition must render as a failure chip, never as a measured zero.

totals
GoogleAdsGroupTotals · object

Header-tile aggregates over MEASURED members only.

Every dollar/traffic/CPC figure is a DataForSEO MODEL — the D3 estimate notice ships with the payload so no renderer can forget it. Each metric carries its own measured-member count: a sum over 4 of 10 members must say so.

members
GoogleAdsMemberRow · object[]
brand_reference
GoogleAdsMemberRow · object | null

One measured member — feeds the leaderboard, positioning map and CPC/paid-dependence ladder from a single fetch.

momentum
GoogleAdsMomentumPanel · object

Windowed spend movement. History is event-driven (bootstrap + manual refresh), so sparse series are the EXPECTED state — members with fewer than two in-window measured points land in insufficient_history, never as a zero-change mover.

gap_consensus
GoogleAdsGapConsensusPanel · object

Keywords to steal — the cross-member union of stored gap lists.

union_count is a LOWER BOUND (each member's list is a <=200-row sample); consensus_count counts keywords >=2 members bid on, over the FULL union, never the rendered slice. promoted_keyword / displaced_keyword disclose the last-row substitution; both None means the rendered slice is exactly the top-ranked rows.

overlap_pressure
GoogleAdsOverlapPanel · object
ad_copy
GoogleAdsAdCopyPanel · object

What the group says in its ads — captured creatives per member, exact CTA frequency (deterministic, no LLM in the measured layer), and the observed-run-time hint for creatives that carried both dates.

findings
ModuleRuleFinding · object[]
estimate_notice
string
default:Estimated — modelled from competitor paid keywords (DataForSEO). Not actual competitor spend.