X(twitter) user profile and tweets scraper avatar

X(twitter) user profile and tweets scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
X(twitter) user profile and tweets scraper

X(twitter) user profile and tweets scraper

scrapes user timelines from X (Twitter) to extract tweets, user information, and engagement metrics. It works in guest mode without requiring authentication and can retrieve tweets from any public Twitter account.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Scraplib

Scraplib

Maintained by Community

Actor stats

1

Bookmarked

14

Total users

0

Monthly active users

13 days ago

Last modified

Share

Twitter User Timeline Scraper

Twitter User Timeline Scraper

Extract tweets from a public X (Twitter) user profile into structured JSON. Give the scraper a username and get back one record per tweet: the text, publication date, engagement counts, language, links, hashtags, attached photos and videos, quoted and replied-to tweets, and the author's public profile details. No X account, login or API key is required.

Key Features

  • One item per tweet: every tweet on the timeline becomes a clean, flat record.
  • Engagement metrics: retweets, likes, replies, quotes, bookmarks and views as reported by X.
  • Author profile: name, handle, verification and blue-verified status, follower and following counts, bio, location, profile image and banner.
  • Media details: photos and videos with their URLs, and the highest-bitrate video variant.
  • Conversation context: quoted tweets and the tweet a reply is pointing at.
  • Links and hashtags: expanded URLs and hashtags pulled from the tweet entities.
  • Filter what you collect: include or exclude replies and retweets.
  • No login required: only public profiles are read, in guest mode.

Who Is This For

  • Social media managers tracking what an account posts and how it performs.
  • Marketers and researchers collecting posts from brands, competitors or public figures.
  • Analysts building datasets of public posts for sentiment or topic analysis.
  • Developers who need timeline data as JSON, CSV or Excel through the Apify API.

Common Use Cases

  • Competitor monitoring: follow what rival brands post and which posts get engagement.
  • Content research: study the posting patterns, hashtags and links of accounts in your niche.
  • Brand and campaign tracking: archive an account's posts around a launch or an event.
  • Sentiment and topic analysis: feed tweet text into your own NLP pipeline.
  • Reporting: export timeline data into a spreadsheet or BI tool for recurring reports.

Input

FieldTypeDescriptionDefault
usernamestringThe X (Twitter) username to scrape, without the @. Required.elonmusk (prefill)
maxItemsintegerStop after this many tweets have been scraped.20
countintegerDeprecated alias of maxItems, kept so existing saved inputs keep working. maxItems wins when both are set.unset
includeRepliesbooleanWhether to include replies in the timeline.false
includeRetweetsbooleanWhether to include retweets in the timeline.true
proxyConfigurationobjectProxy settings. The Actor reads public timelines without a proxy; enable one if your runs are rate limited or geo-restricted.no proxy

Example input:

{
"username": "nasa",
"maxItems": 20,
"includeReplies": false,
"includeRetweets": true,
"proxyConfiguration": { "useApifyProxy": false }
}

Output

Each dataset item describes one tweet.

FieldTypeDescription
idstringTweet ID
textstringTweet text
created_atstring or nullPublication date in ISO 8601
retweet_countintegerNumber of retweets
favorite_countintegerNumber of likes
reply_countintegerNumber of replies
quote_countintegerNumber of quote tweets
bookmark_countintegerNumber of bookmarks
view_countintegerNumber of views
is_retweetbooleanWhether the tweet is a retweet
is_replybooleanWhether the tweet is a reply
is_quotebooleanWhether the tweet quotes another tweet
possibly_sensitivebooleanSensitivity flag reported by X
languagestringLanguage code detected by X
userobjectAuthor profile: id, name, screen_name, verified, blue_verified, followers_count, following_count, tweet_count, listed_count, description, location, profile_image_url, profile_banner_url, protected, created_at
urlsarrayExpanded links in the tweet, when it has any
hashtagsarrayHashtags in the tweet, when it has any
mediaarrayAttached media with type, url, expanded_url, display_url, and video_url, video_bitrate and video_content_type for videos
quoted_tweetobjectThe quoted tweet with id, text and user, when the tweet quotes another one
in_reply_toobjectThe tweet being replied to with status_id, user_id and screen_name, when the tweet is a reply

Example item, taken verbatim from a run against @NASA:

{
"id": "2100953558015250850",
"text": "No matter where you are, we all see the same Moon. 🌕\n\nSept. 19 is International Observe the Moon Night, an annual celebration dedicated to our closest celestial neighbor. Learn more and find ways to celebrate near you: https://t.co/OgllHIbnbK https://t.co/9eATNEkjNt",
"created_at": "2026-09-18T14:22:16+00:00",
"retweet_count": 534,
"favorite_count": 3245,
"reply_count": 121,
"quote_count": 37,
"bookmark_count": 154,
"view_count": 508702,
"is_retweet": false,
"is_reply": false,
"is_quote": false,
"possibly_sensitive": false,
"language": "en",
"url": "https://x.com/i/status/2100953558015250850",
"user": {
"id": "11348282",
"screen_name": "NASA",
"name": "NASA",
"description": "Making the seemingly impossible, possible. ✨",
"followers_count": 92372334,
"friends_count": 117,
"statuses_count": 74309,
"verified": true,
"profile_image_url": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg"
},
"urls": [
"https://go.nasa.gov/3Tf4do5"
],
"media": [
{
"type": "photo",
"url": "https://pbs.twimg.com/media/HSgWIKHXAAATBk1.jpg",
"expanded_url": "https://x.com/NASA/status/2100953558015250850/photo/1",
"display_url": "pic.x.com/9eATNEkjNt"
}
]
}

Fields that do not apply to a tweet are left out of the record: a tweet without media has no media key, a tweet that is not a reply has no in_reply_to key.

Pricing

This Actor is priced per result. You pay for each tweet stored in the dataset. The current price per result and per 1,000 results is shown on the Pricing tab of the Actor page on the Apify Store.

FAQ

Do I need an X (Twitter) account or API key? No. The Actor reads public timelines in guest mode and never logs in.

Can it scrape private or protected accounts? No. Only public profiles are readable without an account.

How many tweets can I get in one run? The Actor pages through the timeline until it has maxItems tweets or the profile runs out. How far back a public timeline goes is decided by X, not by the Actor.

What is the difference between maxItems and count? They are the same limit. count was the original field name and still works; maxItems is the current one and takes precedence when both are provided.

Why did my run return no tweets? X may rate limit or block a request. Retry later, or enable a proxy in the input. When the handle cannot be resolved, the run fails with a message naming the handle rather than storing an empty result.

Do I need a proxy? Not by default. Enable one in the proxy configuration if your runs get rate limited or if the profile is geo-restricted.

How do I export the results? Open the run's dataset on Apify and download it as JSON, CSV, Excel or XML, or fetch it through the Apify API.

Is scraping public tweets legal? The Actor only collects publicly available posts. You are responsible for using the data in line with applicable laws and X's terms.

More Scrapers by Scraplib

Contact & Support

Found a bug or need a new field? Open an issue on the Actor's Issues tab on the Apify Store. If this Actor saves you time, please leave a ⭐ rating on the Apify Store. Ratings keep it maintained.

Image Credit

Image credit: X, logo via Wikimedia Commons.