Skip to main content
POST
Get Brand Intelligence Seo 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:seo
Allowed value: "seo"
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.

position
ModuleDimensionRank · object[]
concentration
SeoVisibilityConcentration · object

★S2 — is the cohort's modelled organic traffic concentrated or spread.

top_domain is ONE name out of the domains holding the highest measured traffic; top_tied_count counts them inclusively (1 = it really is one domain). Without it, two domains at 50%/50% render as one dominating the cohort — the ★S2 twin of the tied_count disclosure on ModuleDimensionRank. None when nothing was measured, never 0.

table_stakes
SeoTableStakesPanel · object

★S3 — keywords the WHOLE measured cohort ranks for: the must-haves.

content_type_mix
SeoContentTypeMixPanel · object

★S6 — what KIND of page wins in this niche (classified ranking URLs).

keyword_intent_mix
SeoKeywordIntentMixPanel · object

★S5 — classified intent mix over the stored cohort keyword samples.

keywords_unclassified is a separate denominator: missing labels are not folded into a bucket and domains whose classification call failed are named under domains_not_measured rather than represented as zeros.

authority
SeoAuthoritySpreadPanel · object

★S8 — backlink/DR distribution and where the brand sits.

enabled mirrors DATAFORSEO_BACKLINKS_ENABLED; when it is off the authority metrics were never bought, so the panel is not measured rather than a cohort of zeros.

gaps
SeoGapsPanel · object

★S9 — the cohort ranks, you don't.

Rows come from DataForSEO's own server-side exclusion query (domain_intersection with intersections: false), so a keyword the brand ranks for at position 240 is not reported as a gap. semantics names that contract; an empty string means the stored snapshot predates it.

weaknesses
SeoWeaknessesPanel · object

★S10 — shared keywords where a competitor MATERIALLY outranks the brand.

The thresholds are the free SEO audit's, imported rather than copied, so BI and the audit can never disagree on what "materially outranks" means.

findings
ModuleRuleFinding · object[]
estimate_notice
string
default:""