Twitter Profile Scraper avatar

Twitter Profile Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Twitter Profile Scraper

Twitter Profile Scraper

🐦 Twitter Profile Scraper pulls rich X/Twitter profile data at scale — bio, name, username, verified, followers/following, links, location, join date, profile image & latest tweets. 📊 Export to CSV/JSON for research, lead gen & competitor analysis. ⚡ Fast, reliable, GDPR-friendly.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScrapePilot

ScrapePilot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Share

Twitter Profile Scraper

Twitter Profile Scraper is a production-ready Apify actor that extracts public Twitter/X profile and tweet data at scale for marketers, developers, data analysts, and researchers. It solves the pain of manual copy-paste and API hurdles by collecting structured tweet metadata and legacy profile info directly from public pages — ideal for social listening, lead gen, and competitor tracking. This Twitter profile data extractor helps you export Twitter profile data for analytics pipelines, enabling bulk workflows and repeatable automations.

What data / output can you get?

Below are the exact fields this Twitter user scraper tool writes to the Apify dataset. Records are pushed live during the run and can be exported to JSON or CSV.

Data fieldDescriptionExample value
id_strUnique tweet ID (string)"1519480761749016577"
full_textFull text of the tweet"Next I'm buying Coca-Cola to put the cocaine back in"
created_atTweet creation time (Twitter format)"Thu Apr 28 00:56:58 +0000 2022"
favorite_countNumber of likes4289223
retweet_countNumber of retweets594435
reply_countNumber of replies170050
quote_countNumber of quotes167104
bookmark_countNumber of bookmarks (defaults to 0 if missing)21112
user_id_strAuthor’s user ID (string)"44196397"
conversation_id_strRoot conversation ID (string)"1519480761749016577"
langTweet language code"en"
is_quote_statusWhether the tweet is a quotefalse
favoritedWhether the tweet is favorited by the viewing sessionfalse
retweetedWhether the tweet is retweeted by the viewing sessionfalse
bookmarkedWhether the tweet is bookmarked by the viewing session (defaults to false if missing)false
display_text_rangeVisible text range indices[0, 52]
entitiesEntities object (hashtags, mentions, urls) with an added timestamps array{ "hashtags": [], "user_mentions": [], "urls": [], "timestamps": [] }
extended_entitiesExtended entities (e.g., media) when availablenull
userLegacy user profile object for the tweet author{ "screen_name": "elonmusk", "name": "Elon Musk", "description": "Mars & Cars, Chips & Dips", "followers_count": 229033543, "friends_count": 1226, "statuses_count": 89153, "created_at": "Tue Jun 02 20:12:29 +0000 2009", "verified": true, "profile_image_url": "https://pbs.twimg.com/profile_images/...", "profile_banner_url": "https://pbs.twimg.com/profile_banners/..." }

