X/Twitter Keyword & Hashtag Tweet Search
Search X (Twitter) by keyword, phrase or hashtag and get tweet text, author, engagement metrics, media and language. Every row says which keyword found it. No login required.
Open in Apify Store$0.99 / 1K on Free
Short answer
X/Twitter Keyword & Hashtag Tweet Search is an Apify Store Actor for X (Twitter) data that returns 18 published output fields, including text, likeCount, url, type. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 33 input settings; one is required (keywords). It covers 3 of the 7 core X (Twitter) fields this site tracks. Last updated Nov 9, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
18 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
typesearchTermtextauthor.usernamecreatedAtlanguagereplyCountretweetCountlikeCountquoteCountviewCountengagementRateisRetweetisQuoteisReplyurlmediacollectedAt
Not in the schema among the core X (Twitter) fields: post_id, author, posted_at, reposts. The field matrix shows which other tools return them.
How it differs from the other X (Twitter) Actors
Every field it publishes also appears in at least one of the other 11 catalogue Actors for X (Twitter) with a schema, so pick on price, input options and the fields below.
Pick another Actor if you need
| Actor | Fields it adds | Price / 1K |
|---|---|---|
| Twitter (X) Media Downloader | tweetId, filename, fileSizeBytes, width | $0.99 |
| X (Twitter) Profile & Post Engagement Extractor | message, name, bookmarkCount, totalEngagement | $0.99 |
| X Video Subtitle & Caption Transcript Converter | tweetId, videoIndex, videoSource, authorName | $0.99 |
| X Keyword Search with Mention & Reply Operators | bookmarkCount, inReplyToUsername, quotedTweetId | $0.99 |
| X Community Activity & Member Finder | communityName, name, memberCount, feed | $0.99 |
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| keywords | array | Yes | [] | Words, phrases, hashtags or full X search queries to monitor. Each keyword is searched separately, and every result row tells you which keyword found it (searchTerm). |
| maxTweets | integer | No | 20 | Stop after this many tweets for each keyword. This is a target, not a guarantee: guest X search returns ~20 posts per answered page, the Phase 6 probes measured 300 unique rows for a 300-row target, and 500/1,000 are unverified. |
| maxItems | integer | No | – | Alias of Maximum tweets per keyword. The actor accepts either name. |
| searchType | string | No | Top | Latest returns the newest posts first. Top is engagement-ranked output: X's logged-out search never serves the real Top timeline, so the actor collects Latest pages and sorts them by like count client-side. |
| sort | string | No | – | Alias of Result order. The actor accepts either name. |
| language | string | No | Any language | Only return tweets written in this language. Leave the default to search all languages. |
| dateFrom | string | No | – | Only return tweets posted on or after this date. Leave empty for no lower bound. |
| dateTo | string | No | – | Only return tweets posted on or before this date (inclusive). Leave empty for no upper bound. |
| excludeRetweets | boolean | No | false | Skip retweets/reposts and keep only original posts. |
| excludeReplies | boolean | No | false | Skip replies and keep only top-level posts. |
Show the other 23 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| onlyVerifiedUsers | boolean | No | false | Only return tweets from verified (blue check) accounts. |
| onlyImages | boolean | No | false | Only return tweets that contain at least one image. |
| onlyVideos | boolean | No | false | Only return tweets that contain at least one video or GIF. |
| onlyQuotes | boolean | No | false | Only return quote tweets (filter:quote). |
| mentioning | string | No | – | Only return posts that mention this account, e.g. apify or @apify. |
| author | string | No | – | Only return posts written by this account, e.g. openai or @openai. |
| inReplyTo | string | No | – | Only return replies addressed to this account, e.g. elonmusk or @elonmusk. |
| conversationId | string | No | – | Only return posts in this conversation (the numeric id of the root post). |
| matchMode | string | No | all | How to combine the words in each keyword: all = X's default AND, any = (word1 OR word2), exact = quoted phrase. |
| excludeWords | array | No | [] | Words or phrases to exclude from every search, compiled to -word / -"two words" tokens. |
| includeLanes | array | No | [] | Which X search lanes to run: latest, media, media-product, links, replies. Leave empty for the default latest + media + links (replies is added automatically for jobs of 100+ rows). media-product asks for X's product=Media page directly and is opt-in. |
| maxWindows | integer | No | 0 | Cap the number of backwards time-window passes per keyword. 0 means no explicit cap (the wall-clock budget still applies). |
| maxPasses | integer | No | 0 | Cap the total number of X search passes (core lanes + time windows) per keyword. 0 means no explicit cap. |
| onlyNew | boolean | No | false | Return only posts newer than the previous run for this keyword. The actor stores a numeric tweet-id watermark plus an overlap window in the key-value store, so scheduled runs do not repeat old rows. |
| monitoringEnabled | boolean | No | false | Alias that enables onlyNew when onlyNew itself is not provided. Prefer the Only new posts field. |
| monitorId | string | No | – | Namespace for the saved watermark. Use different ids to keep independent schedules for the same keyword. Defaults to 'default'. The legacy alias 'monitoringStateKey' is also accepted. |
| overlapMinutes | integer | No | 10 | How far back before the previous run to search, so posts published during the last walk are not missed. Already-seen ids are still filtered out. |
| maxAgeDays | integer | No | 90 | Never walk further back than this many days, even when catching up after a long gap. |
| sinceTime | string | No | – | Optional lower bound for a backfill run: ISO 8601 timestamp or Unix epoch seconds. Uses X's epoch since_time operator, not day-granular since:. |
| untilTime | string | No | – | Optional upper bound for a backfill run: ISO 8601 timestamp or Unix epoch seconds. Uses X's epoch until_time operator. |
| proxyConfiguration | object | No | – | Optional. Use a proxy if you run large jobs or see frequent IP-based rate limits. |
| startDate | string | No | – | Deprecated — use 'Start date' instead. Kept so existing saved inputs keep working. Format: YYYY-MM-DD. |
| endDate | string | No | – | Deprecated — use 'End date' instead. Kept so existing saved inputs keep working. Format: YYYY-MM-DD. |
Example input
Built from the input form's published example values and defaults.
{
"keywords": [
"apify"
],
"maxTweets": 20,
"searchType": "Latest",
"language": "Any language",
"excludeRetweets": false,
"excludeReplies": false,
"onlyVerifiedUsers": false,
"onlyImages": false,
"onlyVideos": false,
"onlyQuotes": false,
"matchMode": "all",
"excludeWords": [],
"includeLanes": [],
"maxWindows": 0,
"maxPasses": 0,
"onlyNew": false,
"monitoringEnabled": false,
"overlapMinutes": 10,
"maxAgeDays": 90
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"keywords": [
"apify"
],
"maxTweets": 20,
"searchType": "Latest",
"language": "Any language",
"excludeRetweets": False,
"excludeReplies": False,
"onlyVerifiedUsers": False,
"onlyImages": False,
"onlyVideos": False,
"onlyQuotes": False,
"matchMode": "all",
"excludeWords": [],
"includeLanes": [],
"maxWindows": 0,
"maxPasses": 0,
"onlyNew": False,
"monitoringEnabled": False,
"overlapMinutes": 10,
"maxAgeDays": 90
}
run = client.actor("nimbryxo-studio/x-twitter-keyword-and-hashtag-tweet-search").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"keywords": [
"apify"
],
"maxTweets": 20,
"searchType": "Latest",
"language": "Any language",
"excludeRetweets": false,
"excludeReplies": false,
"onlyVerifiedUsers": false,
"onlyImages": false,
"onlyVideos": false,
"onlyQuotes": false,
"matchMode": "all",
"excludeWords": [],
"includeLanes": [],
"maxWindows": 0,
"maxPasses": 0,
"onlyNew": false,
"monitoringEnabled": false,
"overlapMinutes": 10,
"maxAgeDays": 90
};
const run = await client.actor("nimbryxo-studio/x-twitter-keyword-and-hashtag-tweet-search").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/nimbryxo-studio~x-twitter-keyword-and-hashtag-tweet-search/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"keywords":["apify"],"maxTweets":20,"searchType":"Latest","language":"Any language","excludeRetweets":false,"excludeReplies":false,"onlyVerifiedUsers":false,"onlyImages":false,"onlyVideos":false,"onlyQuotes":false,"matchMode":"all","excludeWords":[],"includeLanes":[],"maxWindows":0,"maxPasses":0,"onlyNew":false,"monitoringEnabled":false,"overlapMinutes":10,"maxAgeDays":90}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=nimbryxo-studio/x-twitter-keyword-and-hashtag-tweet-search",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among X (Twitter) routes
It ranks 5 of 12 catalogue Actors for X (Twitter) on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 Twitter (X) Media Downloader 27 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 2 X Post, Reply & Profile Lookup by Link or ID 9 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 3 X (Twitter) Profile & Post Engagement Extractor 29 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - 5 X/Twitter Keyword & Hashtag Tweet Search 18 output fields, pay per event 3 of 7 core fields
$0.99 / 1K - + 7 other Store tools, combined Reference only 5 of 7 core fields
from $0.15 / 1K - API X API v2 Public API fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: X API v2
Public API. X API v2 uses prepaid pay-per-usage credits. Published standard read rates include $0.005 per Post resource and $0.010 per User resource. Pay-per-use launched on February 6, 2026; legacy Basic and Pro plans migrated to pay-per-use.
Charged per resource returned: $0.005 per Post, $0.010 per User. Owned Reads on qualifying own-account endpoints are $0.001 per resource. A 3 million Post-read monthly cap applies to self-serve pay-per-use.
Other Store tools for X (Twitter)
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| X (Twitter) Tweet Scraper | 120 | $0.15 |
| Tweet Scraper | 17 | $0.25 |
| Tweet Scraper V2 | 12 | $0.40 |
| Twitter (X.com) Scraper Unlimited: No Limits | 12 | $0.40 |
| Twitter (X) Follower Scraper | 29 | $0.15 |
What people use it for
- Find keyword mentions
- Collect hashtag posts
- Analyze post engagement
Other catalogue Actors for X (Twitter)
Twitter (X) Media Downloader
Download videos, photos, GIFs, audio and poster images from public Twitter/X posts - no login, no cookies. Works with post links or usernames,…
X Post, Reply & Profile Lookup by Link or ID
Resolve X post links or IDs into text, author, media, polls, quoted/parent posts, engagement metrics and replies, or resolve a handle into that…
X (Twitter) Profile & Post Engagement Extractor
Get any public X profile - bio, followers, verification, avatar, banner - plus latest, top and media posts with full engagement metrics. No login…
X Video Subtitle & Caption Transcript Converter
Convert public X (Twitter) videos into timestamped transcripts and downloadable SRT/VTT subtitle files, using native captions when available and…
X Keyword Search with Mention & Reply Operators
Search X (Twitter) by keyword with filters for date, language, engagement, media, verification, mentioned handle, author, reply target, and…
X Community Activity & Member Finder
Collect public X Community posts, about info, rules and members with no login required. Get the community profile, member count, ranked posts with…
Similar Actors
LinkedIn Keyword & Hashtag Post Discovery Scraper
Search LinkedIn posts by keyword or hashtag with filters for date, author type, industry, connection degree, mentions, and minimum reactions.…
TikTok Keyword Search & Discovery Scraper
Search TikTok by keyword or phrase and get matching videos with engagement stats, author profiles, music metadata, hashtags, and location tags,…
Facebook Page & Profile Finder by Keyword or URL
Find Facebook Pages or public profiles by keyword, or scrape a list of Facebook URLs directly, and get back contact info, category, ratings,…
LinkedIn Hashtag Feed Engagement Scraper
Pull posts published under one or more LinkedIn hashtags, with author name, headline, content, media type and reaction/comment/repost counts.…
Reddit Keyword Search with Advanced Filters
Search Reddit by keyword and filter the matches by subreddit, score, date range, NSFW status, and author before they reach your dataset.
Quora Keyword Search & Author Discovery Scraper
Search Quora by keyword or scrape visibly accessible question, answer, profile, topic, Space, and Post URLs directly, with filters for promoted…
Questions people ask
How much does X/Twitter Keyword & Hashtag Tweet Search cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does X/Twitter Keyword & Hashtag Tweet Search return?
Its published output schema lists 18 fields: type, searchTerm, text, author.username, createdAt, language, replyCount, retweetCount, likeCount, quoteCount, viewCount, engagementRate, and 6 more. A listed field is not guaranteed to be filled in every row.
What input does X/Twitter Keyword & Hashtag Tweet Search need?
Required: keywords. Optional settings include maxTweets, maxItems, searchType, sort, language, dateFrom.
What are the alternatives to X/Twitter Keyword & Hashtag Tweet Search for X (Twitter)?
12 catalogue Actors cover X (Twitter). Close alternatives: Twitter (X) Media Downloader; X Post, Reply & Profile Lookup by Link or ID; X (Twitter) Profile & Post Engagement Extractor. The X (Twitter) page compares all of them field by field.
How do I run X/Twitter Keyword & Hashtag Tweet Search from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("nimbryxo-studio/x-twitter-keyword-and-hashtag-tweet-search").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("nimbryxo-studio/x-twitter-keyword-and-hashtag-tweet-search").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/nimbryxo-studio~x-twitter-keyword-and-hashtag-tweet-search/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- X/Twitter Keyword & Hashtag Tweet Search on Apify Store
- Published build with input and output schema (JSON)
- X API v2 documentation
Cite this page
Scraper Finder. "X/Twitter Keyword & Hashtag Tweet Search." https://scraperfinder.com/catalogue/x-twitter-keyword-and-hashtag-tweet-search/ (data checked 2026-11-12).
Run X/Twitter Keyword & Hashtag Tweet Search
$0.99 per 1,000 results. Paste the example input above, set your X (Twitter) query, then export the dataset. Still choosing? Compare every X (Twitter) route.