Brand Studio docs
Engineering manualAcquisition and cost

Missing-keyword comparisons

dataforseo · runnable · billing paged

FactValue
Providerdataforseo
Modulebase
Runnable todayYes — a quantity-bound adapter exists
API path/v3/dataforseo_labs/google/domain_intersection/live
Billing kindpaged
Price statusKnown — a published or measured rate is recorded
AvailabilityExecutable in selected plans; target and quantity bounds required
Query contractEnforced — the collector reads these parameters from the contract
Catalogue research date2026-09-07

Billing formula

What the provider charges for one request of this item. Provider cost is not the customer price and is not an account balance movement; the three are different numbers and this is the first of them.

sum_request((0.012 + 0.00012*returned_items_request)*clickstream_multiplier_request)

Rates

ComponentValue
task_usd0.012
returned_item_usd0.00012
clickstream_multiplier_off1
clickstream_multiplier_on2

Minimum charge: {"active_task_base_usd":"0.012"}

Provider limits: {"items_per_request":1000}

Rate verification: verified_published.

Caveat: Each offset/cursor request repeats the task fee; group by endpoint, target, location and language. include_clickstream_data=true doubles the applicable request cost.

Runtime limits

LimitValue
quantity10000
groups10

Frozen acquisition parameters

A gap is a keyword the rival actually ranks for and the target does not. intersections:false is correct for a gap query and is confirmed against the provider's documentation.

ParameterValue
Fixed parameters{"item_types":["organic"],"include_clickstream_data":false,"intersections":false}
Server-side filters[["first_domain_serp_element.rank_group","<=",20],"and",["keyword_data.keyword","not_regex","{{rival_brand_pattern}}"]]
Order by["keyword_data.keyword_info.search_volume,desc"]
Page window1000
Varies by targettarget1, target2, rival_brand_pattern

Changed in contract v1 (ACQ-1 / ACQ-2): Observed: one gap group returned 774 rows for $0.10488 of which the collector itself marked 773 raw_gap_not_recommended. The offenders were high-volume head terms where the rival sat at position 65 to 98. Ordering by volume is retained; the position constraint is what makes the ordering meaningful.

Evidence: VERIFIED 2026-09-14. The Phase 2 lane audit (Worker A, finding F3) flagged this filter as the campaign's weakest link, because first_domain_serp_element.rank_group does not appear in the domain_intersection ENDPOINT page's own examples, and a filter the provider silently ignores would make the highest-value change a no-op at full price. The endpoint page is not the authority on filters. DataForSEO's Labs filters reference, https://docs.dataforseo.com/v3/dataforseo_labs/filters/, declares "first_domain_serp_element.rank_group": "num" inside its own domain_intersection.google block, located by a balanced-brace scan of the embedded JSON. Quoted with the document hash in docs/plans/brand-studio-roadmap/query-contract-doc-verification-20260914.json. Zero spend. v6, 2026-09-25: the same reference declares "keyword_data.keyword": "str" in that domain_intersection.google block, lists not_regex among the str operators, states RE2 syntax with a 1000-character limit, and gives ["keyword_data.keyword", "not_regex", "(how|what|when)"] as its own example.

Open audit flags: Documentation proves the filter is supported. It does not prove a live response honoured it. One bounded call would settle that, and remains gated on the owner. · v6: the not_regex clause is documented, not yet observed in a live response. The report's isRivalBrandTerm backstop stays in place until a paid pull shows zero rival-brand rows.

Included in levels: Snapshot, Market, Deep.

Dated sources

  • https://dataforseo.com/pricing/dataforseo-labs/dataforseo-google-api (read 2026-09-07)
  • https://docs.dataforseo.com/v3/dataforseo_labs/google/domain_intersection/live/ (read 2026-09-07)

Notes from the catalogue

  • Each offset/cursor request repeats the task fee; group by endpoint, target, location and language. include_clickstream_data=true doubles the applicable request cost.

On this page