Docs
Search docs...⌘K

AI Responses

API + MCP
POST/v3/brand-radar/ai-responses

Requests to this endpoint consume API units based on the prompts parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.

Request body

selectarray<string>Required

A list of fields to return.

Example:["field_a","field_b"]
whereobject

The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the select parameter).

report_idstring

The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: https://app.ahrefs.com/brand-radar/reports/#report_id#/...

brandsarray<object>

A list of brand names and websites to search for.

Default:[]
At least one of names or url_groups is required
namesarray<string>

The names of the brand/competitor

Example:["ahrefs","ahrefs seo"]
url_groupsarray<object>
targetstring (domain)required

The domain of the target

Example:ahrefs.com
scopestringrequired

Scope of the target.

Allowed values:urlpathdomainsubdomains
competitorsarray<object>

A list of competitor names and websites to search for.

Default:[]
At least one of names or url_groups is required
namesarray<string>

The names of the brand/competitor

Example:["ahrefs","ahrefs seo"]
url_groupsarray<object>
targetstring (domain)required

The domain of the target

Example:ahrefs.com
scopestringrequired

Scope of the target.

Allowed values:urlpathdomainsubdomains
content_filterobject

Optional phrases used to include or exclude results based on their content.

includearray<string>

Only show results containing at least one of these exact phrases.

excludearray<string>

Hide results containing any of these exact phrases.

data_sourcearray<string>Required

A list of chatbot models. All models can be combined with each other. claude module supports only custom prompts.
The google_ai_overviews_keywords and google_ai_mode_keywords models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.

Allowed values:chatgptgoogle_ai_overviewsgoogle_ai_modegeminiperplexitycopilotclaudegrokgoogle_ai_overviews_keywordsgoogle_ai_mode_keywords
countryarray<string>

A list of two-letter country codes (ISO 3166-1 alpha-2).

Allowed values:adaeafagaialamaoarasatauawazba…
Default:[]
promptsstring

The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided.

Allowed values:ahrefscustom
limitinteger

The number of results to return.

Default:1000
datestring (date)

The date to search for in YYYY-MM-DD format.

date_comparedstring (date)

A date to compare date with, in YYYY-MM-DD format. Must be strictly earlier than date. When set, the report covers every prompt answered on either date and the status field reports how each one changed between them. A prompt answered only on date_compared is reported as lost, and the rest of its fields describe its date_compared response, since it has none on date.

order_by

How to order the results: a column, or how the responses talk about one brand, as the Sentiment page in Brand Radar can.

A column to order the results by.

Allowed values:relevancevolume
tags_filterobject

A filter expression for prompt tags. Requires report_id. Uses filter syntax with the following restrictions: the only valid field name is "tag"; the only valid operator are: "eq", "neq", "substring", "isubstring", "phrase_match", "iphrase_match", "prefix", "suffix", "empty"; maximum nesting depth of and, or is 2.

Example:{ "or": [ { "field": "tag", "is": [ "eq", "branded" ] }, { "field": "tag", "is": [ "eq", "competitor" ] } ] }
brand_filterobject

A filter expression for your brand's visibility, mirroring the "Your brand" filter. brand_name matches whether a response mentions your brand: "mentioned" or "not_mentioned". page_status matches how the AI used your pages: "cited" (the AI retrieved pages from your site and referenced them in the answer), "found_but_not_cited" (the AI retrieved pages from your site as potential sources but did not reference them in the final answer), or "not_found" (the AI did not retrieve any pages from your site).
Uses filter syntax with the following restrictions: the only valid operator is "eq"; each field is one section: give a single value, or combine several values of the same field with or; join the brand_name and page_status sections with a top-level and/or. Selecting every value of a field is rejected, since it matches everything (omit the field instead).

Example:{ "and": [ { "field": "brand_name", "is": [ "eq", "mentioned" ] }, { "or": [ { "field": "page_status", "is": [ "eq", "cited" ] }, { "field": "page_status", "is": [ "eq", "found_but_not_cited" ] } ] } ] }
volume_rangeobject

The volume range to filter by.

frominteger
tointeger
changesobject

Requires date_compared. Keeps only the prompts that changed in one of the ways selected here. The three columns are OR'd with each other, as are the values within each column, so an omitted or empty column adds nothing to the filter and an entirely empty object keeps every prompt.

