Skip to main content
Use the Twitter/X endpoints to monitor keyword-based post searches and individual profile feeds. Twitter/X monitoring supports advanced operators for precise targeting — filter by username, media type, language, geography, and more.

Keyword Search (POST /v1/searches/twitter/posts)

How it works

  1. Send a POST request to /v1/searches/twitter/posts with your keywords and optional filters
  2. Trigify begins monitoring Twitter/X on your configured frequency (DAILY, WEEKLY, MONTHLY, or QUARTERLY; HOURLY is available on Enterprise and Custom plans only)
  3. New posts matching your criteria appear in your search results via GET /v1/searches/{id}/results
  4. Optionally trigger workflows on new results for alerts, enrichment, or integrations

Supported filters

FieldTypeDescription
namestringRequired. Name for the search (1-255 characters)
keywordsstring[]Keywords to search for (OR logic). Max 10 items
keywords_andstring[]Keywords that must all be present (AND logic)
keywords_notstring[]Keywords to exclude
time_framestringHow far back to search: past-24h, past-week, past-month, past-year, all-time
max_resultsnumberMaximum results per run (10-100)
frequencystringHow often to check: DAILY, WEEKLY, MONTHLY, QUARTERLY; HOURLY is Enterprise/Custom only
search_typestringTwitter result type filter: Top, Latest, Videos, Photos
twitter_languagestringTwitter language filter (e.g. en, es, ja)
exclude_retweetsbooleanExclude retweets from results
exclude_repliesbooleanExclude replies from results
verified_onlybooleanOnly return posts from verified accounts
has_mediastring | nullFilter by media type: any, images, video, or null for no filter
has_linksbooleanOnly return posts containing links
from_usersstring[]Filter by specific Twitter/X usernames
to_userstringFilter replies to a specific user
url_containsstringFilter posts containing specific URL text
place_countrystringFilter by country code (e.g. US, GB)
retweets_ofstringFilter retweets of a specific user
conversation_idstringFilter by conversation ID
list_idstringFilter by Twitter list ID
context_annotationstringFilter by context annotation
use_full_archivebooleanUse full-archive search (requires elevated access)

Keyword limit

Twitter/X searches are limited to 10 total keywords across keywords + keywords_and + keywords_not combined.

Standalone operators

You can create a Twitter/X search without keywords if you provide at least one standalone operator: from_users, to_user, url_contains, place_country, retweets_of, conversation_id, list_id, or context_annotation.
For example, you could monitor all posts from a specific user without any keyword filtering by providing only from_users.
curl -X POST https://api.trigify.io/v1/searches/twitter/posts \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Competitor mentions on Twitter",
    "keywords": ["Acme Corp", "AcmeHQ"],
    "keywords_not": ["hiring", "job"],
    "time_frame": "past-week",
    "max_results": 50,
    "frequency": "DAILY",
    "exclude_retweets": true,
    "twitter_language": "en"
  }'

Advanced: Filter by user and media

Combine from_users with media and retweet filters to monitor specific accounts for original visual content.
curl -X POST https://api.trigify.io/v1/searches/twitter/posts \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Product launches from key accounts",
    "from_users": ["openai", "anthropic", "google"],
    "has_media": "any",
    "exclude_retweets": true,
    "exclude_replies": true,
    "frequency": "DAILY",
    "max_results": 25
  }'

Profile Monitoring (POST /v1/searches/twitter/profile)

How it works

  1. Send a POST request to /v1/searches/twitter/profile with a Twitter/X profile URL
  2. Trigify monitors the account for new posts on your configured frequency
  3. New posts from the account appear in your search results via GET /v1/searches/{id}/results

Supported fields

FieldTypeDescription
namestringRequired. Name for the monitor (1-255 characters)
profile_urlstringRequired. Twitter/X profile URL (e.g. https://x.com/username or https://twitter.com/username)
max_resultsnumberMaximum results per run (10-100)
frequencystringHow often to check: DAILY, WEEKLY, MONTHLY, QUARTERLY; HOURLY is Enterprise/Custom only

Create a Twitter profile monitor

curl -X POST https://api.trigify.io/v1/searches/twitter/profile \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Monitor @openai posts",
    "profile_url": "https://x.com/openai",
    "max_results": 50,
    "frequency": "DAILY"
  }'

Preview your filters

Before committing to a saved search, POST the exact same body to the preview endpoint to see a sample of matching posts. Useful for validating keywords, operators, and language filters before spending a credit.
  • Keyword preview: POST /v1/searches/twitter/posts/preview
  • Profile preview: POST /v1/searches/twitter/profile/preview
curl -X POST https://api.trigify.io/v1/searches/twitter/posts/preview \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Competitor mentions on Twitter",
    "keywords": ["Acme Corp", "AcmeHQ"],
    "keywords_not": ["hiring", "job"],
    "time_frame": "past-week",
    "max_results": 10,
    "exclude_retweets": true
  }'
The response wraps an array of sample posts in the standard search-result shape, so you can render previews using the same rendering code as GET /v1/searches/{id}/results:
{
  "success": true,
  "message": "Preview retrieved successfully",
  "data": [
    {
      "id": "1834...",
      "source": "twitter",
      "author": { "name": "…", "username": "…", "profile_url": "…", "avatar": "…", "followers": null },
      "content": { "text": "…", "url": "…", "media": [] },
      "engagement": { "likes": 42, "comments": 7, "shares": null },
      "published_at": "2026-04-01T10:00:00.000Z",
      "collected_at": "2026-04-10T16:22:00.000Z"
    }
  ],
  "meta": { "count": 1, "total_available": 246, "monitoring_type": "twitter-posts" }
}
Preview is free — no credit charged. Once you’re happy with the results, POST the same body to the create endpoint (/v1/searches/twitter/posts) to commit the search. The name and frequency fields are accepted but ignored by preview, so you can reuse one payload for both calls.

Use Cases

Competitor monitoring

Track mentions of competitor brands and products across Twitter/X. Use keywords_not to filter out noise like job posts and support threads.
{
  "name": "Competitor brand mentions",
  "keywords": ["CompetitorA", "CompetitorB", "#CompetitorProduct"],
  "keywords_not": ["hiring", "support", "help"],
  "exclude_retweets": true,
  "frequency": "DAILY"
}

Industry tracking

Monitor industry trends and conversations by combining topic keywords with language and media filters.
{
  "name": "AI industry trends",
  "keywords": ["artificial intelligence", "machine learning", "LLM"],
  "keywords_and": ["launch"],
  "search_type": "Top",
  "twitter_language": "en",
  "has_links": true,
  "frequency": "DAILY"
}

Influencer monitoring

Track original content from key influencers using from_users without any keyword filters. Combine with exclude_retweets to see only their original posts.
{
  "name": "AI thought leaders",
  "from_users": ["sama", "ylecun", "kaborov"],
  "exclude_retweets": true,
  "exclude_replies": true,
  "frequency": "DAILY"
}

Credit Usage

  • 1 credit per search or profile monitor created
  • Previewing filters via POST /v1/searches/twitter/{posts,profile}/preview is free
  • Retrieving results via GET /v1/searches/{id}/results is free
  • Updating or deleting a search is free

Notes

  • Both twitter.com and x.com URLs are accepted for profile monitoring
  • Keywords use OR logic by default. Use keywords_and for AND logic
  • Use keywords_not to exclude irrelevant results
  • HOURLY frequency requires an Enterprise or Custom plan
  • use_full_archive requires elevated access and searches the complete Twitter archive