X (Twitter) Profile Data Scraper — Bio, Followers, Verified avatar

X (Twitter) Profile Data Scraper — Bio, Followers, Verified

Pricing

from $5.00 / 1,000 account resolveds

Go to Apify Store
X (Twitter) Profile Data Scraper — Bio, Followers, Verified

X (Twitter) Profile Data Scraper — Bio, Followers, Verified

Get X (Twitter) profile data by handle, URL or user ID — bio, location, website, follower and following counts, join date, verification type. Bulk profile lookup, no tweets fetched, no login, no cookies, no API key. Charged only for profiles actually returned.

Pricing

from $5.00 / 1,000 account resolveds

Rating

0.0

(0)

Developer

Nicholas Cheng

Nicholas Cheng

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Share

X (Twitter) Profile Data Scraper

Give it a list of handles, get one clean profile record per account. No tweets, no timelines — just the account data: bio, location, website, follower and following counts, join date and verification type. No login, no cookies, no API key, no proxy configuration.

You are charged only for profiles that actually came back. A suspended, deleted, or misspelled handle produces an explanatory row and costs nothing.

InputX / Twitter handles, profile URLs, or numeric user IDs
OutputOne profile row per account, 40+ fields
Price$0.005 per profile — the same on every Apify plan
TweetsNot fetched. This Actor is the profiles-only mode of the X (Twitter) Profile & Tweets Scraper; use that one when you also want timelines

What you get

{
"itemType": "profile",
"userId": "11348282",
"userName": "NASA",
"url": "https://x.com/NASA",
"name": "NASA",
"description": "There's space for everybody. ✨",
"website": "https://www.nasa.gov",
"location": "Pale Blue Dot",
"createdAt": "2007-12-19T20:20:32.000Z",
"followers": 92359333,
"following": 63,
"tweetsCount": 76410,
"mediaCount": null,
"isVerified": true,
"isBlueVerified": true,
"verifiedType": "Government",
"verifiedSince": null,
"parodyCommentaryFanLabel": null,
"affiliatesCount": 74,
"isProfessional": false,
"isProtected": false,
"profilePicture": "https://pbs.twimg.com/profile_images/….jpg"
}

The fields that usually decide whether an account is what it claims to be come straight from X's own account metadata — nothing here is guessed or generated:

FieldWhy it matters
verifiedTypeGovernment, Business, or blank — separates official accounts from paid blue checks
verifiedSinceExact timestamp the account was verified
parodyCommentaryFanLabelX's mandatory label for parody / commentary / fan accounts
affiliatesCountHow many sub-accounts a business account has under it
createdAtAccount age, the cheapest signal against a freshly minted account with bought followers
tipjarBitcoin, Ethereum, PayPal, Venmo, Cash App, Patreon handles the account has published

Plus the standard set: description, descriptionUrls (expanded, not t.co), website, location, followers, following, tweetsCount, mediaCount, favouritesCount, professionalCategory, birthdate, isProtected, profilePicture (full resolution), coverPicture.

Since X rebuilt its web app in October 2026, some of these are no longer sent to logged-out visitors and come back as null: verifiedSince, verifiedReason, isIdentityVerified, parodyCommentaryFanLabel, professionalCategory, tipjar, mediaCount, favouritesCount, canDm, hasGraduatedAccess. They stay in the output so existing pipelines keep working; nothing is filled in by guesswork.


Input

{
"twitterHandles": ["nasa", "openai", "nytimes"],
"startUrls": [{ "url": "https://x.com/elonmusk" }],
"userIds": ["11348282"]
}
OptionNotes
twitterHandlesWith or without @. Pass as many as you like — they are all resolved in one run
startUrlsAny x.com/<handle> or twitter.com/<handle> URL, as copied from a browser
userIdsNumeric IDs, immune to username changes
maxItemsHard cap on rows for the run, to bound spend on a large list

Handles, URLs and IDs are merged and de-duplicated, so a messy list pasted from a spreadsheet is fine.


Pricing

$0.005 per profile, on every Apify plan — Free, Bronze, Silver, Gold, Platinum, Diamond. Check the Pricing tab: all six columns are identical. That is worth checking on any Actor you compare, including this one, because the price a listing advertises in its title is not always the price a free-plan run pays.

One thousand profiles cost $5. There is no per-run minimum; a run that returns one profile costs $0.005.

What you are not charged for

What happens here
Accounts that do not existSuspended, deleted, or misspelled handles produce one row marked chargedForThis: false. Nothing is billed.
Empty or placeholder rowsIf the profile did not come back, no profile row is written. There are no filler rows.
The free planSame code path, same fields, same limits. No demo mode, no row cap, no fields blanked out for free users.

What this Actor cannot do

  • No tweets. This is the profiles-only mode. For tweets, filters, incremental runs and single-tweet lookup use the X (Twitter) Profile & Tweets Scraper — same code, same prices, one more event.
  • No followers or following lists. X does not expose them to logged-out clients.
  • No keyword search. Same restriction.
  • Protected accounts return their profile (marked isProtected: true) — that part is public.

How it stays working

In October 2026 X rebuilt its web app: profile pages are now rendered on X's servers with the data embedded in the page. This Actor reads that embedded data directly — one page per account, no login, no API key, no guest token, no browser. It is plain parsing with no language model in the data path, so your output cannot drift between runs.


Integrating

curl -X POST "https://api.apify.com/v2/acts/nick.cheng~x-profile-data/run-sync-get-dataset-items?token=<TOKEN>" \
-H 'Content-Type: application/json' \
-d '{"twitterHandles":["nasa","openai"]}'

Official clients exist for JavaScript and Python, and results export as JSON, CSV, or Excel.