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.
How it works
- Send a
POST request to /v1/searches/twitter/posts with your keywords and optional filters
- Trigify begins monitoring Twitter/X on your configured frequency (
DAILY, WEEKLY, MONTHLY, or QUARTERLY; HOURLY is available on Enterprise and Custom plans only)
- New posts matching your criteria appear in your search results via
GET /v1/searches/{id}/results
- Optionally trigger workflows on new results for alerts, enrichment, or integrations
Supported filters
| Field | Type | Description |
|---|
name | string | Required. Name for the search (1-255 characters) |
keywords | string[] | Keywords to search for (OR logic). Max 10 items |
keywords_and | string[] | Keywords that must all be present (AND logic) |
keywords_not | string[] | Keywords to exclude |
time_frame | string | How far back to search: past-24h, past-week, past-month, past-year, all-time |
max_results | number | Maximum results per run (10-100) |
frequency | string | How often to check: DAILY, WEEKLY, MONTHLY, QUARTERLY; HOURLY is Enterprise/Custom only |
search_type | string | Twitter result type filter: Top, Latest, Videos, Photos |
twitter_language | string | Twitter language filter (e.g. en, es, ja) |
exclude_retweets | boolean | Exclude retweets from results |
exclude_replies | boolean | Exclude replies from results |
verified_only | boolean | Only return posts from verified accounts |
has_media | string | null | Filter by media type: any, images, video, or null for no filter |
has_links | boolean | Only return posts containing links |
from_users | string[] | Filter by specific Twitter/X usernames |
to_user | string | Filter replies to a specific user |
url_contains | string | Filter posts containing specific URL text |
place_country | string | Filter by country code (e.g. US, GB) |
retweets_of | string | Filter retweets of a specific user |
conversation_id | string | Filter by conversation ID |
list_id | string | Filter by Twitter list ID |
context_annotation | string | Filter by context annotation |
use_full_archive | boolean | Use 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"
}'
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
}'
How it works
- Send a
POST request to /v1/searches/twitter/profile with a Twitter/X profile URL
- Trigify monitors the account for new posts on your configured frequency
- New posts from the account appear in your search results via
GET /v1/searches/{id}/results
Supported fields
| Field | Type | Description |
|---|
name | string | Required. Name for the monitor (1-255 characters) |
profile_url | string | Required. Twitter/X profile URL (e.g. https://x.com/username or https://twitter.com/username) |
max_results | number | Maximum results per run (10-100) |
frequency | string | How often to check: DAILY, WEEKLY, MONTHLY, QUARTERLY; HOURLY is Enterprise/Custom only |
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