X (Twitter) Profile Scraper - Bio, Followers & Verified
Pricing
from $7.00 / 1,000 x/twitter profile scrapeds
X (Twitter) Profile Scraper - Bio, Followers & Verified
Bulk-enrich up to 100 X (Twitter) handles, @handles or profile URLs per run. Each profile row has bio, follower, following, tweet, media and listed counts, verified and business labels, website, location, join date and pinned tweet IDs, with optional top tweets. No login or cookies.
Pricing
from $7.00 / 1,000 x/twitter profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
7
Monthly active users
5 days ago
Last modified
Categories
Share
What is X (Twitter) Profile Scraper?
X (Twitter) Profile Scraper bulk-enriches up to 100 X (Twitter) accounts per run, with no login or cookies. Paste handles (openai), @handles (@levelsio) or profile URLs and get one profile row per account: bio, follower, following, tweet, media, listed and like counts, verified and blue-check status, business label, website, location, join date, pinned tweet IDs, plus two ready-made vetting metrics: accountAgeDays and followerToFollowingRatio.
Turn on includeTweets to add the public top tweets of each account to the same dataset.
| What you get | Fields |
|---|---|
| Identity | username, name, userId, profileUrl, bio, location, websiteUrl, avatarUrl, bannerUrl |
| Reach | followersCount, followingCount, tweetCount, mediaCount, listedCount, likesCount |
| Trust signals | isVerified, isBlueVerified, isProtected, businessLabel, accountCreatedAt, accountAgeDays, followerToFollowingRatio |
| Pinned content | pinnedTweetIds |
| Optional tweet rows | tweetUrl, text, createdAt, likeCount, repostCount, viewCount, bookmarkCount, mediaUrls |
Best fit
- Influencer and creator vetting: compare reach, account age and follower ratio across a shortlist.
- Lead enrichment: add bio, website and follower counts to a list of handles from your CRM.
- Brand and competitor snapshots: record follower counts for a set of accounts on a schedule.
- AI agents: one call returns flat profile rows for ranking or summarising accounts.
Which X (Twitter) Actor should I use?
This Actor is part of a family of public X (Twitter) Actors that share the same no-login approach and similar row fields. Pick the one that matches your job:
- Use X (Twitter) Replies Scraper instead when you only need replies to specific posts, with like/language filters and a resume cursor.
- Use X (Twitter) Quote Tweets Scraper instead when you need the quote tweets of a post, with the original post on every row.
- Use X Tweet Engagement Scraper instead when you want replies, quote tweets and retweeters of the same posts together in one run.
- Use X (Twitter) Retweeters Scraper instead when you only need the accounts that retweeted a post.
- This Actor is the right pick when you need bio, follower counts and verification for a list of accounts.
- Use X (Twitter) Following Scraper instead when you need the accounts a user follows.
- Use Twitter/X Scraper — Profiles & Followers instead when you need the followers of an account.
Practical scenario
A partnerships manager has 60 creator handles from a spreadsheet. She pastes them into profiles and runs the Actor once. She sorts the export by followersCount, removes accounts younger than a year with accountAgeDays, and uses followerToFollowingRatio to spot accounts that follow back almost everyone. The shortlist goes to outreach the same afternoon.
Input
| Field | Type | Default | Description |
|---|---|---|---|
profiles | array | required | 1–100 handles, @handles or profile URLs, for example openai, @levelsio, https://x.com/apify. |
includeTweets | boolean | false | Also save the public top tweets of each account. |
maxTweetsPerProfile | integer | 10 | Tweet rows per account when includeTweets is on (0–100). |
dedupeProfiles | boolean | true | Save each account once, even if listed twice. |
{"profiles": ["openai", "@apify", "https://x.com/levelsio"],"includeTweets": false}
Output
One profile row per account (and tweet rows when includeTweets is on). Sample profile row:
{"recordType": "profile","inputProfile": "apify","userId": "3510729917","username": "apify","name": "Apify","profileUrl": "https://x.com/apify","location": "The Interwebz","websiteUrl": "https://apify.com","isVerified": false,"isBlueVerified": false,"isProtected": false,"followersCount": 18542,"followingCount": 303,"tweetCount": 5074,"mediaCount": 1288,"listedCount": 151,"likesCount": 4562,"accountCreatedAt": "2015-09-01T08:38:01.000Z","accountAgeDays": 4058,"followerToFollowingRatio": 61.19,"pinnedTweetIds": ["2107116157706912139"],"scrapedAt": "2026-10-12T06:52:31.175Z"}
accountAgeDays and followerToFollowingRatio are computed from the public counts in the same row. Each run also writes OUTPUT and RUN_SUMMARY with an outcome (COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT or UPSTREAM_FAILED) and counts.
Pricing
Pay per event, with Apify platform usage included. You pay the x-profile-scraped event once per profile saved, the x-profile-tweet event once per optional tweet row, and the small apify-actor-start event. Duplicate handles are not charged. See the Pricing tab for current event prices.
Use with AI agents (MCP)
Actor identity: khadinakbar/x-twitter-profile-scraper.
Look up the X accounts openai, anthropicai and googledeepmind and rank them by followers, including how old each account is.
{ "profiles": ["openai", "anthropicai", "googledeepmind"] }
Read OUTPUT.outcome first. PARTIAL means some handles could not be loaded; VALID_EMPTY means none of the handles matched a public account.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/x-twitter-profile-scraper').call({profiles: ['openai', 'apify'],});const { items } = await client.dataset(run.defaultDatasetId).listItems({ clean: true });console.log(items.map((p) => [p.username, p.followersCount, p.accountAgeDays]));
Best results
- Start with handles or canonical profile URLs; both work.
- Keep
includeTweetsoff for pure enrichment; turn it on when you also need content examples. - Split lists longer than 100 accounts across several runs.
- Pair
followerToFollowingRatiowithaccountAgeDaysfor quick account-quality checks.
Builder's note
I built this for list enrichment: one row per account, flat columns, and nothing to stitch. I added accountAgeDays and followerToFollowingRatio because I found that almost every vetting sheet recomputed them by hand.
FAQ
Do I need an X account or cookies?
No. The Actor reads public profile data only.
Does it return followers lists?
It returns follower counts. For the follower accounts themselves, use the followers Actor listed above.
Are tweets a full timeline?
includeTweets adds the public top tweets of each account, which suits content examples. For a full timeline use X (Twitter) User Tweets Scraper instead.
Responsible use
This Actor collects publicly available X (Twitter) profile data. Use it in line with X's terms, privacy law and your own data policies. This Actor is not affiliated with or endorsed by X Corp.