Skip to main content

Check username availability across multiple popular platforms

Project description

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 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.

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 Available / Taken / 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

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

Usage

Basic username/email scan

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

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

Selective 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 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

Username/Email variations (suffix only)

Generate & check username variations using a permutation from the given suffix:

user-scanner -u john_ -p ab # john_a, ..., john_ab, john_ba

Using Proxies

Route requests through proxy servers:

user-scanner -u john_doe -P proxies.txt

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

user-scanner -u john_doe -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*: New modules are constantly getting added so screenshots might show only limited, outdated output:
1000146237
user-scanner's main usage screenshot

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 
|    ...               # 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.


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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

user_scanner-1.1.1.2.tar.gz (44.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

user_scanner-1.1.1.2-py3-none-any.whl (106.7 kB view details)

Uploaded Python 3

File details

Details for the file user_scanner-1.1.1.2.tar.gz.

File metadata

  • Download URL: user_scanner-1.1.1.2.tar.gz
  • Upload date:
  • Size: 44.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for user_scanner-1.1.1.2.tar.gz
Algorithm Hash digest
SHA256 b5670eaf4528b040de3e0115a475bd1e6968282abe7353342137b00fdb60da6b
MD5 c9a18dfe9c66723bf79e6de651fb07af
BLAKE2b-256 f6d3d4071539a656751300178c08c5e5e0ac6e1f480b4f7ce61e96dd8055650e

See more details on using hashes here.

File details

Details for the file user_scanner-1.1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for user_scanner-1.1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f1519c96b64346f3d193645c3fdc5e4a8fe7627ad626af9238d80351590075ff
MD5 022119652056bfcaa0952366e0c1fb39
BLAKE2b-256 5b3c35f9b567857db3cd2a80b143bc38c69a6eef5c2b22d16f0c07f398eb4893

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page