Twitter X Profile Scraper avatar

Twitter X Profile Scraper

Pricing

from $1.70 / 1,000 tweet scrapeds

Go to Apify Store
Twitter X Profile Scraper

Twitter X Profile Scraper

Scrape public Twitter / X profile data from profile URLs or usernames. Extracts bio, follower counts, verification, avatar, banner, and related profile fields without requiring a logged-in account.

Pricing

from $1.70 / 1,000 tweet scrapeds

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Twitter X Profile Scraper creates a structured dataset of public X (Twitter) profile records collected from x.com. Each dataset item can include the profile name, username, bio, follower/following/tweet counts, verification status, location, website, avatar and banner images, account creation date, and — when enabled — recent tweets. Query the source using profile URLs, bare usernames, or handles, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or XML.

Dataset at a glance

PropertyValue
Sourcex.com / twitter.com
Record unitOne profile (with optional nested recent tweets)
Input methodsProfile URLs, bare usernames or handles
Main identifiersid, username, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, XML
Update modelFresh records per Actor run
PricingPay per event — $2 per 1,000 tweets scraped

Coverage and available records

  • Supported inputs — Full profile URLs (https://x.com/elonmusk, https://twitter.com/NASA) or bare handles (elonmusk, @NASA).
  • Profile fields — Bio, display name, follower/following/tweet counts, verification flags, location, website, avatar/banner images, and account creation date.
  • TweetsincludeTweets optionally attaches recent tweets from each profile's timeline via anonymous guest access; capped by maxTweets per profile.
  • VerificationverifiedType, verificationReason, and isBlueVerified distinguish legacy, government, and business verification.
  • Public accounts only — Protected/suspended accounts are skipped without stopping the run.
  • Not currently collected — Follower lists, follower details, and full historical timelines beyond maxTweets.

Data dictionary

FieldTypeNullableDescriptionExample
idstringNoStable numeric user ID; best deduplication key11348282
urlstringNoCanonical profile URLhttps://x.com/NASA
usernamestringNoScreen name without @NASA
namestringYesDisplay nameNASA
descriptionstringYesProfile bioMaking the seemingly impossible...
locationstringYesSelf-declared locationPale Blue Dot
websitestringYesShort link shown on profilehttps://t.co/9NkQJKAVks
websiteExpandedstringYesExpanded website URLhttp://www.nasa.gov/
profileImageUrlstringYesAvatar image URLhttps://pbs.twimg.com/...
profileBannerUrlstringYesBanner image URLhttps://pbs.twimg.com/...
followersCountnumberYesFollower count92251042
followingCountnumberYesFollowing count119
tweetsCountnumberYesLifetime tweet count74301
mediaTweetsCountnumberYesLifetime media tweet count28065
favouritesCountnumberYesLifetime likes16906
isBlueVerifiedbooleanYesWhether the account is Blue-verifiedtrue
verifiedTypestringYesVerification categoryGovernment
verificationReasonstringYesExplanation of verificationThis account is verified because...
protectedbooleanYesWhether the account is protectedfalse
createdAtstringYesAccount creation timestampWed Dec 19 20:20:32 +0000 2007
tweetsarrayYesRecent tweets; only when includeTweets is enabled[ ... ]

Each nested tweet object includes id, url, text, createdAt, lang, replyCount, retweetCount, likeCount, quoteCount, viewCount, isRetweet, isReply, isQuote, media, hashtags, and urls.

Example dataset record

{
"id": "11348282",
"url": "https://x.com/NASA",
"username": "NASA",
"name": "NASA",
"description": "Making the seemingly impossible, possible.",
"location": "Pale Blue Dot",
"websiteExpanded": "http://www.nasa.gov/",
"profileImageUrl": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_400x400.jpg",
"followersCount": 92251042,
"followingCount": 119,
"tweetsCount": 74301,
"isBlueVerified": true,
"verifiedType": "Government",
"protected": false,
"createdAt": "Wed Dec 19 20:20:32 +0000 2007",
"tweets": [
{
"id": "2085462611575857621",
"url": "https://x.com/NASA/status/2085462611575857621",
"text": "It's a great time to tune in and stream space with us!",
"createdAt": "Thu Aug 06 20:26:47 +0000 2026",
"retweetCount": 196,
"likeCount": 1039
}
]
}

This record was produced by providing the profile URL https://x.com/NASA with includeTweets enabled.

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
profileUrlsarrayNoX/Twitter profile URLs or @ handlesProfiles to scrape
usernamesarrayNoBare handles (elonmusk)Additional profiles to scrape
includeTweetsbooleanNotruetrue / falseAttach recent tweets to each profile
maxTweetsintegerNo200 = noneMax tweets attached per profile
maxConcurrencyintegerNo10150Parallel profiles
maxItemsintegerNo00 = unlimitedMax profiles to scrape
proxyConfigurationobjectNoResidentialApify proxy configResidential proxy recommended

Minimal request:

{ "profileUrls": ["https://x.com/NASA"] }

Advanced request:

{
"usernames": ["NASA", "apify", "elonmusk"],
"includeTweets": true,
"maxTweets": 5,
"maxConcurrency": 5,
"maxItems": 100,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

  1. Start the Actor with a JSON input via the Apify API or the Actor's API tab.
  2. Wait for the run to finish.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset in JSON, CSV, Excel, or XML.
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("datascrapers/twitter-x-profile-scraper").call(
run_input={"usernames": ["NASA", "apify"], "includeTweets": True, "maxTweets": 5}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items

Data quality and record handling

  • Completeness — Core identity and count fields are present on public profiles; tweets is present only when includeTweets is enabled.
  • Deduplication — Use id (preferred) or username as the stable external key across runs.
  • Retries — Failed profiles are skipped and the run continues; a "profile unavailable" warning means the account does not exist or is suspended.
  • Normalization — Counts are returned as numbers; createdAt uses the source's native timestamp format.
  • Raw vs derived — All fields come directly from X's public profile/guest data; no AI-generated or computed values are added.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL/SupabaseDataset API or webhook consumerInfluencer database keyed by id
Google SheetsApify integrationFollower and verification tracking
S3/cloud storageScheduled export or integrationWeekly snapshot of profile metrics

Pricing and cost examples

Billing is pay-per-event, tiered across Apify plans; the rate below is the free-plan rate.

EventCharged whenFree-plan rate
tweet (Tweet scraped)A tweet is scraped for a profile (only when includeTweets is enabled)$2 per 1,000 tweets

A fixed one-time Actor Start charge of $0.00005 also applies to each run. Profile records themselves are not billed — the billable unit is the tweet. A run with includeTweets disabled produces profile records without per-item charges.

Tweets scrapedEstimated base cost
1,000$2
10,000$20

Estimates depend on the pricing model and the options enabled.

Limitations and responsible data use

  • Only publicly accessible profile data is collected via X's guest endpoint; no login or API key is used.
  • Protected, suspended, or non-existent accounts are skipped and are not returned.
  • Tweets are limited to recent timeline items up to maxTweets; full historical archives are not collected.
  • No historical snapshots are stored unless you persist them yourself across scheduled runs.
  • You are responsible for complying with X's terms and applicable privacy and data laws.

Dataset questions

What does one dataset item represent?

One X/Twitter profile. When includeTweets is enabled, the item also carries a nested tweets array of recent timeline posts.

Which field should I use as a unique identifier?

id is the stable numeric user ID; username is a readable fallback but can change if an account renames itself.

Are fields nullable or conditional?

Yes. tweets is absent unless includeTweets is enabled, and optional profile fields such as location or websiteExpanded may be empty.

Can I retrieve the records as CSV or JSON?

Yes. The default dataset can be exported as JSON, CSV, Excel, or XML from the Apify Console or via the Dataset API.

How do I paginate large datasets?

The Actor processes profiles up to maxItems. For very large exports, page through the dataset with the Dataset API offset and limit parameters.

What counts as a billable result?

One tweet event per tweet scraped. Profile records themselves are not billed; enabling includeTweets is what generates charges.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.