Skip to content

Latest commit

Β 

History

History
237 lines (169 loc) Β· 7.65 KB

File metadata and controls

237 lines (169 loc) Β· 7.65 KB

User Scanner

User Scanner Logo


A powerful Email OSINT tool that checks if a specific email is registered on various sites, combined with username scanning for OSINT or branding β€” 2-in-1 tool.

Perfect for fast, accurate username and email OSINT

Also perfect for finding a unique username across GitHub, X (formerly Twitter), Reddit, Instagram, and more, all in a single command.

Features

  • βœ… 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 Registered for emails and Not Found / Found / Error for 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

Virtual Environment (optional but recommended)

# create venv
python -m venv .venv

Activate venv

# Linux / macOS
source .venv/bin/activate

# Windows (PowerShell)
.venv\Scripts\Activate.ps1

Installation

# upgrade pip
python -m pip install --upgrade pip

# install
pip install user-scanner

Important Flags

See Important flags here and use the tool powerfully

Usage

Basic username/email scan

Scan a single email or username across all available modules/platforms:

user-scanner -e johndoe@gmail.com   # single email scanning 
user-scanner -u johndoe             # single username scanning 

Verbose mode

Use -v flag to show the url of the sites being checked

user-scanner -v -e johndoe@gmail.com -c dev

Output:

  ...
  [βœ”] Huggingface [https://huggingface.co] (johndoe@gmail.com): Registered
  [βœ”] Envato [https://account.envato.com] (johndoe@gmail.com): Registered
  [βœ”] Replit [https://replit.com] (johndoe@gmail.com): Registered
  [βœ”] Xda [https://xda-developers.com] (johndoe@gmail.com): Registered
  ...

Selective scanning

Scan only specific categories or single modules:

user-scanner -u johndoe -c dev                # developer platforms only
user-scanner -e johndoe@gmail.com -m github   # only GitHub

Bulk email/username scanning

Scan multiple emails/usernames from a file (one email/username per line):

  • Can also be combined with categories or modules using -c , -m and other flags
user-scanner -ef emails.txt     # bulk email scan
user-scanner -uf usernames.txt  # bulk username scan

Pattern generation

See Pattern Syntax for more details


Library mode for email_scan

Only available for user-scanner>=1.2.0

See full usage (eg. category checks, full scan) guide library usage

  • Email scan example (single module):
import asyncio
from user_scanner.core import engine
from user_scanner.email_scan.learning import vedantu

async def main():
    # Engine detects 'email_scan' path -> returns "Registered" status
    result = await engine.check(vedantu, "test@gmail.com")
    json_data = result.to_json() # returns JSON output
    csv_data = result.to_csv()   # returns CSV output
    print(json_data)             # prints the json data

asyncio.run(main())

Output:

{
        "email": "test@gmail.com",
        "category": "Learning",
        "site_name": "Vedantu",
        "status": "Registered",
        "url": "https://www.vedantu.com",
        "extra": "Phone: +9121****83",
        "reason": ""
}

Using Proxies

Validate proxies before scanning (tests each proxy against google.com):

user-scanner -u johndoe -P proxies.txt --validate-proxies # recommended

This will:

  1. Filter out non-working proxies
  2. Save working proxies to validated_proxies.txt
  3. Use only validated proxies for scanning

Screenshots:

Note: Screenshots might be outdated


1000175086
1000175084

❀️ Support the project

If this project helps you, consider supporting its development:

BTC (SegWit): bc1q0dzkuav8lq9lwu7gc457vwlda4utfcr5hpv7ka


Contributing

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 
|    ...
β”œβ”€β”€ 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.)
    ...

See detailed Contributing guidelines


Dependencies:


License

This project is licensed under the MIT License. See LICENSE for details.


⚠️ Disclaimer

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.

πŸ› οΈ Troubleshooting

Some sites may return 403 Forbidden or connection timeout errors, especially if they are blocked in your region (this is common with some adult sites).

  • If a site is blocked in your region, use a VPN and select a region where you know the site is accessible.
  • Then run the tool again.

These issues are caused by regional or network restrictions, not by the tool itself. If it still fails, report the error by opening an issue.