X Twitter Lead Scraper avatar

X Twitter Lead Scraper

Pricing

$19.99/month + usage

Go to Apify Store
X Twitter Lead Scraper

X Twitter Lead Scraper

Extract high-quality leads from X (Twitter) using the X Twitter Lead Scraper. Collect profile names, bios, emails, websites, follower counts, and social links automatically. Ideal for lead generation, influencer discovery, outreach campaigns, and audience research.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Scraper Engine

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 days ago

Last modified

Share

X / Twitter Lead Scraper ๐Ÿ“ฑ

Turn a keyword into a list of public X (Twitter) profiles that publish a contact email.

You type startup founder. The actor finds public X profiles matching that phrase, opens each one, reads the public profile bio, and returns every genuine email address it finds โ€” with the profile name, handle, bio and profile URL attached. No login, no cookies, no X API key.

Works for both twitter.com and x.com โ€” they are the same service under two domains, and both are searched and accepted.

How it actually works โš™๏ธ

This section is deliberately specific, because "how" matters for a platform as locked-down as X.

Step 1 โ€” Discovery. The actor asks search engines which public X profiles match your keyword, using a site-restricted query such as:

(site:twitter.com OR site:x.com) -site:business.twitter.com โ€ฆ "@gmail.com" "startup founder"

Google is the primary source (it indexes X profile bios and paginates deeply), with DuckDuckGo, Brave and Bing rotated in for extra breadth. Google no longer exposes the destination URL of an organic result โ€” every result link is now an opaque, server-encrypted /goto?url=CAESโ€ฆ redirect. Five recovery routes therefore run and are merged, because coverage differs from query to query:

  1. direct http(s) anchors and the legacy /url?q= wrapper, when Google still emits them
  2. the result title โ€” Umme habiba (@P2Pwriter) / Posts / X. On X the handle is the URL, so the profile address is reconstructed from the title. This is the most productive route for this host.
  3. the <cite> breadcrumb โ€” https://x.com โ€บ DrArchanadines1 โ€บ status, plain text that survives the wrapper
  4. the inline JSON data island's ["<url>","<title>","<snippet>"] triples
  5. a raw-text sweep of the page for on-host URLs

Every candidate is then verified by actually loading the profile, so a wrong guess from a loose route cannot reach your dataset. DuckDuckGo, Brave and Bing serve real destination links, which are used directly.

Step 2 โ€” Profile read. Each discovered handle is opened at https://x.com/<handle> through a residential proxy. Logged out, X still serves real Open Graph metadata on that page:

  • og:title โ†’ the display name and handle โ€” Naman Sondhi (@VCwithNS) on X
  • og:description โ†’ the profile bio verbatim โ€” which is exactly where X users publish contact addresses

A handle that does not exist returns HTTP 404, so this doubles as an existence check. This is a real fetch of the live profile page, not a cached copy.

Step 3 โ€” Email extraction, in order of confidence:

  1. x_profile_bio โ€” the address is in the live profile bio. Highest confidence.
  2. search_snippet โ€” the address appears in the profile's own indexed page content (posts/replies) as surfaced by the search engine. Genuine and on that account's page, though not always the account owner's personal mailbox.
  3. linked_website โ€” the bio had no address but linked out to a website via a t.co link; the actor resolved that link and found a contact address on the destination site. Optional, on by default.

Every row records which of the three it came from, in the emailSource field.

What this actor does not do ๐Ÿ™…

Honest limits, so you know what you are buying:

  • โŒ It does not log in to X, and does not use the paid X API.
  • โŒ It does not read follower counts, profile images, geo/location fields, tweet timelines, DMs, or anything else behind X's login wall. Logged out, X exposes the display name, handle and bio on a profile page โ€” that is what is used.
  • โŒ It does not return rows with an empty email. If a profile publishes no contact address, it is skipped rather than padded out.
  • โŒ It does not invent, sample or mock data. If a keyword yields nothing, the log says so plainly.

Output ๐Ÿ“ค

Every field in every row is populated with a real value. Example rows from a live run:

[
{
"network": "x.com",
"keyword": "startup founder",
"handle": "@utpalghosh30",
"title": "Utpal Ghosh (@utpalghosh30)",
"description": "|| Dreamer & Entrepreneur || Building Protein Box || For Consulting/Mentorship/Franchise : email : utpalghoshofficial@gmail.com",
"url": "https://x.com/utpalghosh30",
"email": "utpalghoshofficial@gmail.com",
"emailSource": "x_profile_bio"
},
{
"network": "x.com",
"keyword": "startup founder",
"handle": "@VCwithNS",
"title": "Naman Sondhi (@VCwithNS)",
"description": "Venture Capital Documenting anything and everything VC Former founding operator Email: vcwithns@gmail.com https://t.co/4qcyX8KwsG",
"url": "https://x.com/VCwithNS",
"email": "vcwithns@gmail.com",
"emailSource": "x_profile_bio"
}
]

