Twitter Scraper - Search Tweets by Keyword
Pricing
from $1.08 / 1,000 results
Twitter Scraper - Search Tweets by Keyword
Search Twitter (X) by keyword, hashtag or advanced operators like from:, since: and min_faves:, and export every matching tweet. Each row has the text, time, likes, reposts, replies, views, author and media. Run many searches at once and sort by latest or top.
Pricing
from $1.08 / 1,000 results
Rating
0.0
(0)
Developer
ToolzerHub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Twitter Scraper — Search Tweets by Keyword
Search Twitter (X) by keyword, hashtag or advanced operator and export every matching tweet — text, timestamp, language, likes, reposts, replies, quotes, bookmarks, views, author and attached media — as one row per tweet.
Give it one query or fifty. Each runs in turn, newest first or most engaged first, until you hit your cap or the results run out.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
searchQueries | list of text | — | Required. One or more searches. Operators go inside the text. |
sort | latest / top | latest | latest is newest first. top is the most engaged first. |
maxItems | integer | 100 | Caps the whole run, across every query. 0 means no limit. |
{"searchQueries": ["from:openai", "openai lang:en"],"sort": "top","maxItems": 100}
Operators you can put in a query:
| Operator | Matches |
|---|---|
from:handle | Tweets written by that account |
"exact phrase" | The phrase, word for word |
#hashtag | Tweets carrying the hashtag |
lang:en | Tweets X detected as English |
min_faves:100 | Tweets with at least 100 likes |
since:2026-10-01 until:2026-10-15 | A date window |
-filter:replies | Everything except replies |
(a OR b) | Either term. Every ( needs its ). |
Output
One row per tweet.
| Field | What it holds |
|---|---|
id, url | The tweet's ID and its link on x.com |
text, lang | What it says, and the language X detected |
created_at | Publish time, ISO 8601 UTC |
like_count, reply_count, repost_count, quote_count, bookmark_count, view_count | The six counters, as they read when the tweet was fetched |
author_handle, author_name, author_id, author_followers_count, author_is_blue_verified | The author, flattened for spreadsheets |
author | The author's full profile record |
media, hashtags, mentions, urls, card, article, place | Photos, videos and GIFs, hashtags, mentioned accounts, links with their destinations, link card, attached article, tagged place |
is_reply, in_reply_to_post_id, in_reply_to_handle, conversation_id | Where the tweet sits in a thread |
quoted_post, reposted_post | The tweet it quotes, or the original it reposts |
input_query | The query that found it, so several searches can share one dataset |
{"id": "2110399768232898915","url": "https://x.com/zerohedge/status/2110399768232898915","text": "*OPENAI COMPUTING CHIEF TO DEPART: WSJ","lang": "en","source": "Twitter for iPhone","created_at": "2026-10-14T15:58:08.000Z","like_count": 881,"reply_count": 39,"repost_count": 57,"quote_count": 28,"view_count": 175617,"bookmark_count": 52,"is_reply": false,"in_reply_to_post_id": null,"in_reply_to_user_id": null,"in_reply_to_handle": null,"conversation_id": "2110399768232898915","is_pinned": null,"hashtags": [],"author_id": "18856867","author_handle": "zerohedge","author_name": "zerohedge","author_followers_count": 3432237,"author_is_blue_verified": true,"input_query": "openai lang:en"}
The author, media, quoted_post, reposted_post and the other nested fields are cut from this example to keep it short. They are in every row.
Pricing
You pay for each tweet saved. A tweet that is skipped is never charged.
| Plan | Per 1,000 tweets |
|---|---|
| Free | $2.00 |
| Bronze | $1.69 |
| Silver | $1.38 |
| Gold and above | $1.08 |
Each run also carries a $0.00005 start charge. The Free plan covers the first 50 rows you save with this Actor; after that you need a paid plan.
Questions
Why did I get fewer tweets than maxItems?
A query stops when X stops returning pages for it or returns an empty one. Broad queries get cut off well before they run dry. Split them into date windows — since: and until: — and give each its own entry in searchQueries.
Does maxItems apply per query or to the whole run?
The whole run, in the order you list the queries. A busy first query can use the entire budget. Put the one you care about first, or run the queries separately.
What do latest and top change?
latest walks back from the newest tweet and goes as far as X lets it. top ranks by engagement and usually ends sooner. Use latest for monitoring and top for "what did people react to".
A row's text starts with "RT @". Where is the full tweet?
In reposted_post. On a repost, text is X's shortened form. A quote tweet keeps its own text, and the tweet it quotes sits in quoted_post.
What happens to a query X rejects? It is skipped, and the log says why — an unbalanced parenthesis is one cause. Other queries in the list still run. If every query is rejected, the run fails with that reason and nothing is charged.
Can I run this from code or on a schedule? Yes. Any Apify client works, and Apify's scheduler can run it hourly or daily:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("toolzerhub/twitter-scraper").call(run_input={"searchQueries": ["from:openai"], "maxItems": 50})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["created_at"], row["text"])
Are the counters exact? They are live numbers. Two runs a few minutes apart will disagree on likes and views. That is drift, not a fault.
Related Actors
| Actor | Use it when |
|---|---|
| Twitter Tweets Scraper | You want one account's own timeline rather than a search |
| Twitter Comments Scraper | You already have a tweet and want the replies under it |
| Twitter Profile Scraper | You need the full profile behind an author_handle |
| Twitter Followers Scraper | You want the accounts that follow an author |
Support
Questions, bugs, or feature requests: contact@toolzerhub.com
Browse the rest: apify.com/toolzerhub