Social Handles Finder by Email or LinkedIn | from $1.496/1k
Pricing
from $1.50 / 1,000 profile founds
Social Handles Finder by Email or LinkedIn | from $1.496/1k
Social handles finder: give LinkedIn URLs, emails or GitHub, X and Facebook handles, get the person's other social links and handles. No login or cookies. Pay per profile found, misses are free. Does not search by name; use linkedin-person-search. Free plan: 100 per run.
Pricing
from $1.50 / 1,000 profile founds
Rating
0.0
(0)
Developer
Open Enrich
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Social handles finder: give a LinkedIn URL, an email address or a GitHub, X (Twitter) or Facebook handle, and get back the person's other social links and handles, plus name and headline so you can check the match. No login, no cookies, no ban risk. Pay per person found, misses are free. Works via API, MCP and schedules.
Mixed list in, one row per person out | LinkedIn, GitHub, X, Facebook, website | Reverse lookups (GitHub or email to LinkedIn) | No start fee | JSON/CSV export
💳 Pricing and plans
One event, profile: one person returned with at least one new link (a personal website counts). Nothing else is billed.
| Plan | Price per profile | Per 1,000 |
|---|---|---|
| FREE | $0.001963 | $1.963 |
| BRONZE | $0.001806 | $1.806 |
| SILVER | $0.001669 | $1.669 |
| GOLD and above | $0.001512 | $1.512 |
- Success-only billing. Empty runs, not-found lookups, people whose record holds no link besides the one you gave, unrecognised inputs, notices and failed lookups are never charged. There is no start fee.
- What the free plan covers. A free Apify account gets up to 100 inputs looked up per run, as many runs as its Apify credit covers. The $5 monthly platform credit of the free plan covers about 2,500 profiles.
- Keep a run small while you test. Set
limitto 1, or set the hiddenmaxChargeUsdto cap spend per run.
Prices as listed on this page; the plan you see in your Apify billing page is the one that applies.
⚖️ This vs. the alternatives
Public Store prices checked on 2026-10-13. Re-check on each Actor's page before you compare, prices change.
| Actor | Takes as input | Price per result (FREE tier) | Run-level fee |
|---|---|---|---|
| This Actor | LinkedIn URL, email, GitHub / X / Facebook URL or handle | $0.001963 | none |
| tri_angle/social-media-finder | profileNames, socials | $0.002 | $0.001 per run start |
| bovi/social-media-finder | free-text query | $0.05 | none listed |
| ntriqpro/email-osint-search | emails | $0.02 per account found | $0.005 per run start |
| saswave/github-profile-finder | search terms | $0.002 | $0.00005 per run start |
We compare on price and inputs only, and make no claim about the quality of the other actors. They do a different job: they search platforms by name or username, we read the links stored on a person's own record. Check that the columns you need are in the output before you compare cost.
⚡ Why this actor?
- Goes both ways. LinkedIn URL to GitHub, X and Facebook, and back: a GitHub or X handle, or an email, to the person's LinkedIn URL.
- No guessing. We read the links the person's own record holds. We do not search platforms by name, so a row is a link on record, not a lookalike.
- One list, any mix. URLs, slugs, emails and prefixed handles in the same input, results in input order.
- You pay only for new information. A row is charged only when it holds at least one link besides the one you supplied (a personal website counts as a link).
- Never returns an email address. The output has handles and links, no contact details.
🎯 Use cases
- Developer recruiting. Turn a list of LinkedIn URLs into GitHub profiles to see what the person builds.
- Identity resolution. You have a GitHub or X handle from a signup or a mention. Find the professional profile behind it.
- CRM clean-up. Add the social columns your sales team asks for to a contact list, then enrich the rest with linkedin-profile-by-url.
- Community and DevRel. Match contributors and attendees across networks.
🔗 Pipeline guide: from a name to a full contact
[1] linkedin-person-search -> LinkedIn URL for a name + company|[2] social-handles-finder -> GitHub / X / Facebook links and handles|[3] linkedin-profile-by-url -> title, company, seniority, tenure|[4] email-phone-finder -> phone for a work email
🚀 Quick start
1. Find social media profiles from LinkedIn URL lists
{ "items": ["https://www.linkedin.com/in/satyanadella"], "limit": 1 }
2. A mixed list: URL, slug, email and handles
{"items": ["https://www.linkedin.com/in/satyanadella","edwinwee1","name@company.com","twitter:edwinwee","github:handle","facebook:handle"],"limit": 0}
3. A capped batch with the audit view and a source tag
{ "items": ["edwinwee1", "twitter:edwinwee"], "limit": 100, "includeAudit": true, "sourceTag": "crm-sync-oct" }
4. GitHub to LinkedIn: reverse lookup
{ "items": ["twitter:edwinwee", "github:handle"], "limit": 0 }
5. Social profiles finder by email
{ "items": ["name@company.com"], "limit": 1 }
⚙️ Inputs
| Key | Type | Description |
|---|---|---|
items | string[] | Required. One person per line. See accepted forms below. |
limit | integer | Max rows pushed. Default 25. 0 = all. Hard maximum 1000 per run; a higher value is rejected with an explanation, not silently cut. |
includeAudit | boolean | Adds an audit block per row: requestId, unitsCharged, latencyMs, inputRaw, inputCanonical. |
maxChargeUsd | number | Hidden. Stops the run once this much has been charged. 0 or omitted = no cap beyond your Apify run limit. |
sourceTag | string | Hidden. Up to 64 characters, copied into every row and the run summary. |
Accepted forms in items:
| You have | Write |
|---|---|
| LinkedIn profile | https://www.linkedin.com/in/slug, linkedin.com/in/slug, slug, or linkedin:slug |
| Email address | name@company.com |
| GitHub | https://github.com/handle or github:handle |
| X / Twitter | https://x.com/handle, https://twitter.com/handle, twitter:handle, x:handle or @handle |
https://www.facebook.com/handle, facebook:handle, fb:handle or a profile.php?id= URL |
A bare word is always read as a LinkedIn slug. Handles on other networks need the prefix or a URL, so nothing is guessed. Unsupported input fields are rejected with a message.
📤 Output
One row per person found. Empty and unknown fields are left out of the row, they are not returned as null.
| Key | Type | Meaning |
|---|---|---|
inputQuery | string | The line you supplied (an email is shown masked, j***@example.com) |
inputType | string | linkedin, email, github, twitter or facebook |
fullName | string | Name on the record |
headline | string | Headline on the record |
linkedinUrl | string | LinkedIn profile URL |
githubUrl, githubHandle | string | GitHub profile URL and handle |
twitterUrl, twitterHandle | string | X / Twitter profile URL and handle |
facebookUrl, facebookHandle | string | Facebook profile URL and handle |
websiteUrl | string | Personal website listed on the record |
foundCount | integer | Links found other than the one you gave (for an email, all of them). A personal website counts as a link. |
sourceTag | string | Your tag, when set |
scrapedAt | string | Time of the lookup, ISO 8601 |
audit | object | Only with includeAudit |
Example row (shape taken from a real public record, values shortened):
{"inputQuery": "edwinwee1","inputType": "linkedin","fullName": "Edwin Wee Arbus","headline": "Cursor","linkedinUrl": "https://www.linkedin.com/in/edwinwee1","twitterUrl": "https://twitter.com/edwinwee","twitterHandle": "edwinwee","facebookUrl": "https://facebook.com/wee.edwin","facebookHandle": "wee.edwin","foundCount": 2,"scrapedAt": "2026-10-13T09:00:00.000Z"}
Other records in the run
- Misses are listed in the run's key-value store under
MISSES, each with a reason:not_found,no_other_profiles_found,unrecognised_formatorUpstream HTTP <code>. - Failed lookups are listed under
errors-social-handles-finder. The run still succeeds with the rows it has. - Notice row. When a free-plan list is longer than 100, one row with
type: "notice"andreason: "free_plan_limit"is added. It is not a profile and is never charged. RUN_SUMMARYholds the counts for the run.
What is NOT returned
- ❌ Email addresses or phone numbers
- ❌ Posts, followers, repositories or any platform activity
- ❌ Accounts found by searching a name on other platforms
🛡️ Reliable results
If a record is outdated or a link is wrong, report it in the Issues tab with the run link. Every report is reviewed and resolved case by case. Many people list no GitHub, X or Facebook link at all, so expect misses; they cost nothing.
🤖 For AI agents
This Actor runs through the Apify MCP server.
"Use b2bdata/social-handles-finder with items=["https://www.linkedin.com/in/satyanadella", "twitter:edwinwee"] and limit=2. Return fullName, linkedinUrl, githubUrl, twitterUrl and facebookUrl for each person."
- Use it when you hold one identifier (LinkedIn URL, email, GitHub, X or Facebook handle) and need the others.
- Use a sister actor when you need title, company or tenure (linkedin-profile-by-url) or a name search (linkedin-person-search).
- Output is deterministic and schema-stable. Same input gives the same rows, in input order. A one-item run with a well-known LinkedIn URL returns one row or one
MISSESentry. - Cost per call: one
profileevent per row returned, nothing for misses. - Errors: a run with invalid input fails with a plain message and charges nothing. Fix the named field and call again.
🔌 Integrations: send results anywhere
- API. Start a run and read
GET /v2/datasets/{id}/items?format=csvfor CSV or JSON. - Webhook on run success to push rows to your own endpoint.
- n8n, Make, Zapier through the Apify apps.
- Google Sheets, Airtable, HubSpot, Salesforce, Clay through the dataset export or an HTTP step.
🕐 Schedule examples
- Weekly CRM refresh: run on Monday 06:00 with the list of LinkedIn URLs from your CRM.
- New-signup resolver: run daily on the handles collected the day before.
🔗 Related actors
b2bdata/linkedin-profile-by-url— title, company, seniority and tenure per LinkedIn URL. Openb2bdata/linkedin-person-search— find the LinkedIn URL from a name. Openb2bdata/email-phone-finder— phone numbers from a work email. Openb2bdata/linkedin-people-search— search people by role and company. Open
See all scrapers by b2bdata: apify.com/b2bdata
❓ FAQ
Data and coverage
How do I find twitter and github from linkedin profile links?
Put the LinkedIn URL in items. The row returns the GitHub, X and Facebook links listed on that person's record. Not everyone lists them: in a test of 11 delivered profiles, 11 had a LinkedIn URL, 10 a website, 9 an X / Twitter URL, 8 a Facebook URL and 3 a GitHub URL (2026-10-13, small sample). If a person lists no link besides the one you gave, the lookup is a free miss.
Can I do a linkedin to github finder run in bulk? Yes. Paste up to 1,000 LinkedIn URLs or slugs per run. A mixed list works too.
Can I look up Facebook and X by email?
Yes. To get facebook twitter links from email, put the email in items. The row returns the profile links on the person's record. The email address itself is not returned.
Can I go from a GitHub or X handle to a LinkedIn URL?
Yes, for people who are in the data. A handle is not looked up by guessing: a handle with no match is a free miss, listed in MISSES as not_found. In our test twitter:edwinwee and a known email returned a profile, while a well-known GitHub handle and a company press address returned no match.
Is there a bulk social media handle finder? Yes. One run takes up to 1,000 items in any mix of URLs, emails and handles, and returns one row per person found.
Is there a social profile lookup API for AI agents? Yes. Call it from the Apify API or the Apify MCP server. The prompt above is a working example.
🛟 Support
Open the Issues tab on this Actor's page with the run link and the input line that went wrong. We answer within 48 h.
This Actor is not affiliated with, endorsed by, or sponsored by LinkedIn, GitHub, X, Facebook or any other network named here. All names are trademarks of their owners and are used only to say what a link points to.