Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
Twitter (X) Search Scraper icon

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.

676 runs on Apify $0.0004 per tweet ($0.4 / 1,000)
Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchTerms, sort, maxItems (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export 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 forWhenPrice
Tweet scrapedCharged once per tweet returned.$0.0004
Actor startFlat 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

FieldWhat it doesType
searchTermsX search queries (advanced operators supported).array
sortNewest or most relevant.string
maxItemsCharged per tweet.integer
sinceYYYY-MM-DDstring
untilYYYY-MM-DDstring
onlyVerifiedUsersKeep only verified authors.boolean
sessionCookiesOptional. 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
notionConnectorOptional Notion delivery.string
notionParentIdOptional Notion data-source id.string

What you get

A structured dataset — each result includes fields like:

textlikeCountretweetCountcreatedAturl

Export 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 iconSocial Media Scrapers

Twitter (X) List Scraper

Scrape every tweet from any X (Twitter) list: full text, likes, retweets, views, media, hashtags and author profile.

Ready to run — no setup

Threads Scraper iconSocial Media Scrapers

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.

Ready to run — no setup

Facebook Pages Scraper iconSocial Media Scrapers

Facebook Pages Scraper

Scrape public Facebook Page names, categories, likes, talking-about counts, verified badges and images without login.

Ready to run — no setup

LinkedIn Profile Posts Scraper iconSocial Media Scrapers

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.

Ready to run — no setup

LinkedIn Company Posts Scraper iconSocial Media Scrapers

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.

Ready to run — no setup

LinkedIn Post Comments Scraper iconSocial Media Scrapers

LinkedIn Post Comments Scraper

Scrape public LinkedIn post comments: author name, profile URL, reaction count. No login or cookie. Up to 10 per post.

Ready to run — no setup

See all Social Media Scrapers →

⚡ 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 F12Application tab → Cookieshttps://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

FieldDefaultNotes
searchTermsOne 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.
sortLatestLatest (newest first) or Top (X's relevance ranking).
maxItems1001–5,000 tweets per run. This is your spend cap — you are charged per tweet returned.
since / untilYYYY-MM-DD date bounds, applied to the query.
onlyVerifiedUsersfalseKeep only tweets from verified authors.
sessionCookiesOptional. 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.
proxyConfigurationApify 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 / notionParentIdOptional 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.