Sherlock Username Scraper
LEAD GENERATIONSOCIAL MEDIA
Sherlock Username Scraper
Search for a username across 400+ social networks and websites. Input one or more usernames and get back every platform where that username exists, with direct profile URLs. Built for OSINT research, due-diligence, lead enrichment, and social media audits.
What this actor does
For each username you provide, the actor:
- Loads the Sherlock OSINT site database — 480+ social network definitions from the open-source Sherlock project, fetched fresh on each run
- Checks each platform concurrently — makes an HTTP request to the expected profile URL on every site, using per-site detection rules
- Applies smart detection logic — each site uses one of three methods to confirm presence: HTTP status code check, response body text check, or redirect URL check
- Returns only confirmed hits — saves a record for each platform where the username is found, with the direct profile URL
Typical run: one username against 480 platforms takes under 60 seconds. Profiles found on 50–200 platforms is normal for common usernames.
Input
| Field | Type | Default | Description |
|---|---|---|---|
usernames |
array of strings | — | Required. Usernames to search. Each is checked against all platforms. |
maxItems |
integer | 0 |
Maximum number of found profiles to return across all usernames. 0 = no limit. |
concurrency |
integer | 20 |
Concurrent HTTP requests per username. Range 10–50 recommended. |
timeout |
integer | 10000 |
HTTP request timeout per site check in milliseconds. |
Example input:
{
"usernames": ["johnsmith", "john_smith_dev"],
"maxItems": 0,
"concurrency": 20,
"timeout": 10000
}
Output
One record per platform where the username was found.
| Field | Type | Description |
|---|---|---|
username |
string | The username that was searched |
site_name |
string | Name of the social network or website |
url |
string | Direct URL to the profile |
url_main |
string | Main URL of the social network |
status |
string | found — only found profiles are saved |
http_status |
number | HTTP status code returned by the site |
response_time_ms |
number | Response time in milliseconds |
scraped_at |
string | ISO timestamp when the check was performed |
Example output record:
{
"username": "johnsmith",
"site_name": "GitHub",
"url": "https://github.com/johnsmith",
"url_main": "https://github.com/",
"status": "found",
"http_status": 200,
"response_time_ms": 312,
"scraped_at": "2026-06-02T10:15:42.000Z"
}
Notes
- Platform coverage: 480+ sites including GitHub, Twitter/X, Instagram, Reddit, LinkedIn, YouTube, TikTok, Pinterest, Twitch, Medium, and hundreds more.
- Detection accuracy: Uses the same detection rules as the open-source Sherlock tool. Some sites may produce false positives (username check returns 200 for non-existent accounts). Cross-reference with the
urlfield to verify. - No authentication required: All checks are against public-facing profile pages.
- No proxy needed: Requests are spread across hundreds of different domains at low concurrency — no single site sees more than one request per run.
- Concurrency: Increase
concurrency(up to 50) for faster runs; decrease if you see timeouts on slow platforms. Default of 20 balances speed and reliability.