Social Profile Finder - $0.90 per 1,000 Profiles
Pricing
from $0.90 / 1,000 profile founds
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
Maintained by CommunityActor stats
0
Bookmarked
17
Total users
9
Monthly active users
an hour ago
Last modified
Categories
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.
| Input | Names, domains, emails, @handles, or profile links |
| Output | One row per profile found, with a confidence score |
| Ceiling | 50 lookups and 2,000 profiles per run |
| Account needed | None |
| 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}
| Field | Default | What it is |
|---|---|---|
queries | none | One subject per line. Name, domain, email, @handle, or a profile link. Up to 50. |
networks | all seven | Pick the ones you care about. A network you do not check is never charged for. |
minConfidence | 0.65 | Below 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. |
maxProfilesPerNetwork | 1 | Keeps the best-scoring account per network. Raise to 2 or 3 for brands that run several. |
maxHandleVariants | 3 | Spellings tried when all you have is a name: janedoe, jane.doe, jane_doe. Up to 5. |
checkWebsite | true | Reads the subject's own site for links. Leave it on unless you only ever pass bare handles. |
maxItems | 50 | Profiles across the whole run. Up to 2,000. This is your spend cap. |
proxyUrls | none | Your 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"}
| Field | What it is |
|---|---|
query | The line you typed. subject is what was actually scored against. |
matchConfidence | 0.05 to 0.99. confidenceLabel is the same thing as high, medium or low. |
matchEvidence | Every signal that fed the score, pipe separated. This is how you audit a match. |
source | How it was found: website-link, handle-probe or cross-link. |
verifiedLive | false when the account was only seen as a link on the subject's site and not confirmed on the network itself. |
platformVerified | The network's own badge, where the network shows one. |
handle | Spelled 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.
| Row | How to spot it | Charged |
|---|---|---|
| A profile | recordType: "profile" and a profileUrl | yes |
| The sample row | _sample: true, from an empty run | no |
| A diagnostic | ok: false and an errorCode | no |
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.
| Code | What it means |
|---|---|
NO_RESULTS | Nothing cleared the threshold for that subject, or its website could not be read. The row carries what was tried. |
TIME_BUDGET | The run hit its time limit before reaching that subject. |
NETWORK | That subject failed outright. The others in the run are unaffected. |
PROXY_INPUT_ADJUSTED | Something in proxyUrls was not usable and the run went on without it. |
CHARGE_ERROR | Billing 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
- Open Social Profile Finder and click Try for free.
- Put your subjects into Who or what to look up, one per line.
- Optional: pick the Networks you actually want. Fewer networks means faster lookups.
- Set Maximum profiles. Start at 20 while you see how your subjects score.
- 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.65and come back asNO_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@orpress@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 want | Use |
|---|---|
| Profiles that belong to a person, brand or domain | This one |
| Full Instagram profile data from a handle you already have | Instagram Profile Scraper |
| Public LinkedIn posts matching a keyword | LinkedIn Post Search Scraper |
| Titles, captions and hashtags written for a video | Social Metadata Generator |
| To post a video to several networks from your AI client | Social 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.