Twitter / X Scraper - Tweets, Profiles & Engagement
Pricing
from $0.25 / 1,000 tweet scrapes
Twitter / X Scraper - Tweets, Profiles & Engagement
Scrape tweets from any public Twitter / X account by handle or URL. Full text, likes, retweets, replies, quotes, bookmarks and view counts, plus hashtags, mentions, expanded links, images and playable video URLs. Retweets carry the original post's engagement. No API key, no browser.
Pricing
from $0.25 / 1,000 tweet scrapes
Rating
0.0
(0)
Developer
Eimantas V
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Twitter / X Scraper — Tweets, Profiles & Engagement
Pull the posts from any public X (Twitter) account, with the numbers that matter attached: likes, retweets, replies, quotes, bookmarks and view counts. No login, no API key, no browser, and no X developer account.
Give it a handle, an @handle, or a profile URL. You get one row per tweet and one row per
account.
What you get for every tweet
| Field | Notes |
|---|---|
text | Full post text, including long posts that X truncates elsewhere |
createdAt | ISO 8601, UTC |
likeCount, retweetCount, replyCount | |
quoteCount, bookmarkCount, viewCount | Views as X reports them |
isRetweet, isReply, isQuote | |
retweetedFrom | The account a retweet came from |
authorHandle, authorName, authorFollowers, authorVerified | |
hashtags, mentions, links | Links are expanded, not t.co |
mediaUrls, mediaType | photo, video or animated_gif |
videoUrls | Playable MP4s, highest quality first — mediaUrls holds only the poster frame for a video |
lang, url, tweetId |
Retweets report the original post's engagement. X hands a retweet its own counters set to zero; this Actor reads through to the post that was retweeted, so a retweet of something with 805 likes says 805, not 0. That is the difference between usable data and a silently wrong column.
And for every account
displayName, description, followers, following, tweetsTotal, listedCount,
location, website, joinedAt, verified, profileImageUrl, bannerUrl — plus
tweetsFetched, pagesFetched and stoppedOn, so you can always tell why a run returned
what it did.
Pricing
Pay per result. You are charged for tweets you actually receive.
| Event | Price |
|---|---|
| Tweet scraped | $0.40 per 1,000 |
| Profile scraped | $0.002 each |
| Actor start | $0.00005 |
Accounts that do not exist, are suspended, or could not be reached are never charged — results are written to your dataset before any charge is raised, so you cannot be billed for something you did not get.
Example input
{"profiles": ["nasa", "@Interior", "https://x.com/NASAWebb"],"maxTweetsPerProfile": 100,"maxTotalTweets": 1000,"includeRetweets": true}
Example output
{"tweetId": "2100212144692179390","url": "https://x.com/nasa/status/2100212144692179390","text": "LIVE: Tune in as an uncrewed cargo spacecraft lifts off to the @Space_Station…","createdAt": "2026-09-16T13:16:05.000Z","authorHandle": "NASA","authorFollowers": 92368095,"isRetweet": false,"likeCount": 1969,"retweetCount": 353,"viewCount": 1647803,"mentions": ["Space_Station"],"mediaType": null,"lang": "en"}
Limits worth knowing before you run it
These are X's, not this Actor's, and no scraper can get around them:
- About 3,200 posts per account. X's own timeline stops there. Asking for more returns
what exists and says so in
stoppedOn. - Replies are not in the Posts timeline. X serves an account's replies on a separate tab
this Actor does not read, so
includeRepliesonly decides whether a reply that appears anyway is kept. It cannot fetch an account's reply history. - Protected accounts return no posts. The profile row still comes back, with real
follower counts and
stoppedOn: "protected", so you can tell "private" from "empty". - About 10 tweets per request. X returns 20 timeline entries whatever page size is asked for, and only some of them are posts — the first page of a timeline yields around 17, deeper pages fewer. Measured over a full run: 300 tweets took 29 requests. Speed is bounded by that, not by this Actor.
Speed and blocking
X rate-limits by address. The default settings run comfortably; if a run starts getting refused, raise Delay between requests or switch the proxy to the RESIDENTIAL group in the input — no rebuild needed. Guest sessions are renewed automatically when X expires them.
Integrations
Results land in a standard Apify dataset, so you can export to JSON, CSV or Excel, or push them onward with any Apify integration — Make, Zapier, Google Sheets, Slack, or the API. Two ready-made views are included: Tweets and Profiles.
Support
Something wrong, or a field you need that isn't here? Open an issue on this Actor's page — that reaches the developer directly and is the fastest way to get it fixed.
Is scraping X legal?
This Actor reads only public posts — the same content any logged-out visitor sees — and touches no private data and no account of yours. Scraping publicly available information is broadly lawful, but what you do with it is not automatically so: personal data carries obligations under the GDPR and similar laws, and X's own terms apply to you as a user. If you are collecting personal data at scale, take your own legal advice first.