Social Profile Finder - $0.90 per 1,000 Profiles avatar

Social Profile Finder - $0.90 per 1,000 Profiles

Pricing

from $0.90 / 1,000 profile founds

Go to Apify Store
Social Profile Finder - $0.90 per 1,000 Profiles

Social Profile Finder - $0.90 per 1,000 Profiles

Find social profiles from a name, domain, email or @handle. It looks across X, Instagram, LinkedIn, Facebook, TikTok, YouTube and GitHub. No public list maps a person to their handles, so this is a search. Each row has the handle, display name and a score. $0.90 per 1,000.

Pricing

from $0.90 / 1,000 profile founds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

9

Monthly active users

an hour ago

Last modified

Share

Social Profile Finder: a name, domain or email in, the matching social profiles out

Give it a person, a company, a website, an email address or an @handle. It comes back with the public profiles that belong to it across X, Instagram, LinkedIn, Facebook, TikTok, YouTube and GitHub, one row each, with the handle, the display name and a score.

The thing to understand before you judge the results: no public directory maps a person to their handles. This is a search that gathers evidence and scores it, not a lookup in a table. Give it a domain and it does well, because a company's own site links to its accounts. Give it a common name and nothing else, and most networks will not produce a match that clears the bar.

InputNames, domains, emails, @handles, or profile links
OutputOne row per profile found, with a confidence score
Ceiling50 lookups and 2,000 profiles per run
Account neededNone
Price$0.90 per 1,000 profiles found

๐Ÿ”— What Social Profile Finder does

For each thing you look up it gathers evidence from several directions at once. It reads the subject's own website for the accounts it links to, which is the strongest signal there is. It tries handle spellings on each network and checks what answers. It reads what a profile says about itself, including the site it links back to and whether the network has verified it.

All of that turns into matchConfidence, a number between 0.05 and 0.99, and the row is only written if it beats minConfidence. The default of 0.65 is deliberately strict. A handle that merely exists and merely echoes the name back does not get reported.

When you have more than one clue about the same subject, pass an object rather than a line of text: {"name": "Patagonia", "domain": "patagonia.com"}. The extra evidence raises the score on every match it finds.

๐Ÿ“ฅ What you give it

{
"queries": ["patagonia.com", "Marques Brownlee", "@MrBeast"],
"networks": ["x", "instagram", "youtube"],
"minConfidence": 0.65,
"maxItems": 50
}
FieldDefaultWhat it is
queriesnoneOne subject per line. Name, domain, email, @handle, or a profile link. Up to 50.
networksall sevenPick the ones you care about. A network you do not check is never charged for.
minConfidence0.65Below this a profile is never written and never billed. Drop to about 0.5 to review weak matches yourself, raise to 0.8 for verified accounts only.
maxProfilesPerNetwork1Keeps the best-scoring account per network. Raise to 2 or 3 for brands that run several.
maxHandleVariants3Spellings tried when all you have is a name: janedoe, jane.doe, jane_doe. Up to 5.
checkWebsitetrueReads the subject's own site for links. Leave it on unless you only ever pass bare handles.
maxItems50Profiles across the whole run. Up to 2,000. This is your spend cap.
proxyUrlsnoneYour own servers, one URL per line, if you want the traffic to leave through them.

Run it with the input empty and you get a free sample row showing the shape, with nothing looked up.

๐Ÿ“ค What you get back

A real row from a real run:

{
"ok": true,
"charged": true,
"recordType": "profile",
"query": "patagonia.com",
"subject": "patagonia",
"subjectDomain": "patagonia.com",
"network": "x",
"networkLabel": "X (Twitter)",
"profileUrl": "https://x.com/patagonia",
"handle": "patagonia",
"displayName": "Patagonia",
"matchConfidence": 0.99,
"confidenceLabel": "high",
"matchEvidence": "verified-on-network | linked-from-own-website | structured-data-sameas | display-name-matches | links-back-to-domain | platform-verified-badge | established-audience",
"source": "website-link",
"followers": 536292,
"platformVerified": true,
"bio": "We're in business to save our home planet.",
"profileWebsite": "http://patagonia.com/",
"verifiedLive": true,
"scrapedAt": "2026-09-21T13:01:48.062Z"
}
FieldWhat it is
queryThe line you typed. subject is what was actually scored against.
matchConfidence0.05 to 0.99. confidenceLabel is the same thing as high, medium or low.
matchEvidenceEvery signal that fed the score, pipe separated. This is how you audit a match.
sourceHow it was found: website-link, handle-probe or cross-link.
verifiedLivefalse when the account was only seen as a link on the subject's site and not confirmed on the network itself.
platformVerifiedThe network's own badge, where the network shows one.
handleSpelled the way the network spells it, which is not always how you typed it.