Output table

FieldDescription
networkThe X domain the lead was matched on โ€” x.com or twitter.com
keywordThe keyword from your input that produced this lead
handleThe public @handle of the account
titleDisplay name plus handle, read from the live profile
descriptionThe public profile bio (falls back to the indexed page snippet when the bio is empty)
urlDirect link to the public profile
emailThe extracted contact address โ€” never empty
emailSourcex_profile_bio ยท search_snippet ยท linked_website

Input ๐Ÿงฉ

{
"keywords": ["startup founder"],
"platform": "Twitter",
"location": "",
"emailDomains": ["@gmail.com"],
"maxEmails": 20,
"engine": "legacy",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
FieldDescription
keywordsRequired. One or more phrases to search profiles for. Niche phrases beat broad ones.
platformSocial network. Twitter โ€” covers both twitter.com and x.com.
locationOptional. Adds a city/region phrase to the search to geo-narrow the leads.
emailDomainsKeep only leads on these domains (e.g. @gmail.com). Also sharpens the search query. Empty = all domains.
maxEmailsLeads to collect per keyword before moving on. Default 20.
engineExtraction pipeline label. legacy.
searchEnginesAdvanced. Which discovery sources to use and in what order. Default: google, duckduckgo, brave, bing.
enrichFromLinkedSiteAdvanced. Follow the website linked in a bio when the bio itself has no email. Default true.
maxProfilesPerKeywordAdvanced. Cap on how many profiles are opened per keyword. Default 120.
proxyConfigurationAdvanced. Network used to load x.com pages. Default RESIDENTIAL, which is verified to work.

A note on proxies

The actor uses three network roles and they are not interchangeable:

  • Google search always goes through Apify's GOOGLE_SERP group. That group can only reach Google, so it is never used for anything else โ€” if you set it as your proxyConfiguration, the actor detects that and falls back to RESIDENTIAL for page fetching rather than silently failing.
  • DuckDuckGo / Brave / Bing go through a datacenter group; those engines rate-limit residential exits hard.
  • x.com profile pages and linked websites use your proxyConfiguration (RESIDENTIAL by default).

Tips for more leads ๐Ÿ’ก

  • Use specific keywords (fractional cmo, ugc creator, dropshipping mentor) rather than generic ones.
  • Keep @gmail.com in emailDomains for precision, or clear the filter to accept business domains too.
  • Raise maxProfilesPerKeyword for rare niches โ€” most X users never publish an email, so the actor has to read many profiles to find the ones that do.
  • Pass several related keywords in one run; each is budgeted separately.

Use cases ๐ŸŽฏ

  • Building targeted outreach lists from public creator/founder/agency profiles
  • Sourcing partners and collaborators in a niche
  • Market and academic research on public social profiles

This actor reads only publicly available data from public profile pages โ€” the same information any logged-out visitor sees. It does not bypass the login wall, does not touch private accounts, and does not use authenticated APIs.

  • โš–๏ธ Comply with X's terms of service and with applicable data protection law (GDPR, CAN-SPAM, etc.)
  • โš–๏ธ Have a lawful basis before using extracted addresses for commercial outreach
  • โš–๏ธ Do not spam. Honour opt-outs.
  • โš–๏ธ Do not use the output for harassment, profiling of sensitive traits, or any unlawful purpose

FAQ โ“

Does it need an X/Twitter account, cookies or API key? No. Everything comes from logged-out public pages and public search engine results.

Why do some rows have emailSource: "search_snippet"? Because the address was on that profile's indexed page content rather than in the bio field itself. It is a real address found on that account's page โ€” just treat it with slightly less confidence than a bio address.

Why did my keyword return few or zero leads? Most X users do not publish an email anywhere public. The actor reports exactly how many profiles it opened and how many published a matching address. Widen emailDomains, raise maxProfilesPerKeyword, or try a keyword that professionals put in their bio.

Can it scrape private or protected accounts? No.

Does twitter.com still work? Yes. Both domains are searched, and results on either are accepted. Profile URLs are emitted on the domain they were matched on.

Support and feedback