Skip to content

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

noimosiny-checker

A console account-checker built on top of the Noimosiny reverse-search API.

Give it an email, a phone number, or a username and it will run the Noimosiny reverse-search modules in one request, then print a per-module summary:

Target: john.doe@example.com  (reverse_email)

[+] gravatar
    name=John Doe, profile_url=https://gravatar.com/jdoe
[+] github
    username=jdoe, profile_url=https://github.com/jdoe
[+] linkedin
    full_name=John Doe, location=Berlin, DE
[-] facebook
[-] instagram
[x] tiktok (rate-limited)

Summary: 3 found / 6 modules checked
Balance remaining: 41

Features

  • Auto-detects the query type (email / phone / username) — override with -e / -p / -u.
  • Colour output: [+] found, [-] not found, [x] errored.
  • One API call, dozens of services — Noimosiny fans the query out server-side.
  • Verbose mode (-v) dumps every data field returned by each module.
  • JSON mode (--json or -o file.json) for piping into other tools.
  • Zero heavy deps — only aiohttp. No pandas, no rich, no httpx.
  • Standalone library: from noimosiny_checker.api import search for programmatic use.

Install

git clone https://github.com/soxoj/noimosiny-checker.git
cd noimosiny-checker
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Or without installation:

pip install -r requirements.txt
python3 -m noimosiny_checker --help

Requires Python 3.10+.

Configuration

You need a Noimosiny API token. Request one at https://api.noimosiny.com/docs.

Provide it in any of the following ways (in order of precedence):

  1. CLI flag: --token <YOUR_TOKEN>

  2. Environment variable: NOIMOSINY_API_TOKEN=<YOUR_TOKEN>

  3. .env file in the current directory (see .env.example):

    NOIMOSINY_API_TOKEN=your-token-here
    NOIMOSINY_API_URL=https://api.noimosiny.com/v1/execute
    NOIMOSINY_API_TIMEOUT=120
    

Usage

Auto-detected query

noimosiny-checker john.doe@example.com
noimosiny-checker +14155550123
noimosiny-checker jdoe

Explicit query type

noimosiny-checker -e john.doe@example.com
noimosiny-checker -p "+1 (415) 555-0123"
noimosiny-checker -u jdoe

Show everything (including misses)

noimosiny-checker -a jdoe

Full per-field dump for found accounts

noimosiny-checker -v john.doe@example.com

Raw JSON output (great for scripts)

noimosiny-checker --json jdoe | jq '.results[] | select(.success) | .module'
noimosiny-checker -o response.json jdoe

One-shot custom token / endpoint

noimosiny-checker --token $TOKEN --api-url https://api.noimosiny.com/v1/execute jdoe

Full CLI reference

usage: noimosiny-checker [-h] [-e | -p | -u] [-v] [-a] [--only-found] [--json]
                         [-o PATH] [--token TOKEN] [--api-url URL]
                         [--timeout TIMEOUT] [--no-color] [-q] [--debug] [-V]
                         [query]
Flag Description
-e, --email Treat the query as an email
-p, --phone Treat the query as a phone (must include country code, e.g. +1...)
-u, --username Treat the query as a username
-v, --verbose Print every data field returned by each module
-a, --all Also list modules where nothing was found
--only-found Show only modules that returned data
--json Print the raw API JSON to stdout
-o, --output PATH Write the raw API JSON to a file
--token TOKEN API token (overrides env var)
--api-url URL Override the API endpoint
--timeout SECONDS Request timeout (default: 120)
--no-color Disable ANSI colours (also honours NO_COLOR env var)
-q, --quiet Suppress logs
--debug Verbose logging

Programmatic use

The same client is exposed as a small library:

from noimosiny_checker.api import execute_search, search
from noimosiny_checker.validators import detect_query_type, normalize_query

# Async
import asyncio

async def main():
    qtype = detect_query_type("john.doe@example.com")
    query = normalize_query(qtype, "John.Doe@Example.com")
    response = await execute_search(qtype, query, token="YOUR_TOKEN")
    for r in response.get("results", []):
        if r.get("success") and r.get("data"):
            print(r["module"], r["data"])

asyncio.run(main())

# Or synchronously
response = search("reverse_email", "john.doe@example.com", token="YOUR_TOKEN")

Response shape

The Noimosiny Search endpoint returns:

{
  "results": [
    {
      "success": true,
      "module": "github",
      "data": {
        "username": "jdoe",
        "profile_url": "https://github.com/jdoe",
        "name": "John Doe"
      }
    },
    {
      "success": false,
      "module": "facebook"
    },
    {
      "success": false,
      "module": "tiktok",
      "error": "rate-limited"
    }
  ],
  "balance": 41
}

Per-module data is module-specific — noimosiny-checker -v will print every field; --json will give you the unmodified payload to parse however you like.

Query type reference

The CLI maps logical types to the API's type parameter as follows:

User-facing flag API type value
--email reverse_email
--phone reverse_phone
--username username

Phone numbers must include a country code (+1..., +44..., +7...). The CLI rejects bare 10/11-digit Russian numbers with a hint to add +7.

Exit codes

Code Meaning
0 Successful response (even if no modules returned data)
1 API error (auth failure, rejected query, timeout, network)
2 Bad CLI invocation (missing token, undetectable query type, bad phone format)

How it works

The tool delegates module execution to Noimosiny's hosted reverse-search backend. A single Search request fans out across every supported module server-side and the response comes back with one entry per module. That means you don't have to maintain scrapers locally, and the same CLI covers email, phone and username lookups in one place — at the cost of needing an API token.

Development

pip install -e .
python3 -m noimosiny_checker --help

The package layout:

noimosiny_checker/
├── __init__.py
├── __main__.py        # `python3 -m noimosiny_checker`
├── api.py             # async/sync Noimosiny client
├── cli.py             # argparse + main()
├── output.py          # ANSI rendering
└── validators.py      # query-type detection and normalization

SOWEL classification

OSINT techniques used:

Ethical use

This tool queries publicly available, third-party data via Noimosiny. Use it only for purposes that are legal in your jurisdiction and respectful of the subjects involved — for example, authorized OSINT investigations, security research, fraud prevention, or your own account hygiene. Don't use it to harass, dox, or stalk anyone.

License

MIT. Built on top of the Noimosiny API — separate terms of service apply to your API usage.

Releases

Packages

Used by

Contributors

Languages