https://github.com/kaifcodec/user-scanner
π΅οΈπ« (2-in-1) Emaill and Username OSINT tool that analyzes username and email presence across multiple platforms, intended for security research, investigations, legitimate analysis
https://github.com/kaifcodec/user-scanner
email-osint networking osint osint-email osint-tool osint-tools python username username-osint
Last synced: 12 days ago
JSON representation
π΅οΈπ« (2-in-1) Emaill and Username OSINT tool that analyzes username and email presence across multiple platforms, intended for security research, investigations, legitimate analysis
- Host: GitHub
- URL: https://github.com/kaifcodec/user-scanner
- Owner: kaifcodec
- License: mit
- Created: 2025-10-19T04:21:48.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-01T19:07:55.000Z (16 days ago)
- Last Synced: 2026-02-02T01:57:03.727Z (16 days ago)
- Topics: email-osint, networking, osint, osint-email, osint-tool, osint-tools, python, username, username-osint
- Language: Python
- Homepage:
- Size: 447 KB
- Stars: 468
- Watchers: 5
- Forks: 54
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- Awesome-OSINT-For-Everything - user-scanner - Check a username's presence across popular dev/social/creator sites and games (USERNAME)
README
# User Scanner

---
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)
```bash
# create venv
python -m venv .venv
````
## Activate venv
```bash
# Linux / macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1
```
## Installation
```bash
# 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:
```bash
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:
```bash
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
```bash
user-scanner -ef emails.txt # bulk email scan
user-scanner -uf usernames.txt # bulk username scan
```
---
### Library mode for email_scan/user_scan
For full usage guide [click here](https://github.com/kaifcodec/user-scanner/blob/main/USAGE.md)
- Email scan example (single module):
```python
import asyncio
from user_scanner.core import engine
from user_scanner.email_scan.dev import github
async def main():
# Engine detects 'email_scan' path -> returns "Registered" status
result = await engine.check(github, "test@gmail.com")
json_data = result.to_json() # returns JSON output
csv_data = result.to_csv() # returns CSV output
asyncio.run(main())
```
- Username scan example (single module):
```python
import asyncio
from user_scanner.core import engine
from user_scanner.user_scan.dev import github
async def main():
# Engine detects 'user_scan' path -> returns "Available" status
result = await engine.check(github, "johndoe123")
json_data = result.to_json() # returns JSON output
csv_data = result.to_csv() # returns CSV output
asyncio.run(main())
```
---
### Username/Email variations (suffix only)
Generate & check username variations using a permutation from the given suffix:
```bash
user-scanner -u john_ -p ab # john_a, ..., john_ab, john_ba
```
### Using Proxies
Route requests through proxy servers:
```bash
user-scanner -u john_doe -P proxies.txt
```
Validate proxies before scanning (tests each proxy against google.com):
```bash
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:

---

---
## 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](CONTRIBUTING.md) for examples.
---
## Dependencies:
- [httpx](https://pypi.org/project/httpx/)
- [colorama](https://pypi.org/project/colorama/)
---
## License
This project is licensed under the **MIT License**. See [LICENSE](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.