promptarray<string>

Keep prompts that were answered on only one of the two dates (new, lost) or on both (no_change).

Allowed values:newlostno_change
mentionsarray<string>

Keep prompts where the set of your own brands mentioned in the response gained a brand (new), lost one (lost), or is identical on both dates (no_change). Competitors are not considered.

Allowed values:newlostno_change
citationsarray<string>

Keep prompts where the set of your own domains cited by the response gained a domain (new), lost one (lost), or is identical on both dates (no_change). Competitors are not considered.

Allowed values:newlostno_change
sentiment_filterobject

A filter on how the responses talk about your brands and competitors, like the Sentiment filter in Brand Radar. Uses filter syntax with three fields:

Available fields:
  • brand (required): a name from brands or competitors, with "eq".
  • sentiment (optional): positive, neutral, negative or mixed. With "eq", the brand is mentioned with this sentiment. With "neq", the brand is mentioned with a sentiment, but never this one. With "empty", the brand is never mentioned with a sentiment, which includes responses that don't mention it. With not "empty", the brand is mentioned with some sentiment. Without sentiment, any response that mentions the brand matches.
  • aspect (optional): what the sentiment is about, with "eq": features_specs, performance_effectiveness, price_value, reputation_popularity, quality_reliability, design_comfort, usability_compatibility, availability_delivery, safety_health, service_support or general.
    Each rule is about one brand: one condition, or an and of conditions. To combine rules, put each one in its own and and join them with a top-level and or or.
Example:{ "or": [ { "and": [ { "field": "brand", "is": [ "eq", "Adidas" ] }, { "field": "sentiment", "is": [ "eq", "negative" ] } ] }, { "and": [ { "field": "brand", "is": [ "eq", "Nike" ] }, { "field": "sentiment", "is": [ "eq", "positive" ] }, { "field": "aspect", "is": [ "eq", "price_value" ] } ] } ] }
opinions_firstboolean

Puts the responses with a positive, negative or mixed mention of a tracked brand before the others, each group by relevance, as the Sentiment page in Brand Radar lists them. Only with order_by relevance.

Default:false
outputstring

The output format.

Allowed values:jsonphp

Responses

ai_responsesarray<object>
brand_sentimentarray<object>

Every mention of a tracked brand in the response, your brands first and then the competitors in their order, with how the response talks about it.

brandstring

The tracked brand mentioned.

sentimentstring or null

How the response talks about the brand at this mention. Null when it isn't available.

Allowed values:positiveneutralnegativemixed
aspectstring or null

What the mention is about, such as price or quality. Null when it isn't available.

Allowed values:features_specsperformance_effectivenessprice_valuereputation_popularityquality_reliabilitydesign_comfortusability_compatibilityavailability_deliverysafety_healthservice_supportgeneral
snippetstring or null

The sentence around the mention. Null when it can't be found in the response.

countrystring

The country of the question.

data_sourcestring

The chatbot model that generated the response.

funnel_stagestring or null

The prompt's funnel stage. Null when no funnel stage is available.

Allowed values:awarenessconsiderationdecisionunclear
intentarray<string>

The prompt's intent labels, including its primary intent, subtypes, and branded/local attributes. An empty array means no intent labels are available.

Allowed values:informationalnavigationaltransactionalbrandedcommercialcomparisonhow_tolocalopinionrecommendation
last_updatedstring (date)

The date when the data was last updated.

linksarray<object>

(10 units) The links used for the response.

urlstring
titlestring or null
questionstring

The question asked by the user.

responsestring

(10 units) The response from the model.

search_queriesarray<string>

The search query used by the chatbot to find information for the response. Note: if data_source does not include chatgpt or perplexity, this field will always be empty.

statusstring or null

How the prompt changed between date_compared and date. Null unless date_compared is set. new — answered on date but not on date_compared. lost — answered on date_compared but not on date; the rest of this row describes the date_compared response, as there is none on date. no_change — answered on both dates, which says nothing about whether the response itself, its mentions or its citations changed.

Allowed values:newlostno_change
tagsarray<string>

Tags assigned to the query.

volumeinteger

(10 units) Estimated monthly searches. This is based on our estimates for Google, combining the search volumes of related keywords where this question appears in People Also Ask section.