Twitter Profile Scraper — Extract Profiles, Tweets & Replies
Pricing
$14.99/month + usage
Twitter Profile Scraper — Extract Profiles, Tweets & Replies
Scrapes public Twitter X profiles, capturing usernames, bios, follower and following counts, tweets, media, timestamps, engagement stats, and profile URLs. Ideal for influencer research, competitor analysis, audience insights, and large-scale Twitter X profile data extraction
Pricing
$14.99/month + usage
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
Twitter Scraper — Extract Profiles, Tweets and Replies
Twitter/X Profile Scraper Plus 🚀 turns any public X account into three structured data types — flat profile records, tweets, and optional replies — delivered as typed JSON instead of raw HTML. Give it a handle, a numeric user ID, or a full x.com/twitter.com URL and it returns one row per profile with real columns for followers, bio, and verification, plus one row per tweet with view counts, media URLs, and engagement metrics. Unlike scraping frameworks that hand back raw HTML for you to parse, this Actor returns clean, flat fields ready for your database, spreadsheet, or LLM pipeline. This guide covers every input parameter, every output field, and the run patterns teams actually use it for.
🧭 What Does Twitter Scraper — Extract Profiles, Tweets and Replies Do?
Twitter/X Profile Scraper Plus is an Apify Actor that extracts public profile data, tweets, and (optionally) reply threads from X, formerly Twitter. It resolves any mix of profile URLs, @handles, plain usernames, or numeric user IDs into flat dataset rows: one row per profile (type: "profile"), one row per tweet (type: "tweet"), and — when reply scraping is enabled — one row per reply (type: "reply"). No X/Twitter account is required to scrape public profiles and tweets; the Actor authenticates its requests with a guest token it fetches automatically on every run. Only the optional reply-scraping mode (getReplies) needs your own logged-in session cookies.
Key capabilities:
- 👤 Flat profile records — followers, following, verification status, bio, location, website, join date, pinned tweet and account age, all as top-level columns instead of a nested object
- 🐦 Tweet records — full text,
viewCount, likes, retweets, replies, quotes, bookmarks, language, hashtags, mentions, and media URLs - 💬 Optional reply threads — fetched via the
TweetDetailendpoint and linked to their parent tweet throughparentTweetId - 🧮 Derived metrics computed locally at scrape time, with no extra requests —
followerFollowingRatio,accountAgeDays,tweetsPerDayon profiles,engagementRateon tweets - 🎯 Six tweet-level filters — date range, keyword include/exclude, language, minimum likes/retweets/replies, and media type (
onlyImages/onlyVideos/hasMedia) - 🔓 No login for public data — cookies (
authToken,csrfToken) are only read whengetRepliesis on
⚡ Features & Capabilities
Three things define this Actor's capability set: what it extracts, how it holds up against comparable X scrapers, and where it fits inside a broader data pipeline.
Core features
- Profile fields —
userId,screenName,name,profileUrl,description,followersCount,followingCount,tweetCount,listedCount,likesCount,mediaCount,verified,isBlueVerified,verifiedType,protected,location,website,joinedAt,profileImageUrl,profileBannerUrl,pinnedTweetId,professionalCategory - Derived profile metrics —
followerFollowingRatio(followers ÷ following, rounded to 3 decimals),accountAgeDays(days sincejoinedAt),tweetsPerDay(tweetCount÷accountAgeDays) - Tweet fields —
id,url,text,createdAt,likeCount,retweetCount,replyCount,quoteCount,bookmarkCount,viewCount,lang,hashtags,mentions,mediaUrls,videoUrls,mediaType, and the derivedengagementRate(sum of likes+retweets+replies+quotes ÷viewCount, rounded to 5 decimals —nullwhen the tweet has no recorded view count) - Two input styles that merge into one target list —
startUrls(full URLs,@handles, plain handles or numeric IDs) andtwitterHandles(plain usernames), deduplicated case-insensitively before scraping starts - Single output format — one flat Apify dataset, exportable to JSON, CSV, Excel, XML or HTML Table from the Apify Console like any Apify dataset
How Twitter/X Profile Scraper Plus compares to other Twitter scrapers
| Feature | Twitter/X Profile Scraper Plus | web.harvester/twitter-scraper | apidojo/twitter-user-scraper |
|---|---|---|---|
| Entity coverage | Profiles, tweets, replies | Profiles, tweets, with search (as observed on the Apify Store on 2026-07-26) | Profiles, followers, following, retweeters (as observed on the Apify Store on 2026-07-26) |
| Derived engagement metrics computed locally | ✅ followerFollowingRatio, accountAgeDays, tweetsPerDay, engagementRate | Not documented | Not documented |
| Follower / following list extraction | ❌ Not implemented | Not documented | ✅ Supported (as observed on the Apify Store on 2026-07-26) |
| Pricing model | Pay-per-event (row_result) | Flat monthly price (as observed on the Apify Store on 2026-07-26) | Pay-per-event (as observed on the Apify Store on 2026-07-26) |
| Login required for public data | No — guest token only | Claims "No Authentication Required" (as observed on the Apify Store on 2026-07-26) | Claims no login required (as observed on the Apify Store on 2026-07-26) |
| Reply/thread extraction | ✅ Via getReplies (needs your own cookies) | Claims reply threading support (as observed on the Apify Store on 2026-07-26) | Not documented |
If your use case is feeding structured data to an LLM, the derived-metrics row is the decision-maker — recomputing engagement ratios inside your own pipeline after the fact is extra code and extra failure surface that this Actor removes by doing it at scrape time. Neither competitor documents doing the same.
When another tool might suit you better
If your workflow genuinely needs follower or following lists — not just profile metadata — apidojo/twitter-user-scraper documents that capability (as observed on the Apify Store on 2026-07-26) and this Actor does not implement it at all. Likewise, if you need to reach deep historical archives across a wide date range on a single profile, delicious_zebu/advanced-x-twitter-profile-scraper documents date-range splitting (day/week/month) specifically built to defeat X's search result limits (as observed on the Apify Store on 2026-07-26); this Actor paginates the standard UserTweets timeline instead, which is simpler to run but was not built for exhaustive historical backfill.
Twitter/X Profile Scraper Plus within the Scrapio data stack
Twitter/X Profile Scraper Plus is Scrapio's only X/Twitter Actor — it covers profiles, tweets and replies on that one platform. For other platforms in the same account, use Instagram-Followers-Scraper-With-Lead-Enrichment or Instagram-Following-Scraper-With-Lead-Enrichment for Instagram network data, Facebook-Page-Posts-&-Comments-Scraper or Facebook-Group-Posts-&-Engagement-Scraper for Facebook, TikTok-Trending-Scraper-With-Trend-Insights for TikTok, and Reddit-Comments-and-Replies-Scraper for Reddit. For enriching any of these outputs with a contact channel, Website-Contact-&-Email-Extractor pulls emails from a domain.
Why do developers and data teams scrape Twitter/X?
🏢 Lead generation and influencer marketing teams
Sales and influencer-marketing teams feed a list of handles or profile URLs into startUrls, enable onlyUserInfo, and get back one clean row per prospect with followersCount, followingCount, location, website, description (bio) and professionalCategory. The followerFollowingRatio field is a fast filter for spotting accounts with real audiences rather than follow-for-follow accounts, and website is often the fastest path to an outbound domain for further enrichment before a CRM import.
📊 AI training data and RAG indexing
The description (bio) field on profiles and the text field on tweets are the high-information natural-language fields worth indexing for RAG — both come back as plain typed strings, not HTML fragments requiring cleanup. For RAG enrichment, pairing a profile's description with its most recent, highest-engagement tweets (filter on minFavorites/minRetweets) gives an agent grounded context about who an account is and what it discusses. For training data, hashtags and mentions arrays are consistently structured across every row, unlike free-text extraction from a rendered page.
📱 Competitive and market intelligence
Point the Actor at competitor or industry-figure handles on a schedule and track followersCount, tweetsPerDay and engagementRate over successive runs. A jump in tweetsPerDay or a spike in engagementRate on new tweets is a concrete, field-level signal of a campaign or announcement worth investigating, without watching the timeline manually.
🔬 Research and academic use
Public-data researchers use keywords, language, start/end and the minimum-engagement filters to build a bounded, reproducible tweet corpus for a single account or a small set of accounts, with lang letting studies restrict to a single language. All data returned is limited to what X exposes to a logged-out viewer.
🎥 Product and SaaS development
Products that offer "connect your X account" style enrichment, influencer directories, or social-proof widgets can call this Actor as their backend data source, mapping profileImageUrl, verifiedType and followersCount directly into a UI without building and maintaining a scraper of their own.
🍚 Input Parameters
All 23 input parameters, in the exact order defined in the Actor's input schema. None are marked required at the schema level, but the Actor logs a warning and exits with zero results if both startUrls and twitterHandles are empty.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
startUrls | No | array | List of Twitter/X profiles. Accepts full URLs (https://x.com/elonmusk), @handles, plain usernames, or numeric user IDs. Required if twitterHandles is empty. | ["https://x.com/elonmusk", "nasa"] |
twitterHandles | No | array | List of usernames without the @ (e.g. elonmusk). Merged with startUrls. Required if startUrls is empty. Default []. | ["OpenAI", "apify"] |
maxItems | No | integer | Hard cap on total rows written across the whole run (profiles + tweets + replies). Minimum 1, default 10. | 50 |
onlyUserInfo | No | boolean | When on, emits exactly one clean flat profile record per account (followers, following, verification, bio, website, join date, pinned tweet, derived metrics) and skips tweets entirely. Default false. | true |
includeUserInfo | No | boolean | When on (and onlyUserInfo is off), emits one flat profile record per account first, then its tweets. Default false. | true |
start | No | string | Lower bound for tweet date. Absolute (YYYY-MM-DD) or relative (7 days). Empty = no lower bound. | 2026-01-01 |
end | No | string | Upper bound for tweet date. Absolute (YYYY-MM-DD) or relative (1 day). Empty = no upper bound. | 1 day |
keywords | No | array | Keep only tweets whose text contains at least one of these terms (case-insensitive). Empty = no keyword filter. Default []. | ["launch", "funding"] |
excludeKeywords | No | array | Drop tweets whose text contains any of these terms (case-insensitive). Default []. | ["giveaway"] |
language | No | string | Keep only tweets in this X-detected BCP-47 language code (e.g. en, es, ja). Empty = any language. | en |
minFavorites | No | integer | Keep only tweets with at least this many likes. Minimum 0, default 0. | 100 |
minRetweets | No | integer | Keep only tweets with at least this many retweets. Minimum 0, default 0. | 20 |
minReplies | No | integer | Keep only tweets with at least this many replies. Minimum 0, default 0. | 5 |
excludeReplies | No | boolean | Drop tweets that are replies to another tweet (keeps only originals, quotes and retweets). Default false. | true |
includeNativeRetweets | No | boolean | When off, native retweets (text starts with RT @) are dropped. Only reliably present for the last ~7-10 days. Default false. | false |
onlyImages | No | boolean | Keep only tweets that contain at least one photo. Default false. | true |
onlyVideos | No | boolean | Keep only tweets that contain a video or animated GIF. Default false. | false |
hasMedia | No | boolean | Keep only tweets that contain at least one media item (photo, video or GIF). Default false. | false |
getReplies | No | boolean | Fetch replies to each qualifying tweet via the TweetDetail endpoint. Requires authToken + csrfToken cookies. Default false. | true |
minReplyCount | No | integer | Only fetch replies for tweets whose reply count is at least this value. Minimum 0, default 0. | 10 |
authToken | No | string (secret) | Value of the auth_token cookie from x.com (devtools → Application → Cookies). Required only for getReplies. | "<your auth_token cookie>" |
csrfToken | No | string (secret) | Value of the ct0 cookie from x.com. Required only for getReplies. | "<your ct0 cookie>" |
proxyConfiguration | No | object | Apify Proxy configuration. Recommended for reliability against rate limits. | { "useApifyProxy": true } |
Example input (JSON)
{"startUrls": ["https://x.com/elonmusk", "nasa"],"twitterHandles": [],"maxItems": 30,"onlyUserInfo": false,"includeUserInfo": true,"start": "7 days","end": "","keywords": [],"excludeKeywords": [],"language": "en","minFavorites": 50,"minRetweets": 0,"minReplies": 0,"excludeReplies": false,"includeNativeRetweets": false,"onlyImages": false,"onlyVideos": false,"hasMedia": false,"getReplies": false,"minReplyCount": 0,"proxyConfiguration": { "useApifyProxy": true }}
Supported URL types and input formats
startUrls and twitterHandles are merged into a single deduplicated target list before scraping. The Actor's normalize_input function accepts, per entry:
- A full profile URL —
https://x.com/elonmuskorhttps://twitter.com/elonmusk, with or withoutwww.; the handle is extracted with a regex against thex.com/twitter.comhost. - An
@handleor plain handle —@elonmuskorelonmusk; the leading@is stripped automatically. - A numeric user ID — a string of digits (e.g.
44196397) is passed straight through and resolved via the X user-lookup endpoint instead ofUserByScreenName.
Mixed input is fully supported in one run — startUrls: ["https://x.com/nasa"] alongside twitterHandles: ["elonmusk"] scrapes both accounts.
📦 Output Format
Every row is typed, flat JSON — no nested profile object to unwrap. type distinguishes a profile row ("profile") from a tweet row ("tweet") or a reply row ("reply"); isReply and isChild further mark replies. Results are exportable from the Apify dataset as JSON, CSV, Excel, XML or HTML Table.
The Actor's default dataset view surfaces 46 columns as a merged table across both entity types. The row itself carries more: the profile-building function writes 34 keys per profile row, and the tweet-shaping function writes 32 keys per tweet or reply row. Fields present in the row but not shown in the default view are: isChild, createdAtRaw, professionalType, defaultProfile, defaultProfileImage and bioEntities on profile rows; isChild, createdAtRaw, isQuote, conversationId, inReplyToScreenName and links on tweet/reply rows. Open a row in the dataset's JSON view (or download the full dataset) to see every key.
Output for a profile record
{"type": "profile","isChild": false,"isReply": false,"userId": "44196397","screenName": "elonmusk","name": "Elon Musk","profileUrl": "https://x.com/elonmusk","description": "...","followersCount": 229033543,"followingCount": 1226,"tweetCount": 89153,"listedCount": 165176,"likesCount": 182734,"mediaCount": 4211,"verified": false,"isBlueVerified": true,"verifiedType": "Blue","protected": false,"location": "...","website": "https://...","joinedAt": "2009-06-02T20:12:29Z","createdAtRaw": "Tue Jun 02 20:12:29 +0000 2009","profileImageUrl": "https://pbs.twimg.com/profile_images/....jpg","profileBannerUrl": "https://pbs.twimg.com/profile_banners/...","pinnedTweetId": "...","professionalCategory": null,"professionalType": null,"defaultProfile": false,"defaultProfileImage": false,"bioEntities": { "description": { "urls": [] } },"followerFollowingRatio": 186813.657,"accountAgeDays": 6240,"tweetsPerDay": 14.29,"scrapedAt": "2026-07-26T00:00:00Z"}
Output for a tweet or reply record
{"type": "tweet","isChild": false,"isReply": false,"id": "1519480761749016577","url": "https://x.com/elonmusk/status/1519480761749016577","text": "...","createdAt": "2022-04-28T00:56:58Z","createdAtRaw": "Thu Apr 28 00:56:58 +0000 2022","likeCount": 4289223,"retweetCount": 594435,"replyCount": 170050,"quoteCount": 167104,"bookmarkCount": 21112,"viewCount": 123456789,"lang": "en","isQuote": false,"conversationId": "1519480761749016577","userId": "44196397","screenName": "elonmusk","name": "Elon Musk","profileUrl": "https://x.com/elonmusk","parentTweetId": null,"inReplyToScreenName": null,"hashtags": [],"mentions": [],"links": [],"mediaUrls": [],"videoUrls": [],"mediaType": null,"mediaCount": 0,"engagementRate": 0.0421,"scrapedAt": "2026-07-26T00:00:00Z"}
A reply row has the identical shape with type: "reply", isChild: true, isReply: true, and parentTweetId set to the tweet it replies to. Fields that are genuinely unavailable come back as null rather than a fabricated placeholder value — for example viewCount (and therefore engagementRate) is null when X does not return a view count for that tweet, and professionalCategory is null for accounts without an X professional category.
Schema stability and export options
Field names are fixed by this Actor's own row-building code (build_profile_record and _shape_tweet in the source), so the schema does not shift just because X changes its front end — only if X removes the underlying GraphQL field entirely, in which case that key returns null instead of disappearing. Datasets are downloadable from the Apify Console or the Apify API in JSON, CSV, Excel, XML and HTML Table formats, the standard export set for every Apify dataset.
💡 Twitter Scraper — Extract Profiles, Tweets and Replies Strategy Guide
🎯 Strategy 1: Real-time enrichment pipeline
Trigger a run from your CRM or lead-gen tool whenever a new prospect handle comes in: pass a single entry in startUrls, set onlyUserInfo: true, and read back one row with followersCount, website, description and professionalCategory. Append those fields to the prospect's CRM record via the Apify API response or a downstream webhook consumer. Because onlyUserInfo returns exactly one row per account, this pattern costs one row_result charge per prospect enriched.
🎯 Strategy 2: Scheduled monitoring and alerting
Set up an Apify schedule to re-run the Actor daily against a fixed handle list with includeUserInfo: true. Diff each new run's followersCount, tweetsPerDay and engagementRate against the previous run's dataset (by userId), and alert when the delta crosses a threshold you define — for example a sudden jump in tweetsPerDay on a competitor account. The Actor itself has no built-in diffing; the comparison happens in your own scheduled pipeline against two dataset snapshots.
🎯 Strategy 3: Bulk dataset build
For a research or training corpus, put your full account list in twitterHandles, set maxItems to the total row budget for the run, and apply start/end plus the minimum-engagement filters to bound the corpus. Export the finished dataset as CSV or JSON directly from the Apify Console for downstream loading into a database or notebook. No concurrency limit is documented for this Actor beyond the platform-wide limits of your Apify plan.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Single-lead CRM enrichment | On-demand, one target per run | JSON row via API response |
| Scheduled monitoring | Tracking accounts over time | Recurring Apify schedule | Dataset diffed run-over-run |
| Bulk dataset build | Research or training corpora | One run, large target list | CSV/JSON export |
🌴 Related Twitter/X Scrapers & Tools
| Scraper | What it extracts |
|---|---|
Instagram-Followers-Scraper-With-Lead-Enrichment | Instagram follower lists with lead-enrichment fields |
Instagram-Following-Scraper-With-Lead-Enrichment | Instagram following lists with lead-enrichment fields |
Facebook-Page-Posts-&-Comments-Scraper | Facebook page posts and their comments |
Facebook-Group-Posts-&-Engagement-Scraper | Facebook group posts and engagement metrics |
TikTok-Trending-Scraper-With-Trend-Insights | TikTok trending videos with trend metadata |
Reddit-Comments-and-Replies-Scraper | Reddit comment threads and replies |
Website-Contact-&-Email-Extractor | Contact emails from a domain — pairs well with website on a profile row |
How to integrate Twitter/X Profile Scraper Plus with your stack
Twitter/X Profile Scraper Plus works with any language or tool that can call the Apify API — the Actor itself has no separate API surface beyond the standard Apify run and dataset endpoints.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"startUrls": ["https://x.com/elonmusk", "nasa"],"maxItems": 30,"includeUserInfo": True,"minFavorites": 50,"language": "en","proxyConfiguration": {"useApifyProxy": True},}run = client.actor("twitter-profile-scraper-plus").call(run_input=run_input)rows = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append(item)import csvwith open("twitter_export.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=sorted({k for r in rows for k in r}))writer.writeheader()writer.writerows(rows)print(f"Exported {len(rows)} rows to twitter_export.csv")
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const input = {startUrls: ['https://x.com/elonmusk', 'nasa'],maxItems: 30,includeUserInfo: true,minFavorites: 50,};const run = await client.actor('twitter-profile-scraper-plus').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Fetched ${items.length} rows`);console.log(items.slice(0, 3));
Async and scheduled pipelines
For large target lists, call .start() instead of .call() on either client to fire the run without blocking, then poll client.run(runId).get() or client.dataset(datasetId).listItems() once the run's status reaches SUCCEEDED. For recurring jobs, use an Apify schedule so the Actor runs on a cron-style interval without a client process running at all; the resulting dataset is available through the same API on completion.
🎯 Who Needs Twitter/X Profile Scraper Plus? (Use Cases & Industries)
🏢 Sales and lead-generation teams
A sales team scrapes a list of prospect handles with onlyUserInfo: true and pulls website, location and followersCount straight into an outbound sequencing tool, using followerFollowingRatio to deprioritize low-quality accounts before an SDR ever opens a profile manually.
📊 AI and RAG engineering teams
Teams building a retrieval index over public social commentary use description and text as the embedding source, with hashtags and mentions as structured metadata filters, avoiding an HTML-parsing step entirely.
📱 Competitive intelligence and marketing teams
Marketing teams track a fixed list of competitor and industry handles on a schedule, watching tweetsPerDay and engagementRate for shifts that precede or follow a product announcement.
🔬 Researchers
Academic and social-science researchers pull a bounded, reproducible set of public tweets for a small account list using start, end, language and the engagement-threshold filters, working only with data any logged-out viewer could see.
🎥 Product and SaaS builders
Teams building an influencer directory, a social-proof widget, or an "X-connected" enrichment feature call this Actor as their backend, mapping profileImageUrl, verifiedType and followersCount directly into their own product UI.
Is it legal to scrape Twitter/X?
Scraping publicly accessible data from X is generally lawful in the United States; in hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019), the Ninth Circuit held that scraping data a website makes available to a logged-out visitor likely does not violate the Computer Fraud and Abuse Act. That precedent concerns public-data access, not X's own Terms of Service — scraping in violation of X's Terms of Service is a potential contract/civil matter between the scraper and X, not a criminal one, and X can still act against an account or IP address it identifies as scraping. Because this Actor returns personal data about individual users — names, handles, bios, locations, follower graphs — anyone storing or processing that data is subject to data-protection obligations such as the GDPR (EU) or CCPA (California) wherever those laws apply to the data subject. Twitter/X Profile Scraper Plus returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.
❓ Frequently asked questions
Does Twitter/X Profile Scraper Plus work without a Twitter/X account?
Yes for profiles and tweets — the Actor authenticates with a guest token it fetches automatically, so no X login is required. An X account and its authToken/csrfToken cookies are only read when getReplies is enabled, since reply threads are fetched through an endpoint that requires a logged-in session.
How does Twitter/X Profile Scraper Plus handle X's anti-scraping measures?
It discovers X's current GraphQL query IDs and bearer token directly from X's own client JavaScript on every run (falling back to two hardcoded query IDs if discovery fails), and rotates through Apify Proxy when proxyConfiguration.useApifyProxy is enabled. Failed requests to a given endpoint are logged and the run moves on rather than retrying indefinitely.
Can I run Twitter/X Profile Scraper Plus at scale without getting blocked?
The Actor caps itself at 40 pages of the UserTweets timeline (50 tweets requested per page) for any single account before moving to the next target, regardless of maxItems — this is a hard limit in the Actor's own pagination loop, not an X-imposed number the Actor documents. No uptime or success-rate figure is published for this Actor.
How fresh is the data Twitter/X Profile Scraper Plus returns?
Every run performs a live fetch against X's GraphQL endpoints — nothing is served from a cache. Each row also carries its own scrapedAt timestamp recorded at the moment that row was built.
Which fields work best for AI training and RAG indexing?
For RAG, index description (a profile's bio) and text (a tweet's full body) — both are plain typed strings requiring no HTML cleanup. For training data, hashtags and mentions are the most consistently structured fields across every row, since they are always arrays (possibly empty) rather than optional nested objects.
Are follower or following lists included in the output?
No. This Actor does not implement follower-list or following-list extraction at all — only the counts (followersCount, followingCount) on a profile row. Actors such as apidojo/twitter-user-scraper document that capability separately (as observed on the Apify Store on 2026-07-26).
What happens to my personal data (cookies) when I use getReplies?
authToken and csrfToken are defined in the input schema with isSecret: true, which means the Apify platform encrypts and masks their values in logs and the Console UI; they are used only to authenticate the TweetDetail requests this Actor makes on your behalf during that run.
Does Twitter/X Profile Scraper Plus work with Claude, ChatGPT, and other AI agent tools?
There is no dedicated MCP server for this Actor. It is callable as a standard Apify Actor run by any agent framework that can call the Apify API — every response is typed JSON, so no HTML parsing step is needed before passing a result into an LLM context window.
How does Twitter/X Profile Scraper Plus compare to other Twitter scrapers?
apidojo/twitter-user-scraper documents follower/following/retweeter list extraction and event-based pricing per query type (as observed on the Apify Store on 2026-07-26) — stronger if network-graph data is your goal. delicious_zebu/advanced-x-twitter-profile-scraper documents date-range splitting built to reach deep historical archives beyond what a standard timeline scrape returns (as observed on the Apify Store on 2026-07-26) — stronger for exhaustive backfills on a single account. Twitter/X Profile Scraper Plus's advantage is the locally computed derived-metrics set (followerFollowingRatio, accountAgeDays, tweetsPerDay, engagementRate), which none of the three competitors document providing.
ℹ️ Disclaimer
Twitter/X Profile Scraper Plus extracts only publicly available data from Twitter/X. This tool is intended for lawful use cases only. Users are responsible for complying with Twitter/X's Terms of Service and applicable data protection laws in their jurisdiction.