Notes:

  • When addUserInfo is false, the user field is removed.
  • If onlyUserInfo is true, the actor outputs a single object per input with user (legacy profile) only.
  • If a user cannot be found or is suspended and you enable the respective flags, the actor can output lightweight records like {"user": {"screen_name": "

Key features

  • ⚡ Robust proxy fallback & rotation — Automatic progression from direct to datacenter to residential proxies with retries to reduce blocks and keep runs reliable.
  • 🧠 Authorization capture without API keys — Dynamically captures the required Bearer authorization via Playwright; perfect for a Twitter profile scraper without API credentials.
  • 📚 Profile + tweet metadata — Optionally include legacy profile data in each tweet (addUserInfo) or fetch profiles only (onlyUserInfo) for a focused Twitter bio scraper workflow.
  • 🔎 Keyword search support — Treat non-URL/handle inputs as keywords and collect search timeline tweets at scale.
  • 📥 Bulk inputs — Feed lists of profile URLs, @handles, user IDs, or keywords via startUrls for a true bulk Twitter profile scraper.
  • 🎛️ Flexible limits — Control tweet collection with maxTweets; the actor enforces a minimum of 10 and internally caps at 1000.
  • 💾 Clean, structured exports — Export Twitter profile data and tweets from the dataset to JSON or CSV for downstream analytics and BI.
  • 🧩 Developer-friendly — Works seamlessly with the Apify platform and API, making it easy to integrate into Python pipelines and automation stacks.
  • 🛡️ Production-grade reliability — Live saving to the dataset, graceful handling of rate limits, and resilient pagination for uninterrupted runs.

How to use Twitter Profile Scraper - step by step

  1. Create or log in to your Apify account
    You’ll run the actor in the Apify cloud and store results in an Apify dataset.

  2. Open the Twitter Profile Scraper actor
    Find “Twitter Profile Scraper” in the Apify Store and click Try for free.

  3. Add input data in startUrls
    Paste Twitter/X profile URLs, usernames, user IDs, or keywords. Examples:

  4. Configure options

    • maxTweets to control how many tweets to fetch per user/keyword
    • sortOrder to set chronological or relevance (as available)
    • addUserInfo to include legacy user data with each tweet
    • onlyUserInfo to fetch profile info only (no tweets)
    • addNotFoundUsersToOutput / addSuspendedUsersToOutput to flag edge cases
    • proxyConfiguration to enable Apify Proxy and allow automatic fallback
  5. Start the run
    Click Start. The actor will capture authorization, resolve users or keywords, and begin fetching tweets with pagination.

  6. Monitor progress
    Watch logs for pagination steps and any proxy fallbacks. Data is pushed live to the default dataset as it’s collected.

  7. Download results
    Go to the Dataset tab for your run and export to JSON or CSV. Use these outputs for research, lead gen, or analytics pipelines.

Pro tip: Use the Apify API to pull dataset items directly into your data stack, or schedule runs to refresh influencer and competitor datasets automatically.

Use cases

Use caseDescription
Marketing analytics – influencer trackingMonitor verified or high-reach accounts, collect tweet performance (likes, replies, quotes, bookmarks), and analyze content cadence.
Competitor research – content strategyAggregate tweets from competitor handles to study topics, engagement patterns, and campaign timing.
Lead generation – audience signalsUse bios and legacy profile fields to build segmented lists from public profiles relevant to your niche.
Academic research – discourse analysisCollect tweets by keyword or handle for language, sentiment, or trend studies with consistent metadata.
Social listening – keyword monitoringTrack keywords and hashtags via search inputs and export structured timelines for dashboards.
Data engineering – API pipelinesAutomate dataset refreshes and consume JSON/CSV outputs from the Apify API into warehouses or ML pipelines.

Why choose Twitter Profile Scraper?

Built for precision, automation, and reliability, this X profile scraper scales from single handles to large profile lists with structured outputs you can trust.

  • 🎯 Accurate, structured results — Clean tweet fields and legacy profile objects ready for analysis without heavy post-processing.
  • 🌍 Scalable batch operations — Feed many profiles/keywords via startUrls to run a true Twitter profile crawler at scale.
  • 🧑‍💻 Developer access — Integrate via Apify’s API in Python scripts and CI/CD workflows for repeatable automations.
  • 🔐 Safe & robust — Automatic proxy fallback and retries reduce blocks versus brittle browser extensions and unstable tools.
  • 💸 Cost-optimised & reliable — Live dataset writes and resilient pagination reduce reruns and wasted compute.
  • 🔌 Integration-ready — Export Twitter profile data to JSON/CSV and plug into CRMs, BI tools, or data lakes.

In short: a production-grade Twitter profile information scraper that outperforms quick hacks and extensions with stability and clean data.

Yes — when done responsibly. This actor extracts publicly available Twitter/X data and does not target private or login-only content.

Guidelines for compliant use:

  • Collect only publicly visible data and respect the platform’s Terms of Service.
  • Avoid scraping private profiles or attempting to bypass security.
  • Use proxies ethically and rate-limit-aware practices to prevent abuse.
  • Ensure your use aligns with data protection laws (e.g., GDPR/CCPA) and consult your legal counsel for edge cases.

Input parameters & output format

Example JSON input

{
"startUrls": [
"https://x.com/elonmusk",
"mrbeast",
"44196397",
"tesla"
],
"maxTweets": 100,
"sortOrder": "chronological",
"addUserInfo": true,
"onlyUserInfo": false,
"addNotFoundUsersToOutput": false,
"addSuspendedUsersToOutput": false,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Parameter reference

FieldTypeRequiredDefaultDescription
startUrlsarrayYesList of Twitter profile URLs (e.g., https://x.com/username), usernames (e.g., username), user IDs (e.g., 44196397), or search keywords (e.g., tesla). Supports bulk input.
maxTweetsintegerNo10Maximum number of tweets to fetch per user or keyword. (Schema range: 1–100; actor enforces a minimum of 10 and internally caps at 1000.)
sortOrderstring (enum)NochronologicalSort order for tweets (currently supports chronological order from API). Allowed values: “chronological”, “relevance”.
addUserInfobooleanNotrueInclude user profile data (legacy) in each tweet output.
onlyUserInfobooleanNofalseIf enabled, only fetch user profile information without tweets.
addNotFoundUsersToOutputbooleanNofalseInclude users that were not found in the output with notFound flag.
addSuspendedUsersToOutputbooleanNofalseInclude suspended users in the output with suspended flag.
proxyConfigurationobjectNo{"useApifyProxy": false}Proxy configuration. By default, no proxy is used. If Twitter blocks requests, the actor will automatically fallback to datacenter proxy, then residential proxy with retries.

Example JSON output

{
"user": {
"screen_name": "elonmusk",
"name": "Elon Musk",
"description": "Mars & Cars, Chips & Dips",
"followers_count": 229033543,
"friends_count": 1226,
"statuses_count": 89153,
"favourites_count": 182734,
"listed_count": 165176,
"created_at": "Tue Jun 02 20:12:29 +0000 2009",
"verified": true,
"profile_image_url": "https://pbs.twimg.com/profile_images/...",
"profile_banner_url": "https://pbs.twimg.com/profile_banners/...",
"default_profile": false,
"default_profile_image": false,
"entities": {
"description": {
"urls": []
}
}
},
"id_str": "1519480761749016577",
"full_text": "Next I'm buying Coca-Cola to put the cocaine back in",
"created_at": "Thu Apr 28 00:56:58 +0000 2022",
"favorite_count": 4289223,
"retweet_count": 594435,
"reply_count": 170050,
"quote_count": 167104,
"bookmark_count": 21112,
"conversation_id_str": "1519480761749016577",
"user_id_str": "44196397",
"lang": "en",
"is_quote_status": false,
"favorited": false,
"retweeted": false,
"bookmarked": false,
"display_text_range": [0, 52],
"entities": {
"hashtags": [],
"symbols": [],
"user_mentions": [],
"urls": [],
"timestamps": []
},
"extended_entities": null
}

Output variations:

  • If addUserInfo is false, the user object is omitted from tweet records.
  • If onlyUserInfo is true, the actor outputs one object per input with user only (no tweet fields).
  • With addNotFoundUsersToOutput or addSuspendedUsersToOutput enabled, records may include notFound: true or suspended: true alongside a minimal user object containing screen_name.

FAQ

What does this Twitter Profile Scraper collect?

It collects tweet-level fields like id_str, full_text, created_at, engagement counts (likes, replies, retweets, quotes, bookmarks), language, entities, and more. When addUserInfo is enabled, it also includes the legacy user profile object with fields such as screen_name, name, description, followers_count, and profile images.

Can I scrape by handle, URL, user ID, or keyword?

Yes. Provide profile URLs, @handles, numeric user IDs, or keywords in startUrls. Non-URL/handle inputs that don’t look like IDs are treated as keyword searches.

Does it require API keys?

No. The actor dynamically captures the required authorization header using Playwright and then queries public endpoints — a practical approach for an X profile scraper without API keys.

How many tweets can I fetch per profile?

You control this with maxTweets. The UI schema allows 1–100; the actor enforces a minimum of 10 and internally caps at 1000 to balance performance and reliability.

Can I export the data?

Yes. You can export results from the Apify dataset to JSON or CSV and feed them into BI tools, CRMs, or data pipelines to export Twitter profile data efficiently.

Can I include only profile information without tweets?

Yes. Set onlyUserInfo to true to fetch the legacy profile object only. You can also include not-found or suspended markers using addNotFoundUsersToOutput and addSuspendedUsersToOutput.

How does it handle blocks and rate limits?

The actor features automatic proxy fallback: direct connection → datacenter proxy → residential proxy with retries. This reduces blocks and maintains stable scraping at scale.

Does it work with Python and automation tools?

Yes. Use the Apify API from Python to pull datasets or trigger runs. It’s easy to integrate this Twitter profile scraper Python workflow into larger automations.

Closing CTA / Final thoughts

Twitter Profile Scraper is built for fast, reliable extraction of public Twitter/X profile and tweet data at scale. With robust proxy fallback, flexible inputs (URLs, handles, IDs, keywords), and clean JSON/CSV outputs, it’s ideal for marketers, analysts, researchers, and developers. Use the Apify API to automate refreshes, plug results into your data stack, and keep tabs on influencers and competitors with confidence. Start extracting smarter social insights today.