Twitter (X) Search Scraper
Scrape X (Twitter) search results by keyword and advanced query. Full text, engagement, author, media. $0.40 per 1,000 tweets plus a $0.00005 run start.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
searchTerms,sort,maxItems(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0004 per tweet = $0.4 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Tweet scraped | Charged once per tweet returned. | $0.0004 |
| Actor start | Flat fee charged once when the run starts. | $0.00005 |
Pay-per-event pricing: you are billed per result, not per subscription — a run that returns nothing costs nothing beyond the start fee. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-06-27, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
searchTerms | X search queries (advanced operators supported). | array |
sort | Newest or most relevant. | string |
maxItems | Charged per tweet. | integer |
since | YYYY-MM-DD | string |
until | YYYY-MM-DD | string |
onlyVerifiedUsers | Keep only verified authors. | boolean |
sessionCookies | Optional. Runs use a built-in session by default, and that session is shared, so under heavy concurrent load it is rate-limited across everyone using it. Supply your own account cookie here and the run uses only yours, giving you a rate limit nobody else draws on. In Chrome, logged in to x.com: F12 -> Application -> Cookies -> https://x.com, and copy auth_token and ct0. Paste one account per line as 'auth_token=XXXX; ct0=YYYY'. Several lines means several accounts, rotated. Stored as a secret and never logged. | array |
notionConnector | Optional Notion delivery. | string |
notionParentId | Optional Notion data-source id. | string |
What you get
A structured dataset — each result includes fields like:
textlikeCountretweetCountcreatedAturlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Social Media Scrapers
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
Twitter (X) List Scraper
Scrape every tweet from any X (Twitter) list: full text, likes, retweets, views, media, hashtags and author profile.
Threads Scraper
Scrape public Threads profiles and recent posts without login: bios, followers, post text, likes, timestamps and media URLs. From $0.40 per 1,000 results.
Facebook Pages Scraper
Scrape public Facebook Page names, categories, likes, talking-about counts, verified badges and images without login.
LinkedIn Profile Posts Scraper
LinkedIn profile posts scraper at $0.90 per 1,000 posts, flat on every plan. Post text, author, image, publish time and URL.
LinkedIn Company Posts Scraper
LinkedIn company posts scraper at $0.90 per 1,000 posts plus a $0.001 run start. Public post text, reactions, comments and URLs. No login or cookies needed.
LinkedIn Post Comments Scraper
Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.
Where this tool sits
- Categories
- Social Media Scrapers
- Platforms
- X (Twitter)
⚡ Twitter (X) Search Scraper - Tweets by Keyword
⚡ Scrape X (Twitter) SEARCH results by keyword/query (supports from:, min_faves:, filter:media, date operators). Runs out of the box — no API key to register, no cookie to go and find. Returns full text, engagement, author, media. Export JSON/CSV/Excel or deliver to Notion. Pay per tweet.
The login is handled for you
X only serves search to a signed-in session. This is not a fingerprinting or an address problem and no proxy fixes it: the same request that returns a full profile without any credentials returns nothing at all for a search. So the Actor carries a built-in session, and a run needs nothing from you but a query.
The built-in session is shared, and X counts its limits per account rather than per caller. Under heavy concurrent use it will throttle, and a run can then come back short or with a BLOCKED diagnostic row explaining why. That is the honest trade for not having to set anything up. If you are pulling at volume, or you simply do not want your throughput to depend on how busy the Actor is, put your own cookie in sessionCookies and the run uses only yours — a rate limit nobody else draws on.
How to get your own cookie (1 minute): 1. Log in to x.com in your browser (a throwaway account is fine, and a sensible choice). 2. Press F12 → Application tab → Cookies → https://x.com. 3. Copy the values of auth_token and ct0. 4. Paste into sessionCookies as auth_token=XXXX; ct0=YYYY — one account per line; several lines are rotated, and one going quiet does not stop the run.
> Cookies age out: an account that gets rate-limited or challenged is dropped for the rest of the run and the next one is used. If nothing usable is left, the run still succeeds — it returns one clearly labelled _sample row so you can see the output shape, and no per-tweet fee is charged for it.
Input
| Field | Default | Notes |
|---|---|---|
searchTerms | — | One or more X search queries. Advanced operators work as they do on x.com: from:, to:, min_faves:, min_retweets:, filter:media, -filter:replies, lang:, quoted phrases. |
sort | Latest | Latest (newest first) or Top (X's relevance ranking). |
maxItems | 100 | 1–5,000 tweets per run. This is your spend cap — you are charged per tweet returned. |
since / until | — | YYYY-MM-DD date bounds, applied to the query. |
onlyVerifiedUsers | false | Keep only tweets from verified authors. |
sessionCookies | — | Optional. Runs work without it. One auth_token=…; ct0=… pair per line to get a rate limit no other run shares; several lines are rotated. Stored as a secret. |
proxyConfiguration | Apify Proxy (datacenter / rented static) | Leave it alone unless you have your own proxy servers. The Actor goes out through rented static addresses with rotating Apify datacenter as the fallback; neither is billed per gigabyte, so neither adds to your cost. Metered groups (RESIDENTIAL) are not offered and are swapped for datacenter if requested. Your own servers in proxyUrls are used exactly as given. |
notionConnector / notionParentId | — | Optional direct delivery of the results into a Notion data source. |
Output
One row per tweet, deduplicated by tweet id across all your search terms:
id, url, text (the full note-tweet body when it is a long post, not the truncated version), createdAt, lang, replyCount, retweetCount, likeCount, quoteCount, bookmarkCount, viewCount, isReply, isRetweet, isQuote, conversationId, inReplyToId, inReplyToUser, hashtags, mentions, urls (expanded, not t.co), and media — each media entry with its type, image url and, for videos, the highest-bitrate MP4 variant.
Every row also carries a nested author object: id, userName, name, description, followersCount, friendsCount, statusesCount, verified, isBlueVerified, location, profileImageUrl and the account's own createdAt. That means you do not need a second profile-scraping run to know who posted — the follower count and bio come back attached to the tweet.
Counts are null rather than 0 when X does not expose them. When a search returns nothing, you get a single NO_RESULTS diagnostic row explaining that the cookies may be invalid or locked, instead of a silent empty dataset.
Pricing
$0.40 per 1,000 tweets ($0.0004 each), plus $0.00005 each time a run starts. Flat rate — no volume tiers, no plan gates — and you are charged only for tweets actually returned.
Diagnostic rows, the labelled _sample row, and runs that return nothing are never charged the per-tweet fee; an empty run costs the $0.00005 start fee alone. A full 5,000-tweet run costs $2.00. The nested author object and all media variants are included at that price — there is no enrichment surcharge.
> Scheduled change: from 19 August 2026 the run-start fee becomes $0.001. The per-tweet price of $0.0004 is unchanged.
Proxy traffic is included — the Actor uses only flat-rate egress (rented static addresses, Apify datacenter), so there is no per-gigabyte bandwidth surcharge on top of the per-tweet price above.