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/signals/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["linkedin-posts"],
    "content_filters": "migrating from Salesforce OR replacing Salesforce",
    "detected_after": "2026-06-01",
    "limit": 10
  }'

Response:

{
  "signals": [
    {
      "signal_id": "sig_ln_8f3a2c91",
      "signal_type": "linkedin-posts",
      "signal_subtype": "original_post",
      "detected_at": "2026-06-12T14:22:00Z",
      "association": "contact",
      "company": {
        "name": "Acme Corp",
        "domain": "acmecorp.io",
        "employee_count": 340
      },
      "contact": {
        "name": "Sarah Chen",
        "title": "VP of Revenue Operations",
        "linkedin_url": "https://linkedin.com/in/sarahchen"
      },
      "data": {
        "post_text": "6 months into migrating from Salesforce to HubSpot...",
        "engagement": { "likes": 847, "comments": 123 },
        "post_url": "https://linkedin.com/posts/sarahchen_crm-migration-..."
      }
    }
  ],
  "total_returned": 10,
  "has_more": true
}

Example 2: Track Reddit discussions about a specific technology

curl -X POST https://signals.autobound.ai/v1/signals/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["reddit"],
    "content_filters": "data enrichment API",
    "detected_after": "2026-05-01",
    "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/signals/search \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "signal_types": ["twitter"],
    "company_domain": "datadog.com",
    "content_filters": "observability OR monitoring OR 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": "request_timeout",
  "message": "Query required more processing time than allowed.",
  "hints": [
    "Add a company_domain or company_name filter to narrow the search scope",
    "Use detected_after to limit the time window",
    "Use more specific keywords in content_filters"
  ],
  "retry_after_seconds": 5
}

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 signals = await fetch("https://signals.autobound.ai/v1/signals/search", {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    signal_types: ["linkedin-posts", "reddit", "twitter"],
    company_domain: account.domain,
    content_filters: "sales intelligence OR intent data OR 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 OR recruiting OR headcount" → expansion-signal workflow
  • "evaluating OR replacing OR switching vendors" → competitive-displacement workflow
  • "series A OR series B OR 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 returned500 (max page)23
Relevant to your product~30 (6%)~20 (87%)
Credits consumed5.00.23
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 95% 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/signals/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.