Email OSINT & Account Finder
Pricing
from $4.50 / 1,000 results
Email OSINT & Account Finder
Find public accounts linked to an email across supported websites. Check account-existence signals, identify found accounts, separate not-found from uncertain results, and get clean structured data for OSINT, investigations, enrichment, and API workflows.
Pricing
from $4.50 / 1,000 results
Rating
0.0
(0)
Developer
LanceAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
📧 Email OSINT Account Finder
Find public account-existence signals linked to an email address across supported websites, with one clean result per email.
Enter one or more email addresses and check them across all currently supported platforms, or target only the websites you care about. The Actor returns which platforms found account signals and clearly separates found, not found, and uncertain checks, so blocked or rate-limited platforms are not incorrectly treated as confirmed negatives.
Each valid email produces one dataset result item. Multiple found accounts for the same email are grouped inside accounts, and the email is still billed as one result.
Why users choose this Actor:
- One email → one clean result: easy to scan, export, and send to another system.
- Found is not confused with uncertain: blocked, timed-out, errored, and inconclusive checks are counted separately.
- Broad scan or targeted lookup: check all supported platforms or only selected sites such as GitHub, Instagram, Office365, or Spotify.
- Simple result-based pricing: one valid email result creates one
resultcharge, even if several account signals are found.
Important: a found account is an account-existence signal, not legal proof, identity verification, or email deliverability verification. Public websites can change their flows, block requests, or return inconclusive responses.
✨ Key Features
One email, one result
Each input email produces exactly one dataset item. Found platforms are nested under accounts, so your dataset does not turn into a long list of platform rows.
Found, not found, and uncertain are separated
The Actor reports foundCount, notFoundCount, and uncertainCount up front. Rate limits, timeouts, errors, and inconclusive checks stay separate instead of being counted as confirmed not found.
Broad scan or targeted account lookup
Leave selectedPlatforms empty to check all currently supported platforms, or select specific platforms for a focused email account lookup.
Structured JSON for workflows
Results are normalized for Apify datasets and APIs, making them easier to use in spreadsheets, CRMs, fraud review tools, internal dashboards, and AI workflows.
Batch-friendly email OSINT
Run one email or a larger list in the same input. Emails are normalized, deduplicated, and processed into clean per-email result items.
⚡ Quick Start
- Add one or more email addresses.
- Leave Platforms to check empty to check all supported platforms, or select only the sites you need.
- Click Start and open the Dataset to review the results.
Minimal input:
{"emails": ["test@example.com"]}
test@example.com is a reserved example email address. For real runs, use only email addresses you own, have permission to investigate, or are otherwise allowed to process.
Short Output Example
This is an example structure showing the shape of a successful result:
{"email": "person@example.com","platformsChecked": 121,"foundCount": 1,"notFoundCount": 42,"uncertainCount": 78,"rateLimitedCount": 68,"errorCount": 9,"timeoutCount": 0,"accounts": [{"platform": "office365","domain": "office365.com","emailRecovery": null,"phoneNumber": null,"others": null}],"elapsedMs": 8271,"checkedAt": "2026-08-28T11:56:29.916997+00:00"}
Input
The public input is intentionally small. Runtime decisions such as timeout, concurrency, retry behavior, and proxy strategy are handled by the Actor.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
emails | array of strings | Yes | ["test@example.com"] | One or more email addresses to check. Inputs are trimmed, lowercased, deduplicated, and validated. Maximum valid emails per run: 500. |
selectedPlatforms | array of strings | No | [] | Optional platform filter. Leave empty to check all currently supported platforms. Use values such as github, instagram, office365, or spotify for a targeted search. |
noPasswordRecovery | boolean | No | false | Advanced option. Set to true to skip platforms that rely on password-recovery flows for account detection. Turning it on may reduce coverage. |
Platform selection logic
- If
selectedPlatformsis empty or missing, the Actor checks all currently supported platforms. - If
selectedPlatformscontains platform names, the Actor checks only those platforms. - If
noPasswordRecoveryistrue, password-recovery-style checks are removed from the selected platform set.
Input Examples
Check one email across all supported platforms
{"emails": ["test@example.com"]}
Check multiple emails
{"emails": ["first@example.com","second@example.com"]}
Check only selected platforms
{"emails": ["test@example.com"],"selectedPlatforms": ["github", "instagram", "spotify"]}
Skip password-recovery checks
{"emails": ["test@example.com"],"noPasswordRecovery": true}
API Usage
Actor ID:
lance_api/email-osint-account-finder
Use your own Apify token through the APIFY_TOKEN environment variable. Do not put tokens directly into source code.
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {emails: ['test@example.com'],selectedPlatforms: ['github', 'office365'],};const run = await client.actor('lance_api/email-osint-account-finder').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("lance_api/email-osint-account-finder").call(run_input={"emails": ["test@example.com"],"selectedPlatforms": ["github", "office365"],})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Output
Each valid input email produces exactly one dataset item.
Found accounts are returned inside accounts. The Actor does not create separate dataset rows for each found platform.
The default dataset views are:
- Overview: the main result view with the most useful fields first
- All fields: the complete dataset item
Complete Output Field Reference
Core result fields
| Field | Type | Nullable | Description |
|---|---|---|---|
email | string | No | The normalized email address that was checked. |
platformsChecked | integer | No | Number of platforms checked for this email. |
foundCount | integer | No | Number of platforms that returned an account-existence signal. This equals accounts.length. |
notFoundCount | integer | No | Number of platforms that clearly returned no account signal. |
uncertainCount | integer | No | Number of checks that were not confirmed found or confirmed not found. |
rateLimitedCount | integer | No | Number of platforms that reported a blocked or rate-limited response. |
errorCount | integer | No | Number of platform checks that raised or returned an error. |
timeoutCount | integer | No | Number of platform checks that exceeded the internal timeout. |
inconclusiveCount | integer | No | Number of platform results that did not match a known result shape. |
accounts | array | No | Found account signals for this email. Empty when no account signals were found. |
elapsedMs | integer | No | Scan duration for this email, in milliseconds. |
checkedAt | string | No | ISO 8601 timestamp when the email result was created. |
accounts array fields
| Field | Type | Nullable | Description |
|---|---|---|---|
platform | string | No | Platform name, such as github, office365, or spotify. |
domain | string | Yes | Platform domain when available from the underlying module. |
emailRecovery | string or null | Yes | Masked recovery email hint when returned by the platform. |
phoneNumber | string or null | Yes | Masked phone recovery hint when returned by the platform. |
others | object, array, string, or null | Yes | Additional non-standard information returned by a platform module, if any. |
Status Values
The final dataset item does not include separate platform rows, but the Actor internally classifies every platform check into one of these statuses and rolls them into the count fields.
| Status | Meaning | Reflected in output | Per-result billing |
|---|---|---|---|
FOUND | A platform returned an account-existence signal. | Added to accounts; counted in foundCount. | No separate extra charge. |
NOT_FOUND | A platform clearly did not return an account signal. | Counted in notFoundCount. | No separate extra charge. |
RATE_LIMITED | The platform blocked or rate-limited the check. | Counted in rateLimitedCount and uncertainCount. | No separate extra charge. |
TIMEOUT | The platform check exceeded the internal timeout. | Counted in timeoutCount and uncertainCount. | No separate extra charge. |
ERROR | A platform module or request failed. | Counted in errorCount and uncertainCount. | No separate extra charge. |
INCONCLUSIVE | The response did not match a known result shape. | Counted in inconclusiveCount and uncertainCount. | No separate extra charge. |
A single platform error does not stop the whole batch. Other platforms and other emails continue to run.
Complete Output Example
This is an example structure. It uses reserved example data and should not be read as a claim that the example email owns these accounts.
{"email": "person@example.com","platformsChecked": 121,"foundCount": 2,"notFoundCount": 43,"uncertainCount": 76,"rateLimitedCount": 66,"errorCount": 9,"timeoutCount": 0,"inconclusiveCount": 1,"accounts": [{"platform": "office365","domain": "office365.com","emailRecovery": null,"phoneNumber": null,"others": null},{"platform": "twitter","domain": "twitter.com","emailRecovery": null,"phoneNumber": null,"others": null}],"elapsedMs": 12661,"checkedAt": "2026-08-28T12:34:46.403634+00:00"}
No accounts found example
{"email": "person@example.com","platformsChecked": 121,"foundCount": 0,"notFoundCount": 45,"uncertainCount": 76,"rateLimitedCount": 67,"errorCount": 9,"timeoutCount": 0,"inconclusiveCount": 0,"accounts": [],"elapsedMs": 8123,"checkedAt": "2026-08-28T12:35:10.100000+00:00"}
💳 Pricing
This Actor uses pay-per-result pricing.
The configured billing event is result, charged once for each valid email address that produces one dataset result item.
Base price: $0.006 per email result, or $6.00 per 1,000 email results.
Simple billing examples:
- 1 email checked → 1
resultcharge - 1 email checked with 5 found accounts → still 1
resultcharge - 100 valid emails checked → up to 100
resultcharges - Platform-level rate limits, timeouts, errors, and multiple found accounts do not create extra result charges.
Eligible Apify plan pricing may reduce the effective per-result price shown in the Actor's Pricing tab. Check the Pricing tab before running for the exact price available to your account.
To control cost, run a smaller list of emails first or use selectedPlatforms for targeted checks.
🎯 Use Cases
Email OSINT research
Run repeatable email OSINT checks from the Apify Console or API and export one clean result item per email for analysis.
Account discovery
Find public account-existence signals linked to an email address across supported platforms, then review the results as leads rather than identity proof.
Fraud & risk review
Add email account signals to manual risk reviews, onboarding checks, abuse investigations, or fraud triage workflows.
Trust & safety investigations
Separate found, not found, and uncertain checks so blocked or inconclusive platforms do not get treated as confirmed negatives.
CRM & data enrichment
Add lightweight public account context to permitted CRM records and enrichment pipelines using structured JSON.
API & AI workflows
Call the Actor from scripts, internal tools, dashboards, or AI agents that need an email account finder API.
How It Works
- The Actor validates, normalizes, and deduplicates the input emails.
- It builds the current supported platform list from the underlying account-check modules.
- It checks either all supported platforms or only the platforms selected in
selectedPlatforms. - Each platform result is classified as found, not found, rate-limited, timed out, error, or inconclusive.
- The Actor returns one final dataset item per email, with found accounts nested under
accounts.
The Actor uses the open-source Holehe engine under the hood and normalizes the results for Apify datasets and APIs.
Public Data and Responsible Use
Use this Actor only for email addresses you own, have permission to investigate, or are otherwise allowed to process.
This Actor is designed for public account-existence signals. It does not access private accounts, bypass authentication, retrieve passwords, read inboxes, or verify that an email address is deliverable.
You are responsible for complying with website terms, Apify terms, privacy laws, anti-spam rules, and any rules that apply to your use case. Do not use this Actor for harassment, spam, illegal profiling, or attempts to obtain non-public information.
FAQ
Can I find accounts linked to an email address?
The Actor can check supported platforms and return public account-existence signals linked to an email address. Results do not prove account ownership, identity, or control of the email.
Can I find social media accounts by email?
The Actor can check currently supported platforms that return account-existence signals. Not every social platform supports email-based detection, and some checks may be rate-limited, blocked, or inconclusive.
What does a found account mean?
FOUND means a supported platform returned an account-existence signal for the email address. It does not prove identity, ownership, intent, or deliverability.
Does one email produce multiple dataset rows?
No. Each valid email produces exactly one dataset item. Multiple found platforms are listed inside the accounts array.
What happens when no accounts are found?
The Actor still returns one dataset item for that email with foundCount set to 0 and accounts set to an empty array.
Why is uncertainCount sometimes high?
Some websites block checks, rate-limit traffic, change their pages, time out, or return responses that cannot be interpreted reliably. Those checks are counted as uncertain instead of being treated as confirmed not-found results.
Can I check only a few platforms?
Yes. Use selectedPlatforms and provide platform values such as github, instagram, office365, or spotify. Leave it empty to check all currently supported platforms.
Does this verify whether an email address can receive mail?
No. This Actor does not perform email deliverability verification, SMTP checks, inbox checks, or email validation beyond input format validation.
How are results billed?
The result event is charged once per valid email result item. Multiple found accounts for the same email do not create extra result charges.
Does one failed platform stop the whole run?
No. A platform-level error is counted in the result summary, and the Actor continues checking other platforms and other emails.
Limitations
- Public websites can change their flows at any time.
- Some platforms may block, rate-limit, time out, error, or return inconclusive responses.
- Recovery hints such as
emailRecoveryandphoneNumberare only returned when a platform provides masked values. domainandothersmay benulldepending on the platform result.- The Actor does not verify email deliverability.
- The Actor does not search breach databases.
- The Actor does not retrieve private profile data, passwords, inbox content, tokens, cookies, or session data.
- Results should be treated as leads or signals that may require human review.
Support
For support, contact lanceapi2026@hotmail.com or open an issue on the Actor's Issues page.
When reporting a problem, include the Run ID, non-sensitive example input, relevant status counts, and any error message shown in the run log. Do not send Apify tokens, cookies, passwords, private keys, or other secrets.