Twitter Lead Scraper avatar

Twitter Lead Scraper

Pricing

from $0.90 / 1,000 lead profiles

Go to Apify Store
Twitter Lead Scraper

Twitter Lead Scraper

Collect public X profiles from handles, profile URLs, or one keyword or niche query. Get structured lead fields such as bios, audience counts, public emails, websites, and links, or collect follower and following account identifiers. No X login or API key is needed.

Pricing

from $0.90 / 1,000 lead profiles

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

🎯 Turn public X profiles into useful lead rows

Sales teams, lead researchers, and developers can turn public X handles, @handles, and profile URLs into structured lead data. Each saved lead profile has its public identity and can include a bio, audience counts, public contact fields, a website, published links, and first-match trace data when available. You can also find profiles with one keyword or niche query, or collect follower and following account identifiers.

📇 Public X lead profiles and relationship accounts

Use lead profile mode for account handles, @handles, profile URLs, or one keyword or niche query. Lead rows keep the canonical identity and, when available, the submitted reference or discovery query. They can also include the public bio and location, follower and following counts, posts, follower tier, public emails, primary email, public phone, website, published links, verification, protection, account creation time, and profile image when available. Use relationship account mode to save follower or following usernames or numeric public user IDs with the target and relationship type.

Each eligible account is saved at its first match. If the same account appears again from another handle, URL, query, ID, or submitted value, the later match is ignored. Trace fields describe only the first saved match.

▶️ Choose a profile or relationship run

  1. Choose leadProfiles to collect enriched public profiles, or relationshipAccounts to collect follower or following identifiers.
  2. For lead profiles, choose account references or one keyword or niche query.
  3. For relationship accounts, choose followers or following, add one or more targets, and choose usernames or numeric user IDs.
  4. Add lead filters or set a work limit when you need a smaller collection.
  5. Run the Actor and open the default dataset.

Leave maxCandidates empty to return all available results until the source is exhausted. Leave maxRelationshipAccounts empty to return all available results until the source is exhausted.

⚙️ Input

Choose leadProfiles or relationshipAccounts. profileSearch fields are used for lead profiles, and relationshipSearch fields are used for relationship accounts. Fields for the other mode are ignored. The filters apply only to lead profiles.

Input fields

FieldTypeWhat it does
resultTypestringSelects leadProfiles for enriched profiles or relationshipAccounts for follower and following identifiers.
profileSearchobjectGroups the source settings for lead profile collection.
profileSearch.findProfilesBystringChooses submitted account references or one keyword or niche query.
profileSearch.accountReferencesstring[]Adds public X handles, @handles, or profile URLs to enrich.
profileSearch.keywordQuerystringFinds public X accounts or influencers from one keyword or niche query.
profileSearch.maxCandidatesintegerSets an optional cap for the one query. Leave it empty to return all available results until the source is exhausted.
relationshipSearchobjectGroups the settings for follower or following collection.
relationshipSearch.collectAccountsBystringSelects public accounts that follow the target or public accounts that the target follows.
relationshipSearch.relationshipTargetsstring[]Adds public X usernames or numeric public user IDs as relationship targets. Usernames may include or omit @.
relationshipSearch.maxRelationshipAccountsintegerSets an optional cap for each target. Leave it empty to return all available results until the source is exhausted.
relationshipSearch.relationshipResultFormatstringChooses usernames or numeric public user IDs for accountIdentifier.
requireEmailbooleanFor lead profiles, keeps only accounts that publish an email address.
requireWebsitebooleanFor lead profiles, keeps only accounts that publish a website.
minFollowersintegerFor lead profiles, keeps accounts with at least this many followers.
maxFollowersintegerFor lead profiles, keeps accounts with no more than this many followers.
bioIncludeTermsstring[]For lead profiles, keeps accounts whose bio mentions at least one chosen term.
bioExcludeTermsstring[]For lead profiles, removes accounts whose bio mentions at least one chosen term.
locationContainsstringFor lead profiles, keeps accounts whose public location contains this text.

Example input

This input is copied from a successful current-beta default-input run:

{
"resultType": "leadProfiles",
"profileSearch": {
"findProfilesBy": "accountReferences",
"accountReferences": [
"@apify"
]
},
"requireEmail": false,
"requireWebsite": false,
"relationshipSearch": {
"collectAccountsBy": "followers",
"relationshipResultFormat": "username"
}
}

🧾 Output

The default dataset contains one of two shapes, selected by resultType. Optional lead fields can be missing when the public source does not provide them.

Lead profile

