A powerful Email OSINT tool that checks if a specific email is registered on various sites, combined with username scanning for branding or OSINT β 2-in-1 tool.
Perfect for fast, accurate and lightweight email OSINT
Perfect for finding a unique username across GitHub, Twitter, Reddit, Instagram, and more, all in a single command.
- β Email & username OSINT: check email registrations and username availability across social, developer, creator, and other platforms
- β Dual-mode usage: works as an email scanner, username scanner, or username-only tool
- β
Clear results:
Registered/Not Registeredfor emails andAvailable/Taken/Errorfor usernames with precise failure reasons - β Fully modular architecture for easy addition of new platform modules
- β Bulk scanning support for usernames and emails via input files
- β Wildcard-based username permutations with automatic variation generation
- β Multiple output formats: console, JSON, and CSV, with file export support
- β Proxy support with rotation and pre-scan proxy validation
- β Smart auto-update system with interactive upgrade prompts via PyPI
# create venv
python -m venv .venv# Linux / macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1# upgrade pip
python -m pip install --upgrade pip
# install
pip install user-scanner| Flag | Description |
|---|---|
-u, --username USERNAME |
Scan a single username across platforms |
-e, --email EMAIL |
Scan a single email across platforms |
-uf, --username-file FILE |
Scan multiple usernames from file (one per line) |
-ef, --email-file FILE |
Scan multiple emails from file (one per line) |
-c, --category CATEGORY |
Scan all platforms in a specific category |
-lu, --list-user |
List all available modules for username scanning |
-le, --list-email |
List all available modules for email scanning |
-m, --module MODULE |
Scan a single specific module |
-p, --permute PERMUTE |
Generate username permutations using a pattern/suffix |
-P, --proxy-file FILE |
Use proxies from file (one per line) |
--validate-proxies |
Validate proxies before scanning (tests against google.com) |
-s, --stop STOP |
Limit the number of permutations generated |
-d, --delay DELAY |
Delay (in seconds) between requests |
-f, --format {csv,json} |
Select output format |
-o, --output OUTPUT |
Save results to a file |
Scan a single email or username across all available modules/platforms:
user-scanner -e [email protected] # single email scanning
user-scanner -u john_doe # single username scanning Scan only specific categories or single modules:
user-scanner -u john_doe -c dev # developer platforms only
user-scanner -u john_doe -m github # only GitHubScan multiple emails/usernames from a file (one email/username per line):
- Can also be combined with categories or modules using
-c,-mand other flags
user-scanner -ef emails.txt # bulk email scan
user-scanner -uf usernames.txt # bulk username scanGenerate & check username variations using a permutation from the given suffix:
user-scanner -u john_ -p ab # john_a, ..., john_ab, john_baRoute requests through proxy servers:
user-scanner -u john_doe -P proxies.txtValidate proxies before scanning (tests each proxy against google.com):
user-scanner -u john_doe -P proxies.txt --validate-proxies # recommendedThis will:
- Filter out non-working proxies
- Save working proxies to
validated_proxies.txt - Use only validated proxies for scanning
- Note*: New modules are constantly getting added so screenshots might show only limited, outdated output:
Modules are organized under user_scanner/:
user_scanner/
βββ email_scan/ # Currently in development
β βββ social/ # Social email scan modules (Instagram, Mastodon, X, etc.)
| βββ adult/ # Adult sites
| ... # New sites to be added soon
βββ user_scan/
β βββ dev/ # Developer platforms (GitHub, GitLab, npm, etc.)
β βββ social/ # Social platforms (Twitter/X, Reddit, Instagram, Discord, etc.)
β βββ creator/ # Creator platforms (Hashnode, Dev.to, Medium, Patreon, etc.)
β βββ community/ # Community platforms (forums, StackOverflow, HackerNews, etc.)
β βββ gaming/ # Gaming sites (chess.com, Lichess, Roblox, Minecraft, etc.)
...
Module guidelines:
This project contains small "validator" modules that check whether a username exists on a given platform. Each validator is a single function that returns a Result object (see core/orchestrator.py).
Result semantics:
- Result.available() β
available - Result.taken() β
taken - Result.error(message: Optional[str]) β
error, blocked, unknown, or request failure (include short diagnostic message when helpful)
Follow this document when adding or updating validators.
See CONTRIBUTING.md for examples.
This project is licensed under the MIT License. See LICENSE for details.
This tool is provided for educational purposes and authorized security research only.
- User Responsibility: Users are solely responsible for ensuring their usage complies with all applicable laws and the Terms of Service (ToS) of any third-party providers.
- Methodology: The tool interacts only with publicly accessible, unauthenticated web endpoints. It does not bypass authentication, security controls, or access private user data.
- No Profiling: This software performs only basic yes/no availability checks. It does not collect, store, aggregate, or analyze user data, behavior, or identities.
- Limitation of Liability: The software is provided βas isβ, without warranty of any kind. The developers assume no liability for misuse or any resulting damage or legal consequences.