displayName is null when the network did not give one back. Nothing is guessed to fill a gap.

๐Ÿงพ Reading the output

Three kinds of row land in the dataset, and only the first kind is billed.

RowHow to spot itCharged
A profilerecordType: "profile" and a profileUrlyes
The sample row_sample: true, from an empty runno
A diagnosticok: false and an errorCodeno

The charged flag marks a row as a real result rather than a sample or a diagnostic. Filter on recordType == "profile" and you have your profiles.

CodeWhat it means
NO_RESULTSNothing cleared the threshold for that subject, or its website could not be read. The row carries what was tried.
TIME_BUDGETThe run hit its time limit before reaching that subject.
NETWORKThat subject failed outright. The others in the run are unaffected.
PROXY_INPUT_ADJUSTEDSomething in proxyUrls was not usable and the run went on without it.
CHARGE_ERRORBilling did not confirm for a row. Tell us if you see one.

A useful detail the default table hides: verifiedLive and platformVerified are not columns in the overview view, so an unconfirmed match looks the same as a badge-verified one until you open the JSON.

โ–ถ๏ธ How to run it

  1. Open Social Profile Finder and click Try for free.
  2. Put your subjects into Who or what to look up, one per line.
  3. Optional: pick the Networks you actually want. Fewer networks means faster lookups.
  4. Set Maximum profiles. Start at 20 while you see how your subjects score.
  5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.

๐Ÿ’ฐ How much does it cost?

$0.90 per 1,000 profiles found, which is $0.0009 each. Flat on every Apify plan, no volume tiers.

You pay for profiles written to the dataset. A subject that finds nothing produces no profile rows, and neither do the sample row, the diagnostic rows, or a network you chose not to check. minConfidence is the cheapest control you have: raise it and weak matches are dropped before they are ever written.

One thing to plan around. There is no cross-checking between lookups in a run, so if patagonia.com and @patagonia both resolve to the same X account, that is two rows and two charges. Put one line per subject, not several spellings of the same one.

๐Ÿ’ก What people use it for

  • Filling in the social columns on a list of companies you already have domains for.
  • Checking whether an account claiming to be a brand actually links back to that brand's site.
  • Finding a creator's other accounts when you only have the one you already follow.
  • Enriching inbound sign-ups, where a work email and a company name are all you get.

๐Ÿšง What it does not do

  • Seven networks. X, Instagram, LinkedIn, Facebook, TikTok, YouTube and GitHub. Nothing else.
  • A bare name rarely clears the bar. Without a domain, a badge, a real audience or a link back, most name-only subjects score under 0.65 and come back as NO_RESULTS.
  • It does not merge duplicate lookups. Two lines pointing at the same account produce two rows.
  • Instagram is the thinnest of the seven, and LinkedIn member profiles are best effort. Company pages do better than people.
  • Private, suspended and deleted accounts read as absent. The actor reports what it could confirm, and never turns "could not check" into a match.
  • Role mailboxes give it nothing to work with. info@ or press@ has no personal handle in it, so the lookup falls back to the domain.
  • No posts, no followers list, no contact details. It finds the profile. To read what is on it, use the scrapers linked below.

๐Ÿงญ Which social actor do you need?

If you wantUse
Profiles that belong to a person, brand or domainThis one
Full Instagram profile data from a handle you already haveInstagram Profile Scraper
Public LinkedIn posts matching a keywordLinkedIn Post Search Scraper
Titles, captions and hashtags written for a videoSocial Metadata Generator
To post a video to several networks from your AI clientSocial Media Uploader Pro

โ“ Questions people ask

What confidence should I trust? Anything at 0.8 or above is normally a confirmed account. Between 0.65 and 0.8, read matchEvidence before you act on it. Below that you have told the actor to show you guesses.

Why did my well-known person come back empty? Because the evidence was thin, not because the account does not exist. Add their domain or a handle you already know and run it again.

Can I look up 500 people? Not in one run. 50 lookups is the cap. Split the list and run it a few times, or schedule it.

Does it need logins for the networks? No. Nothing to paste and nothing that expires.

Is this legal? It reads public profile pages, the same ones anyone can open. Results are personal data, which GDPR and similar laws cover, so have a reason for holding them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

๐Ÿ†˜ If something breaks

Open the Issues tab on the actor page. Send the exact line you looked up and the run ID, and the evidence in the log usually explains the score.