FieldTypeWhat it does
recordTypestringIs always leadProfile for this shape.
userIdstringGives the canonical public X account identifier.
usernamestringGives the account username.
displayNamestringGives the public display name.
profileUrlstring (URL)Gives the canonical public X profile URL.
submittedReferencestring (optional)Keeps the handle or profile URL that first caused this row to be saved.
discoveryQuerystring (optional)Keeps the keyword or niche query that first caused this row to be saved.
biostring (optional)Gives the public profile bio.
locationstring (optional)Gives the public profile location.
followersCountinteger (optional)Gives the reported follower count.
followingCountinteger (optional)Gives the number of accounts followed by this account.
postsCountinteger (optional)Gives the reported public post or activity count.
followerTierstring (optional)Gives the reported follower-size tier.
emailsarray of strings (optional)Lists public email addresses published by the account.
primaryEmailstring (email, optional)Gives the primary public email address when present.
phoneNumberstring (optional)Gives a phone number publicly published by the account.
websiteUrlstring (URL, optional)Gives the resolved website URL published on the profile.
publishedLinksarray of strings (URLs, optional)Lists other links published by the account.
isVerifiedboolean (optional)Says whether the source reports the account as publicly verified.
isProtectedboolean (optional)Says whether the source reports the account as protected.
createdAtstring (date-time, optional)Gives the account creation time reported by the source.
profileImageUrlstring (URL, optional)Gives the public profile image URL.

This complete lead row came from a successful current-beta run:

{
"recordType": "leadProfile",
"userId": "1534392378890637314",
"username": "jones_deakon",
"displayName": "Deakon “showtime” jones",
"profileUrl": "https://x.com/jones_deakon",
"submittedReference": "https://x.com/jones_deakon",
"bio": "Stillwater highschool, 6’2 190 Wr/CB coach: @chadcawood Email:deakonjones128@gmail.com co/2027 phone: 405-657-9283, ncaa id: 2403234469",
"location": "Stillwater, OK",
"followersCount": 1000,
"followingCount": 2058,
"postsCount": 393,
"followerTier": "nano",
"emails": [
"deakonjones128@gmail.com"
],
"primaryEmail": "deakonjones128@gmail.com",
"phoneNumber": "405-657-9283",
"websiteUrl": "https://t.co/dzHV0zWTlY",
"publishedLinks": [
"https://t.co/dzHV0zWTlY"
],
"isVerified": true,
"isProtected": false,
"createdAt": "2022-06-08T04:30:36.000Z",
"profileImageUrl": "https://pbs.twimg.com/profile_images/1967446812081455104/WFvhmDqx_normal.jpg"
}

Relationship account

FieldTypeWhat it does
recordTypestringIs always relationshipAccount for this shape.
relationshipTypestringSays whether the account is a follower or a following account.
relationshipTargetstringGives the public username or numeric user ID used as the target.
identifierTypestringSays whether accountIdentifier contains a username or a numeric user ID.
accountIdentifierstringGives the collected public account username or numeric user ID.

This complete relationship row came from a successful current-beta run:

{
"recordType": "relationshipAccount",
"relationshipType": "followers",
"relationshipTarget": "@apify",
"identifierType": "username",
"accountIdentifier": "FilipHorky"
}

💳 Pricing

Pricing uses pay-per-event. The Store shows the current price for each event. An event is created only for its matching saved row.

Lead profile

One public X profile is saved to your dataset.

Contact route

A saved lead profile includes a public email address or website.

Relationship account

One public follower or following account identifier is saved to your dataset.

A run with no matching saved row does not create one of these row events.

🔌 Integrations

Read the default dataset in Apify Console, use the Apify API, or export your rows for further work.

❓ FAQ

Can one run collect both profiles and relationships?

No. Choose one resultType for each run. Fields for the other mode are ignored, so run the Actor again when you need the other shape.

What happens when I leave a candidate or relationship limit empty?

The Actor returns all available results until the source is exhausted. This is not a promise that the source has more results or that every account can be returned.

What happens when the same account appears more than once?

The first eligible occurrence is saved. Later matches from another handle, URL, query, ID, or similar submitted value are ignored. The saved trace field describes only the first match.

Do relationship rows include full profile details?

No. A relationship row contains the relationship type, target, identifier type, and selected account identifier. Use lead profile mode when you need the enriched profile fields.

Are contact details guessed?

No. Email addresses, websites, and phone numbers come from public profile data. A value that the profile does not publish is left empty.

Can I use one keyword or niche query?

Yes. Choose keywordQuery in lead profile mode and enter one query. Profiles found by that query receive the same lead enrichment as profiles submitted directly.

Do I need an X login or API key?

No. The Actor reads publicly reachable X data and does not ask for an X login, password, or API key.

Why did my run return fewer rows than expected?

Filters and the available public source data can reduce the number of saved rows. A work limit is a cap, not a promise of a fixed number of rows.

📝 Changelog

v0.0 (17-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré