Skip to main content

Content Filters: Keyword Filtering for LinkedIn, Reddit, and Twitter Signals

New content_filters parameter lets you keyword-search LinkedIn, Reddit, and Twitter signals at query time. Filter noise, find competitor mentions, track technologies.

TL;DR: The content_filters parameter is now available on social signal endpoints. Pass keywords, get back only signals whose content matches. Works on LinkedIn posts, Reddit discussions, and Twitter/X activity. Available via API and in the Explorer. Handles broad queries gracefully with 408 timeout hints instead of dead ends.

The Problem: Social Signals Are Noisy

If you query our social signal types without filtering, you get back everything. Every LinkedIn post, every Reddit thread, every tweet associated with a given company or contact. For a company like Salesforce, that's hundreds of signals per week. Most of them are irrelevant to what you actually care about.

Before content_filters, the options were:

  • Pull everything, filter client-side. Wasteful. You're paying credits for signals you immediately discard, and your pipeline is doing work the API should handle.
  • Use signal_types to narrow by platform. Gets you LinkedIn-only or Reddit-only, but that's a blunt instrument.
  • Post-process with your own keyword matching. Works, but adds latency, complexity, and another layer to maintain.

None of these are good. OEM partners building signal-powered features told us the same thing: "We want LinkedIn signals, but only the ones mentioning AI infrastructure" or "Give us Reddit threads about CRM migration, nothing else." That's what content_filters solves.

How content_filters Works

Add a content_filters string to your search request body. The API performs a keyword match against the signal's content fields (post text, thread body, tweet content) and returns only signals that match.

Parameter Structure

{
  "signal_types": ["linkedin-posts"],
  "company_domain": "stripe.com",
  "content_filters": "infrastructure OR platform engineering",
  "limit": 20
}

Key behaviors:

  • Keyword matching is case-insensitive and searches across the signal's text content.
  • Multiple terms can be combined. Use OR for any-match logic ("kubernetes OR docker"), or pass multiple space-separated words for all-match logic.
  • Works on social signal types only: linkedin-posts, reddit, twitter. Passing it on other signal types is a no-op.
  • Combines with all other filters. You can use content_filters alongside company_domain, detected_after, employee_count_min, etc. Filters are AND'd together.

Code Examples

Example 1: Find LinkedIn posts mentioning a competitor

curl -X POST https://signals.autobound.ai/v1/contacts/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["linkedin-post-contact"],
    "content_filters": {
      "keywords": {
        "contains": ["migrating from Salesforce", "replacing Salesforce"]
      }
    },
    "detected_after": "2026-06-01T00:00:00Z",
    "limit": 10
  }'

Response:

{
  "contacts": [
    {
      "full_name": "Sarah Chen",
      "job_title": "VP of Revenue Operations",
      "linkedin_url": "https://linkedin.com/in/sarahchen",
      "company": {
        "name": "Acme Corp",
        "domain": "acmecorp.io"
      },
      "signals": [
        {
          "signal_id": "sig_ln_8f3a2c91",
          "signal_type": "linkedin-post-contact",
          "detected_at": "2026-06-12T14:22:00Z",
          "association": "contact",
          "data": {
            "post_text": "6 months into migrating from Salesforce to HubSpot...",
            "post_url": "https://linkedin.com/posts/sarahchen_crm-migration-..."
          }
        }
      ]
    }
  ],
  "limit": 10,
  "has_more": true
}

Example 2: Track YouTube videos about a specific technology

curl -X POST https://signals.autobound.ai/v1/companies/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["youtube-company"],
    "content_filters": {
      "keywords": { "contains": ["data enrichment API"] }
    },
    "detected_after": "2026-05-01T00:00:00Z",
    "limit": 20
  }'

Example 3: Filter Twitter to relevant content only

A common pain point: Twitter signals include retweets, quote tweets, and noise. Use content_filters to isolate original takes:

curl -X POST https://signals.autobound.ai/v1/companies/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["twitter-company-posts"],
    "company_domain": "datadog.com",
    "content_filters": {
      "keywords": { "contains": ["observability", "monitoring", "APM"] }
    },
    "limit": 15
  }'

By combining company_domain with content_filters, you get only the signals from that company that are actually about the topic you care about. No retweets of industry news. No "congrats" replies. Just relevant original content.

Handling Timeouts: The 408 Pattern

Content filtering queries with very broad keywords across large datasets may need more processing time. Instead of returning partial results or a generic error, the API returns a 408 Request Timeout with actionable hints:

{
  "error": "query_timeout",
  "message": "Your search for 'AI' timed out. Apply one of the suggestions and retry — you were not charged.",
  "code": 408,
  "details": {
    "broad_terms": ["AI"],
    "suggestions": [
      "Add a company_domains filter to narrow the search scope",
      "Use a narrower detected_after window",
      "Use more specific keywords in content_filters"
    ]
  }
}

This is intentional. The fix is almost always one of:

  • Scope to a company. Add company_domain to dramatically reduce the search space.
  • Narrow the time window. Use detected_after to focus on recent signals only.
  • Be more specific. "AI" is broad. "generative AI infrastructure" is targeted.

For production integrations, handle the 408 gracefully. Retry with a tighter scope, or queue the request for async processing.

Integration Patterns

Pattern 1: Pre-filter at query time (recommended)

Use content_filters to only pull relevant signals from the start. This saves credits, reduces pipeline complexity, and means your downstream systems only ever see high-quality data.

const results = await fetch("https://signals.autobound.ai/v1/companies/search", {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    signal_types: ["linkedin-post-company", "twitter-company-posts"],
    company_domain: account.domain,
    content_filters: {
      keywords: { contains: ["sales intelligence", "intent data", "signal data"] }
    },
    detected_after: thirtyDaysAgo,
    limit: 50
  })
});

Pattern 2: Topic-based signal routing

Run multiple queries with different content_filters values to route signals to different workflows:

  • ["hiring", "recruiting", "headcount"] → expansion-signal workflow
  • ["evaluating", "replacing", "switching vendors"] → competitive-displacement workflow
  • ["series A", "series B", "fundraise"] → new-budget workflow

Same social data, three different signal streams, each feeding a different sales motion.

Before and After

Here's what the difference looks like in practice. Query: LinkedIn signals for companies with 200+ employees, last 30 days.

MetricWithout content_filtersWith content_filters
Signals returned100 (max page)23
Relevant to your product~6 (6%)~20 (87%)
Credits consumed20046
Client-side filtering neededYes (regex/NLP)No
Pipeline complexityHighMinimal

The signal-to-noise ratio improvement is dramatic. You're not just getting fewer results—you're getting better results. And you're spending 77% fewer credits doing it.

Try It Now

Two ways to get started:

  • API Explorer: Open signalapi.autobound.ai, select a social signal type, and use the content_filters field directly in the UI. No code required.
  • API: Add content_filters to any POST /v1/companies/search or POST /v1/contacts/search request with social signal types. Full API reference here.

What's Next

We're expanding content_filters to support more complex query syntax (phrase matching, exclusions) and considering extending it to additional signal types where content search makes sense (news, SEC filings, job postings). If you have specific needs, let us know.

Questions or integration help? Reach out directly or check the developer docs.