How holehe's 120+ Modules Are Categorized by Service Domain

Holehe's 120+ modules are organized into 18 service-based categories under holehe/modules/, with each sub-package grouping together platforms that share a common domain such as social media, e-commerce, productivity, or adult content.

This categorization system in megadose/holehe enables security researchers and OSINT practitioners to quickly locate relevant modules and understand the tool's coverage at a glance. Rather than organizing by technical implementation or API type, holehe structures its I2O+ (Input → Output plus) architecture around the real-world service domains that users actually search.

How the Module Categories Work

In holehe/modules/, each category exists as a standalone Python package with its own __init__.py. Modules within a category implement a standardized interface: they accept an email address, an asynchronous HTTP client, and a results list, then append a dictionary containing name, exists, emailrecovery, phoneNumber, others, and rateLimit.

This design means adding coverage for a new shopping site requires only creating a new file in holehe/modules/shopping/, following the same pattern as existing modules like amazon.py or ebay.py.

Complete Category Breakdown

The 18 categories cover distinct service domains. Below is the full taxonomy with representative modules and source locations:

Social Media

  • Purpose: Profile and login discovery on networking platforms
  • Modules: twitter, instagram, snapchat, tiktok (via facebook), xing
  • Source: holehe/modules/social_media/

Software

  • Purpose: Desktop and cloud software with password-recovery endpoints
  • Modules: office365, lastpass, adobe, docker, firefox
  • Source: holehe/modules/software/

Shopping

  • Purpose: E-commerce account lookups
  • Modules: amazon, ebay, vivino, naturabuy, garmin
  • Source: holehe/modules/shopping/

Productivity

  • Purpose: Organization and task management tools
  • Modules: evernote, anydo
  • Source: holehe/modules/productivity/

Music

  • Purpose: Streaming and music-related platforms
  • Modules: spotify, soundcloud, lastfm, tunefind
  • Source: holehe/modules/music/

Adult Content

  • Purpose: Adult sites with exposed account-recovery
  • Modules: pornhub, xnxx, xvideos
  • Source: holehe/modules/porn/

Payment

  • Purpose: Financial and payment services
  • Modules: venmo
  • Source: holehe/modules/payment/

OSINT

  • Purpose: Intelligence and email-lookup APIs
  • Modules: rocketreach
  • Source: holehe/modules/osint/

Learning

  • Purpose: Educational platforms
  • Modules: quora, duolingo, codecademy
  • Source: holehe/modules/learning/

Programming

  • Purpose: Developer platforms and coding sites
  • Modules: github, replit, devrant, teamtreehouse
  • Source: holehe/modules/programing/

Real Estate

  • Purpose: Property-listing services
  • Modules: vrbo
  • Source: holehe/modules/real_estate/

Crowdfunding

  • Purpose: Fundraising platforms
  • Modules: buymeacoffee
  • Source: holehe/modules/crowfunding/

Company

  • Purpose: Personal-branding and about-page services
  • Modules: aboutme
  • Source: holehe/modules/company/

CMS

  • Purpose: Content management systems
  • Modules: wordpress, gravatar, atlassian
  • Source: holehe/modules/cms/

Medical

  • Purpose: Health-oriented platforms
  • Modules: sevencups, caringbridge
  • Source: holehe/modules/medical/

Media Sharing

  • Purpose: Photo and video hosting services
  • Modules: flickr
  • Source: holehe/modules/medias/

Transport

  • Purpose: Ride-sharing and travel services
  • Modules: blablacar
  • Source: holehe/modules/transport/

Sports

  • Purpose: Fitness and athletic platforms
  • Modules: bodybuilding
  • Source: holehe/modules/sport/

Working with Categories in Code

Running a Single Module

Target a specific service using direct import from its category:

import trio, httpx
from holehe.modules.social_media.twitter import twitter

async def demo():
    email = "test@example.com"
    out = []
    async with httpx.AsyncClient() as client:
        await twitter(email, client, out)
    print(out)  # → [{'name': 'twitter', 'exists': True, ...}]

trio.run(demo)

Running All Modules in a Category

Programmatically discover and execute every module within a category:

import trio, httpx
from importlib import import_module
from pathlib import Path

async def run_category(category: str, email: str):
    out = []
    async with httpx.AsyncClient() as client:
        mod_path = Path(__file__).parent / "holehe" / "modules" / category
        for py_file in mod_path.glob("*.py"):
            if py_file.name == "__init__.py":
                continue
            mod = import_module(f"holehe.modules.{category}.{py_file.stem}")
            await getattr(mod, py_file.stem)(email, client, out)
    return out

email = "test@example.com"
results = trio.run(run_category, "social_media", email)
print(results)

CLI: Scanning Across All Categories

Execute the full module suite from command line:

holehe test@example.com

The CLI dispatcher in holehe/core.py automatically loads all categories and modules, handling the asynchronous orchestration.

Key Implementation Files

File Role
holehe/core.py Orchestrates module loading and async dispatch
holehe/modules/__init__.py Exposes category package structure
holehe/modules/social_media/twitter.py Reference social-media implementation
holehe/modules/software/office365.py Reference software-category implementation
holehe/modules/shopping/amazon.py Reference shopping-category implementation

Summary

  • 18 domain-based categories organize holehe's 120+ modules under holehe/modules/
  • Service taxonomy prioritizes real-world use cases over technical implementation details
  • Standardized interface across all modules enables consistent extension and maintenance
  • Category-level imports allow targeted or broad execution strategies
  • I2O+ architecture separates input handling, service queries, and result aggregation cleanly

Frequently Asked Questions

How many categories does holehe have?

Holehe organizes its modules into 18 distinct categories, ranging from social_media and shopping to specialized domains like medical, transport, and adult content. This number has grown organically as the tool expanded its service coverage.

Can I run only specific categories instead of all modules?

Yes. While the CLI (holehe test@example.com) runs all available modules, you can programmatically target specific categories using the pattern shown in the code example above—importing from holehe.modules.{category} and iterating over that sub-package's Python files.

How do I add a new module to an existing category?

Create a new Python file in the appropriate holehe/modules/{category}/ directory. The module must implement the standard async function signature: async def servicename(email, client, out) where client is an httpx.AsyncClient and out is a list to which you append result dictionaries. No changes to core.py are required for category additions.

Why are categories organized by service type rather than technical approach?

The domain-based taxonomy aligns with how OSINT practitioners actually search—by the platform they're investigating. A researcher looking for social media accounts doesn't need to know whether a service uses OAuth, REST, or GraphQL; they need to find the social_media category and select relevant targets. This organization also makes coverage gaps immediately visible.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →