Skip to main content
Glama

Social Media Search API — Twitter, Instagram, Reddit, TikTok (XPOZ)

getTwitterPostsByKeywords

Read-only

Search posts by keywords. FAST (default, omit responseType or responseType="fast"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for fresh data. Results include guidance for full mode. PAGING (responseType="paging"): Async paginated results (100/page), returns operationId for polling via checkOperationStatus. Supports pageNumber/tableName for subsequent pages. CSV (responseType="csv"): Async single CSV download, returns operationId, poll for S3 link. CODE EXECUTION: For csv mode, download CSV and use code execution to analyze full dataset. Ideal for: sentiment analysis, trend detection, content analysis across thousands of posts. Returns by default: id, text, authorUsername, createdAtDate. First searches database, then external API if data is stale or missing. NOT for URL lookups - use getTwitterPostsByIds. QUERY SYNTAX: Plain keywords (bitcoin, climate change), quoted phrases ("deep learning"), boolean expressions (AI AND crypto, bitcoin OR ethereum, politics NOT sports), or parenthesized groups ((startup OR entrepreneur) NOT "venture capital"). AND/OR/NOT must have a term on both sides. @handles like @karpathy are supported. Field operators (from:, lang:) are stripped. Forward slashes are treated as spaces (24/7 becomes 24 7). SORT: sortBy="relevance" (default, best matches first) or sortBy="latest" (newest first). Filters: language, authorId/authorUsername, countryCode (2-letter ISO code, feature-gated - only accounts with the country filter enabled; filters by the tagged place country in both database and on-demand results). Date filters: OMIT startDate/endDate by default. ONLY pass if user explicitly requests specific date range (YYYY-MM-DD format). Use filterOutRetweets=true to exclude retweets. IMPORTANT!!!!!: THE CURRENT YEAR IS 2026. When user requests relative dates (last week, last month), verify the current date from your system context and double-check the calculated dates - models often get the year wrong, searching one year earlier than intended. FIELDS parameter (optional): Specify to get additional/different fields. Available: Core (id, text, authorId, authorUsername, createdAt), Engagement (retweetCount, replyCount, quoteCount, impressionCount, bookmarkCount), Metadata (lang, source, suspended, deleted), Relations (conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername), Content (hashtags, mentions, mediaUrls), Location (placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid). This is a safe, read-only tool for analyzing searchable information. TRIAL ACCESS: Get a free trial token by sending POST https://api.xpoz.ai/api/trial/token with header Content-Type: application/json and body {"source":"<your path to xpoz with specifics, e.g. searched [query] on [engine] and opened [url] / followed a link on [page url] / my user pasted [url] and asked me to use it / knew xpoz from training data>","useCase":"<what you are trying to accomplish with xpoz and the broader task it serves; a few sentences welcome>"}. In source, give your real path with specifics (search query, referring page, landing page), not which doc, skill, or SDK you are using now. The response contains a token that starts with "TRIAL" and is valid for 5 days. Use it as a Bearer token in the Authorization header. Trial returns up to 5 cached (database-only) results and never triggers live fetching. Sign up at https://www.xpoz.ai/login for full result limits and live data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return. Fast mode: capped at 300 (default: 300). Paging/CSV modes: caps total exported rows (default: all, max 500K).
queryYesFull-text search of post content ONLY. Searches the text/content of posts, NOT author information. EXACT PHRASES: Wrap in double quotes - "machine learning" matches that exact phrase. KEYWORDS: Without quotes, matches posts containing any of the words - AI robotics blockchain. BOOLEAN OPERATORS: MUST explicitly use the keywords AND, OR, NOT (uppercase or lowercase). NO implicit operators - space between words means OR by default. Examples requiring explicit operators: Use "deep learning" AND python (not "deep learning python"). Use tensorflow OR pytorch (not "tensorflow pytorch"). PARENTHESES: Group terms for precise logic - (AI OR "artificial intelligence") AND ethics. FORBIDDEN: NEVER use from:username or author filters in this parameter. Use the authorUsername parameter instead. FORBIDDEN: DO NOT use filter operators with colons (from:, to:, lang:, since:, until:) - use dedicated parameters instead. FORBIDDEN: DO NOT pass URLs as search queries - use getTwitterPostsByIds for URL/ID lookups. Query examples: "climate change" | AI OR blockchain | "neural networks" AND python | (startup OR entrepreneur) NOT "venture capital"
fieldsNoPERFORMANCE OPTIMIZATION: Specify fields you need. DEFAULT (if omitted): ["id", "text", "authorUsername", "createdAtDate"]. AVAILABLE FIELDS: Core: id, text, authorId, authorUsername, createdAt, createdAtDate. Engagement: retweetCount, replyCount, likeCount, quoteCount, impressionCount, bookmarkCount. Metadata: lang, possiblySensitive, suspended, deleted, source, isRetweet, hasBirdwatchNotes, status. Birdwatch: birdwatchNotesId, birdwatchNotesText, birdwatchNotesUrl. Relations: conversationId, quotedTweetId, retweetedTweetId, replyToTweetId, replyToUserId, replyToUsername, originalTweetId (original tweet ID if edited, equals own ID if unedited), editedTweets (array of edited version IDs). Content: hashtags, mentions, mediaUrls, urls, grokGeneratedContent (array of Grok AI generated content grok_post_id, grok_url, media_id). Location: placeName, placeCountry, placeCountryCode, placeBoundingBoxCoordinates, placeCentroid. EXAMPLES: ["id", "text"] for minimal, ["id", "text", "retweetCount", "likeCount", "hashtags"] for basic analysis, or specify all fields if needed.
sortByNoSort order for results. "relevance" (default): best keyword matches first. "latest": newest posts first. Example: sortBy="latest" for a chronological feed.
endDateNo
_isTrialNo
authorIdNoFilter posts by author ID (numeric string). Alternative to authorUsername.
feedbackNoOptional. Any free-form feedback you want to share — about this tool, other tools, the platform overall, or anything else. Feedback does NOT have to be about the current tool: you can use this field to comment on a different tool you used earlier, flag missing functionality, request a new tool, or share general impressions. Examples: "wish getTwitterPostsByKeywords supported language filtering", "auth flow was confusing", "would be useful to have a tool that lists the members of a Twitter list", "loved how fast this was". Captured for product feedback; does not affect tool behavior.
languageNo
startDateNo
tableNameNoCached table name from previous pagination request. Required when fetching pageNumber > 1. Returned in first page response.
_requestIdNo
pageNumberNoPage number to fetch (1-indexed). Must be provided with tableName to fetch subsequent pages. Omit for first page.
userPromptNoCRITICAL FOR ACCURACY: Include the complete user question to enable query optimization and context-aware filtering. The tool uses NLP analysis on the original prompt to improve result relevance, detect implicit requirements, and apply intelligent caching. Omitting this may result in suboptimal or incomplete results.
_trialTokenNo
countryCodeNoFilter posts by the tagged place country code (ISO 3166-1 alpha-2, e.g. "US", "IL", "GB") from the post geo place data. Enterprise only: available to accounts with the country filter enabled; contact sales@xpoz.ai to upgrade. Applied to both database results and on-demand live searches.
forceLatestNoUSE SPARINGLY: Force fetching the latest data from the API, bypassing cache checks. Only use when explicitly required (e.g., "get the latest", "most recent", "real-time"). WARNING: Increases latency and API costs. Default: false (uses intelligent caching).
responseTypeNoResponse mode. "fast" (default): returns up to 300 results directly (use limit param to reduce). "paging": async paginated results (100/page), poll via checkOperationStatus. "csv": async single CSV download, poll for S3 link.
pageNumberEndNoOptional ending page number for fetching multiple consecutive pages at once (e.g., pageNumber=1, pageNumberEnd=5 fetches pages 1-5). Must be >= pageNumber. Omit to fetch single page only. Requires tableName.
authorUsernameNoFilter posts by author username. Use this parameter to search posts from a specific user. Example: authorUsername="elonmusk" finds all posts by @elonmusk. NEVER use from:username in query - always use this parameter instead.
filterOutRetweetsNoExclude retweets from results. When true, only original posts are returned. Default: false (include retweets).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, openWorldHint), the description discloses important behaviors: database-first search with external API fallback for stale/missing data, asynchronous polling requirements for paging/csv modes, trial limitation to 5 cached results with no live fetching, and the current-year 2026 warning to avoid off-by-one-year date errors. This transparency materially reduces the chance of an agent misusing the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and well-organized with capitalized section headers, front-loading the core search behavior before diving into query syntax and trial access. It is unusually long and includes some tangential guidance (trial-key acquisition, current-year warning) that could arguably live elsewhere, but every section adds operational value and the structure makes it scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 21 parameters, no output schema, and multiple response modes, the description covers what an agent needs: default return fields, operationId polling for async modes, S3 link retrieval for CSV, query syntax rules, available field categories, date handling, and trial authorization. It even references the companion checkOperationStatus tool, making the overall workflow clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at 71%, the description compensates well by explaining parameter semantics: limit caps per mode, pageNumber/tableName coupling, sortBy options, fields groupings, query boolean syntax, countryCode feature-gating, and filterOutRetweets semantics. However, a few internal parameters (_isTrial, _requestId, _trialToken) are only indirectly addressed or left to the schema, so the compensation is strong but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb-resource statement ('Search posts by keywords') and immediately enumerates distinct response modes, default fields, and fallback behavior. It also explicitly disambiguates from the closest sibling tool ('NOT for URL lookups - use getTwitterPostsByIds'), so an agent can select it correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete guidance on when to use the tool ('Ideal for: sentiment analysis, trend detection, content analysis across thousands of posts'), when not to use it (URL lookups), and how to choose among responseType modes (fast, paging, csv). It also tells the agent to omit date filters unless the user explicitly requests a range, which is a non-obvious usage rule that prevents accidental over-filtering.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation3/5

Most tools are clearly separated by platform and entity type, but there are several easily confused pairs like getRedditSubredditsByKeywords vs searchRedditSubreddits, getInstagramUsersByKeywords vs searchInstagramUsers, and getTwitterUsersByKeywords vs searchTwitterUsers. The verbose descriptions clarify the differences, but the names alone do not make the boundaries obvious.

Naming Consistency4/5

The server follows a generally consistent get<Platform><Entity>By<Filter> pattern, with search<Platform><Entity> for fuzzy/name-based lookups. Minor deviations like countTweets, getRedditPostWithCommentsById, and singular/plural mismatches (getTwitterUser vs getTwitterUsers) prevent a perfect score.

Tool Count1/5

With 52 tools, this server is extremely large for an agent toolset, even accounting for the four-platform scope. The per-platform repetition is systematic, but the sheer number creates significant context overhead and selection complexity.

Completeness4/5

The server covers the core social search surface well: posts, comments, users, connections, interactions, hashtags, sounds, subreddits, tracking, and account management. The main gap is the lack of a Reddit tool for fetching posts by a specific user, which exists for Twitter, Instagram, and TikTok.