Brand extraction

Pass track_brands on a /v1/ask call, or send raw text to /v1/extract_brands. In both cases you get back a mentions array with position, sentiment, and surrounding context.

The BrandMention object

FieldTypeDescription
brandoptional
stringThe brand as it appeared in the source text.
provideroptional
'openai' | 'anthropic' | 'gemini' | 'perplexity'Which provider surfaced the mention. On /v1/extract_brands this is present only when source_provider was set to a real provider (not "unknown").
rankoptional
number1-indexed position of the mention in the source text. Rank 1 is the first mention; useful for ranking by first appearance.
sentimentoptional
'positive' | 'neutral' | 'negative'Sentiment of the sentence containing the mention — not the whole answer — to avoid contamination from neighboring competitors.
contextoptional
stringThe sentence the brand appears in.

Matching rules

  • Case-insensitive.
  • Word-boundary aware — “Notion” does not match inside “notional”.
  • Punctuation tolerant — “Honeycomb.io” also matches when the source writes “Honeycomb”.
  • No custom alias map today. If you need to track a brand under multiple spellings, include each spelling as its own entry in track_brands.

Sentiment scoring

Sentiment is scored on the sentence containing the brand mention, calibrated for product-recommendation language. “X is a strong choice” → positive, “X exists in this space” → neutral, “Avoid X for production” → negative.

Sentiment is always computed when extraction runs; there is no opt-out toggle today.

Limits

  • /v1/ask accepts up to 10 brand names, each 1–80 characters.
  • /v1/extract_brands accepts up to 50 brand names, each 1–80 characters, over up to 50,000 characters of text.
  • Duplicate or near-identical brand spellings are not de-duplicated — if you pass ["OpenAI", "Open AI"], both are searched independently.

Example

json
{
  "providers": ["openai"],
  "prompt": "Best CRM tools in 2026?",
  "track_brands": ["Salesforce", "HubSpot"]
}

See the full /v1/ask reference for the complete request/response contract.