Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Tweet Scraper - X / Twitter, No Login, Cheapest icon

Tweet Scraper - X / Twitter, No Login, Cheapest

Scrape X (Twitter) tweets by handle or URL, no API key. Rows carry text, likes, retweets, views and author. Search needs your X cookie.

5 from 1 review on Apify 972 runs on Apify $0.00014 per tweet ($0.14 / 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 twitterHandles, searchTerms, startUrls (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.00014 per tweet = $0.14 per 1,000

You are charged forWhenPrice
Tweet returnedCharged once per unique tweet returned in the dataset. Failed or empty runs are not charged.$0.00014

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-19, and they are what you are actually charged.

Inputs

FieldWhat it doesType
twitterHandlesX / Twitter usernames (with or without @) to scrape recent tweets from. The most reliable, fully keyless mode. Example: elonmusk, nasa.array
searchTermsFull X search queries (supports advanced operators like from:, since:, filter:media, min_faves:). Note: keyless search is rate-limited by X and less reliable than profile/URL modes. NOTE: X no longer serves search to signed-out clients (its SearchTimeline API answers guest tokens with an empty 404), so this mode needs the optional X session cookies below. Profile handles and tweet URLs work with no login.array
startUrlsPaste X/Twitter URLs directly, a profile URL (https://x.com/nasa) scrapes its timeline, a status URL (https://x.com/nasa/status/123) scrapes that single tweet via the stable syndication CDN.array
sortFor search terms: newest tweets (Latest) or most relevant (Top).string
sinceOnly keep tweets on/after this date (YYYY-MM-DD). Profile timelines have no server-side date filter, so the actor walks the timeline backwards (up to 80 pages) to reach the window; a window years in the past may be out of reach and the run will say how far back it got.string
untilOnly keep tweets on/before this date (YYYY-MM-DD). Profile timelines have no server-side date filter, so the actor walks the timeline backwards (up to 80 pages) to reach the window; a window years in the past may be out of reach and the run will say how far back it got.string
maxItemsMaximum number of tweets to collect across all inputs. You are charged per tweet returned.integer
includeRepliesFor profile timelines: include the account's replies, not just top-level tweets. Replies also require the optional X session cookies below; without them the run falls back to original tweets only and says so in a diagnostic row.boolean
onlyVerifiedUsersKeep only tweets whose author is verified (legacy or X Premium / blue).boolean
notionConnectorOptional. If set, the tweets are also delivered to your connected Notion via Apify MCP connectors, no extra code. Leave empty to just use the dataset.string
notionParentIdOptional Notion database/data-source id to create the pages in. If empty, pages are created privately in your workspace.string
xAuthTokenOptional. The auth_token cookie from a logged-in x.com browser session. Only needed for Search terms and for Include replies. X refuses both to signed-out clients. Profile handles and tweet URLs need no login. Use a throwaway account; X may rate-limit or lock accounts used for scraping.string
xCsrfTokenOptional. The ct0 (CSRF) cookie from the same logged-in x.com session as the auth_token above. Both must come from the same session or X rejects the request.string

What you get

A structured dataset — each result includes fields like:

idurltextcreatedAtlangreplyCountretweetCountlikeCountquoteCountviewCounthashtagsmentionsurlsmediaauthor

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

7 ready-to-run use cases

Twitter Archive Download for Any Public Account

Pull a public account's posting history in one run: text, date, engagement counts and media URLs, ready for CSV. Built around event and conference feeds.

Download All Tweets From an Account on X

Point this at any public handle and it walks the timeline back, returning each post with its text, date, likes, retweets, views, replies and media links.

Scrape Tweets by Hashtag or Keyword

Search any hashtag or phrase and get the posts as rows: text, author, date, likes, retweets and views. Sorted by top or latest, whichever you pick.

Twitter Profile Scraper for Any Public Account

Swap in any public handle and get that timeline back as data: post text, date, likes, retweets, views and media. Replies are left out by default.

Twitter Dataset: Export an Account's Posts to CSV

Build a dataset from a public X account: text, timestamp, language, likes, retweets, views and media links per post. Exports to CSV, JSON or Excel.

Social Listening on X: Track Brand Mentions

Search mentions of a brand and get the posts back with author, date and engagement counts. Add min_faves to skip the noise and keep the ones with reach.

Twitter Advanced Search, Exported as Data

Run X search the way you would type it, operators and all, like from:handle or min_faves:50, and get the matching posts back as rows instead of a feed.

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) User Scraper - Profiles & Followers, No Login iconSocial Media Scrapers

Twitter (X) User Scraper - Profiles & Followers, No Login

Scrape X (Twitter) profiles: followers, following, post count, name, bio and verification. No API key, no login. $0.14 per 1,000 profiles.

2 use cases

TikTok User Scraper - Profiles, Followers & Stats (No Login) iconSocial Media Scrapers

TikTok User Scraper - Profiles, Followers & Stats (No Login)

Scrape TikTok profiles without a login. Get follower, following, likes and video counts, bio, verified flag and avatar. $0.35 per 1,000 profiles.

1 use cases

Reddit Scraper iconSocial Media Scrapers

Reddit Scraper

Scrape Reddit posts with no login or API key. Rows carry titles, selftext, scores, authors, comment counts and permalinks. $0.50 per 1,000 rows, flat.

20 use cases

Reddit Posts Search Scraper iconSocial Media Scrapers

Reddit Posts Search Scraper

Search Reddit by keyword: title, post text, author, subreddit, permalink and dates. Add a free Reddit app for scores. $0.891 per 1,000 posts.

22 use cases

Reddit Video Scraper & Downloader iconSocial Media Scrapers

Reddit Video Scraper & Downloader

Download v.redd.it videos from any subreddit or Reddit user, with the audio joined back in. Get post details and dedupe. $0.03 per video record.

17 use cases

Telegram Channel Scraper iconSocial Media Scrapers

Telegram Channel Scraper

Scrape public Telegram channels with no bot token and no API key. Get post text, date, views, author, media links and subscriber count. $1.50 per 1,000.

21 use cases

See all Social Media Scrapers →

Tweet Scraper: tweets from a handle or a link, with no X API key

Give it X handles or tweet URLs and you get one row per tweet. The full text, likes, retweets, replies, views, media, hashtags, mentions, and the author it came from.

Handles and links need nothing from you. Search is the exception, and it is the thing to know first: X stopped serving search results to signed-out clients, so search terms and the include-replies option only work if you paste your own auth_token and ct0 cookies from a logged-in session. A throwaway account is the sensible way to do that, since X does not love accounts used this way.

One more. A tweet fetched from its own link comes from X's public tweet endpoint, which does not publish retweet, quote, bookmark or view counts. Those four fields are null on that kind of row, and they are filled in on rows that came from a timeline.

InputX handles, profile or tweet URLs, or search terms
OutputOne row per tweet
Ceiling5,000 tweets per run, 80 pages of timeline per handle
Account neededNone for handles and links. Your own X cookies for search and replies
Price$0.14 per 1,000 tweets, which is $0.00014 each, flat on every plan

🐦 What Tweet Scraper does

Three ways in, and you can mix them in one run.

Handles. Give it nasa and it walks that account's timeline, newest first, 40 tweets a page, up to 80 pages. This is the mode that needs nothing from you and the one to reach for.

URLs. A profile URL does the same as a handle. A status URL pulls that one tweet from X's public tweet endpoint.

Search terms. Full X search syntax, from:, min_faves:, filter:media and the rest, sorted Latest or Top. This is the mode that needs your cookies.

Tweets are deduped by id across every input, so overlapping handles and links do not cost you twice. onlyVerifiedUsers and the date window are applied before anything is written, and what they drop is not charged.

Dates are worth a note. A timeline has no date filter at X's end, so the run walks backwards until it reaches your window. A window years in the past can be out of reach, and when that happens the run writes a row saying how many tweets it examined and how far back it got, rather than pretending the account had nothing.

📥 What you give it

{
  "twitterHandles": ["nasa"],
  "maxItems": 200,
  "since": "2026-01-01",
  "onlyVerifiedUsers": false
}
FieldDefaultWhat it is
twitterHandlesnoneUsernames, with or without the @. The keyless mode.
startUrlsnoneX URLs. A profile scrapes its timeline, a status link scrapes that one tweet.
searchTermsnoneFull X queries. Needs both cookie fields below.
sortLatestFor search terms: Latest or Top.
since, untilnoneYYYY-MM-DD. until cuts at the start of that day in UTC, so add a day if you want the day itself.
maxItems100Tweets across the whole run, 1 to 5,000.
includeRepliesfalseAdds the account's replies to its timeline. Needs the cookies. Without them the run keeps going with original tweets and says so in a row.
onlyVerifiedUsersfalseKeep only tweets whose author is verified, legacy or Premium.
xAuthToken, xCsrfTokennoneYour own auth_token and ct0 cookies from one logged-in x.com session. Both fields are marked secret. Only search and replies use them.
notionConnector, notionParentIdnoneOptional. Also deliver the tweets into your connected Notion workspace.
proxyConfigurationApify defaultLeave it alone unless you have your own servers and a reason to use them.

📤 What you get back

A real row from a real run:

{
  "ok": true,
  "id": "2101770186156052959",
  "url": "https://x.com/NASA/status/2101770186156052959",
  "text": "RT @nasahqphoto: NASA astronuat Reid Wiseman joined the @Ravens NFL game today for @NASA's Inspiration Tour! Check out images: https://t.co…",
  "createdAt": "Sun Sep 20 20:27:16 +0000 2026",
  "lang": "en",
  "replyCount": 0,
  "retweetCount": 47,
  "likeCount": 0,
  "quoteCount": 0,
  "bookmarkCount": 0,
  "viewCount": 52178,
  "isReply": false,
  "isRetweet": true,
  "isQuote": false,
  "conversationId": "2101770186156052959",
  "inReplyToId": null,
  "inReplyToUser": null,
  "hashtags": [],
  "mentions": ["nasahqphoto", "Ravens", "NASA"],
  "urls": [],
  "media": [],
  "author": {
    "id": "11348282",
    "userName": "NASA",
    "name": "NASA",
    "description": null,
    "followersCount": null,
    "friendsCount": null,
    "statusesCount": null,
    "verified": true,
    "isBlueVerified": true,
    "location": "Pale Blue Dot",
    "profileImageUrl": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
    "createdAt": "Wed Dec 19 20:20:32 +0000 2007"
  }
}
FieldWhat it is
id, conversationIdThe tweet, and the thread it belongs to. Use id to dedupe across runs.
textThe whole thing, including the long-post body where there is one, not the truncated version.
likeCount, retweetCount, replyCount, quoteCount, bookmarkCount, viewCountNumbers at read time. The last four are null on a row that came from a single tweet link.
isReply, isRetweet, isQuoteWhat kind of tweet it is. The row above is a retweet, which is why likeCount is 0.
mediaPhotos and video, each with its type and a direct URL, and the best mp4 where there is one.
urlsLinks expanded, not the shortened t.co form.
authorThe account. The handle, name and verification flags are always there. Timeline rows also carry the location (when the account set one), the avatar and the join date. Pulled without cookies, the bio and follower counts come back null, as they do above.
createdAtX's own date string, not an ISO stamp.

🧾 Reading the output

Real tweets carry ok: true and an id. Notes carry ok: false and an errorCode, and they are never charged.

RowHow to spot itCharged
A tweetok is true and id is setyes
A diagnosticok is false, and errorCode says what happenedno
CodeWhat it means
BAD_INPUTSomething was asked for that this run cannot do: search terms or replies with no cookies set, or an address that is not an X profile or tweet.
NOT_FOUNDThe handle or tweet did not come back. Deleted, suspended, protected, or throttled at that moment, so retry a single tweet link once before concluding it is gone.
NO_RESULTSNothing matched. On a date window the row also carries how many tweets were examined, how many pages were walked and the oldest date reached.
RATE_LIMITEDX throttled the run. Wait and try again, or ask for fewer tweets.
BLOCKEDX would not open a session for the run at all.

▶️ How to run it

1. Open Tweet Scraper and click Try for free. 2. Put handles into Profile handles, one per line. Or paste links into Start URLs. 3. Set Max tweets. A hundred is a sensible first run. 4. Only if you need search or replies: paste your own auth_token and ct0 into the two cookie fields. 5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.

💰 How much does it cost?

$0.14 per 1,000 tweets, which is $0.00014 each. Flat on every Apify plan, no volume tiers.

You pay per tweet row. Diagnostics are not charged, and neither is anything the filters threw away: a duplicate seen twice across two inputs, a tweet outside your date window, an unverified author when you asked for verified only.

A thousand tweets is fourteen cents.

💡 What people use it for

  • A daily pull of what a set of accounts posted, deduped on id.
  • Engagement tracking: likes, retweets and views on your own account over time.
  • Pulling the media URLs off an account for an archive.
  • Watching announcements from a handful of official accounts without sitting in the app.
  • Feeding a Notion database straight from the run, using the two connector fields.

🚧 What it does not do

  • Search needs your own X cookies. So does including replies. X refuses both to signed-out

clients, and no setting here gets around it.

  • Protected, suspended and deleted accounts return nothing, and a note saying so.
  • A single tweet link carries fewer numbers. Retweets, quotes, bookmarks and views are null on

those rows, and there is no inReplyToId.

  • Author detail is thin without cookies. Bio and follower counts come back null on a timeline

pulled that way.

  • 80 pages of timeline per handle. A window far in the past may be out of reach, and the run

tells you how far back it got.

  • 5,000 tweets per run across all inputs.
  • Nothing private. No DMs, no analytics, no followers list, nothing behind a login.
  • The pinned tweet comes with the timeline and can sit out of date order.

🧭 Which social scraper do you need?

If you wantUse
Tweets from a handle, a profile or a single linkThis one
Tweets by keyword, without cookiesTwitter (X) Search Scraper
LinkedIn posts by keywordLinkedIn Post Search Scraper
Instagram profilesInstagram Profile Scraper

❓ Questions people ask

Do I need an X API key? No. Handles and links need nothing at all.

Why does my search return a note instead of tweets? Because no cookies were set. X serves search only to signed-in clients now. If you would rather not paste cookies, the keyword scraper linked above is the straightforward route.

Can I get a whole account history? Up to 80 pages back per handle, which is thousands of tweets on most accounts but not a full archive on a busy one.

Why is likeCount zero on a retweet? Because the likes belong to the original tweet. Look at isRetweet before reading the numbers.

Can I schedule it? Yes. Run it each morning with a since of yesterday and keep id as your key.

Is scraping X legal? These are public posts. They are personal data under GDPR and similar laws, so have a reason for holding them and be careful about republishing. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the handle or link and the run ID. If a diagnostic row landed, its errorCode and hint usually name the reason already. Never paste a cookie into an issue.