X/Twitter Keyword & Hashtag Tweet Search avatar

X/Twitter Keyword & Hashtag Tweet Search

Pricing

from $0.49 / 1,000 results

Go to Apify Store
X/Twitter Keyword & Hashtag Tweet Search

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.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Nimbryxo-studio

Nimbryxo-studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Security

Limited permissions

Share

Give this actor a list of keywords, phrases or hashtags and it pulls back matching X (formerly Twitter) posts — full text, engagement counts, media and the author who wrote each one. No sign-in, cookies or developer credentials needed; it reads the same public search results any visitor sees.

What this actor does

  • Runs each entry in keywords as its own independent search, so a single job can cover several unrelated topics at once.
  • Targets up to 1,000 posts per keyword via maxTweets; how many actually come back depends on how much volume that keyword has on X.
  • Lets you sort by Top (most engagement) or Latest (newest first), and narrow by language, a date window, retweets/replies, verification, media presence, and minimum like/retweet/reply counts.
  • Stamps every row with searchTerm so a multi-keyword run stays easy to split apart afterward.
  • Emits a one-line status record for a keyword that returns nothing, rather than leaving you guessing why a keyword is missing from the dataset.
  • Drops any field with no data for that post — you will never see null, an empty string, or an empty array/object in the output.

Output per post

Core fields on every post record: id, url, text, createdAt, language (when X reports one), and searchTerm.

Engagement comes through replyCount, retweetCount, likeCount, quoteCount, bookmarkCount, and viewCount, plus a computed engagementRate — (likes + retweets + replies + quotes) ÷ followers — included only once the author's follower count is known and nonzero.

Post-type context: isReply, isRetweet, isQuote, isNoteTweet, and, for replies, conversationId, inReplyToTweetId, inReplyToUserId, inReplyToUsername, parentTweet (a nested summary of the post being replied to, when available).

Entities parsed out of the text: hashtags, mentions, urls, cashtags.

Attachments and extras, when present: media (one entry per photo/video/GIF with type, url, previewImageUrl, pixel dimensions, durationSeconds, viewCount, altText, variants), quotedTweet / quotedTweetId, poll, card, possiblySensitive, withheldInCountries, place, postedFrom, isEdited, editControl (edit history metadata), newsActionType.

The author rides along as a nested author object — id, username, name, bio, followers, isBlueVerified, verified, profileImageUrl, and more.

Every post closes with type: "post" and collectedAt.

Sample record

{
"type": "post",
"id": "1923456789012345678",
"url": "https://x.com/i/status/1923456789012345678",
"text": "Just shipped a new feature after three weeks of testing. Feels good. #buildinpublic",
"createdAt": "2026-06-02T09:15:00+00:00",
"language": "en",
"searchTerm": "buildinpublic",
"replyCount": 34,
"retweetCount": 112,
"likeCount": 1870,
"quoteCount": 9,
"bookmarkCount": 265,
"viewCount": 54300,
"isReply": false,
"isRetweet": false,
"isQuote": false,
"hashtags": ["buildinpublic"],
"author": {
"id": "1092834756",
"username": "makerjane",
"name": "Jane Builds",
"followers": 18400,
"isBlueVerified": false
},
"collectedAt": "2026-06-02T10:03:41+00:00"
}

Output per status row

When a keyword comes back empty, the actor pushes exactly one record carrying type: "status", status, message, searchTerm (which keyword it's reporting on), and collectedAt — a signal, not a silent zero.

Input

FieldTypeDefaultDescription
keywordsarray–Required. Words, phrases, hashtags or full search queries; each runs separately.
maxTweetsinteger20Target number of posts per keyword (1–1000).
maxItemsinteger–Same as maxTweets — use whichever name you prefer.
searchTypestringTopTop for the most engaged posts, Latest for newest-first.
sortstring–Same as searchType.
languagestringAny languageRestrict to one of 40 common X language codes, e.g. en, es, ja.
dateFromdate–Earliest post date to include.
dateTodate–Latest post date to include.
excludeRetweetsbooleanfalseDrop retweets/reposts, keep only original posts.
excludeRepliesbooleanfalseDrop replies, keep only top-level posts.
onlyVerifiedUsersbooleanfalseKeep only posts from verified accounts.
onlyImagesbooleanfalseKeep only posts containing at least one image.
onlyVideosbooleanfalseKeep only posts containing at least one video or GIF.
minimumLikesinteger–Floor on like count.
minimumRetweetsinteger–Floor on retweet count.
minimumRepliesinteger–Floor on reply count.
proxyConfigurationobject–Optional; useful for large or repeated runs from the same IP.
startDate / endDatestring–Older aliases for dateFrom / dateTo (YYYY-MM-DD).

Example: two unrelated topics in one run

{
"keywords": ["apify", "web scraping"],
"maxTweets": 50
}

Example: live brand-mention watch

{
"keywords": ["#YourBrand", "\"your brand\""],
"searchType": "Latest",
"language": "en",
"maxTweets": 200,
"excludeRetweets": true,
"excludeReplies": true
}

Example: top posts in a date window, above an engagement floor

{
"keywords": ["artificial intelligence"],
"maxTweets": 500,
"minimumLikes": 100,
"minimumRetweets": 20,
"dateFrom": "2026-01-01",
"dateTo": "2026-06-30"
}

Use cases

  • Brand monitoring — catch new mentions of a product, campaign or handle as they post.
  • Trend and topic tracking — measure how a subject's volume and engagement shift over weeks or months.
  • Breaking-news watch — pair Latest with a tight date range to follow a fast-moving story.
  • Content research — surface the highest-engagement posts around a theme for inspiration.
  • Academic or policy research — assemble a dataset of public discourse on a topic, language or time period.
  • Competitor comparison — run several competing keywords side by side and compare volume and engagement.

FAQ

Do I need an X account or developer credentials? No — there's no credential field in the input at all. The actor reads what any logged-out visitor can already see on X's own search.

How many posts will I actually get per keyword? Up to maxTweets, but that's a ceiling, not a promise. A trending keyword might fill close to 500 rows; an obscure one may return only a handful, because that's genuinely all X's search surface has for it.

Why did I get a different count on a second identical run? X's logged-out search doesn't expose stable, full pagination, and what it surfaces can shift between requests. If you need more rows, try again or narrow the date window rather than assuming something broke.

Should I use Top or Latest? Latest for anything time-sensitive — breaking news, live mentions, a campaign in progress. Top when you want the posts with the strongest engagement regardless of when they went up.

Is a proxy required? No, it's optional. Add one mainly if you're running large or frequent jobs from the same IP and want extra headroom against rate limiting.

How current is the data? Fully live — each run queries X at the moment it executes. Put the actor on a schedule for ongoing monitoring.

How do I get the results into another tool? Pull the dataset from the run page or the Apify API, wire up a webhook, or connect it to Zapier, Make, Google Sheets, or similar no-code tools.

Is this affiliated with X? No. This is an independent, third-party actor that reads publicly available X search results.