Twitter / X Scraper - Tweets, Profiles & Engagement avatar

Twitter / X Scraper - Tweets, Profiles & Engagement

Pricing

from $0.25 / 1,000 tweet scrapes

Go to Apify Store
Twitter / X Scraper - Tweets, Profiles & Engagement

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

Eimantas V

Maintained by Community

Actor 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

FieldNotes
textFull post text, including long posts that X truncates elsewhere
createdAtISO 8601, UTC
likeCount, retweetCount, replyCount
quoteCount, bookmarkCount, viewCountViews as X reports them
isRetweet, isReply, isQuote
retweetedFromThe account a retweet came from
authorHandle, authorName, authorFollowers, authorVerified
hashtags, mentions, linksLinks are expanded, not t.co
mediaUrls, mediaTypephoto, video or animated_gif
videoUrlsPlayable 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.

EventPrice
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 includeReplies only 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.

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.