Skip to main content

GitHub OSINT tool — extract intelligence from any GitHub user profile

Project description

GhSpy

GitHub OSINT tool — extract intelligence from any GitHub user profile.

PyPI Python License Stars


Discover emails, estimate timezones, map tech stacks, find collaborators, and analyze activity patterns — all from your terminal. GhSpy uses the public GitHub API to gather open-source intelligence on any GitHub user.

  • Email Discovery — extract real email addresses from commit history
  • Timezone Estimation — estimate location from commit hour patterns
  • Activity Analysis — peak hours, active days, contribution streaks
  • Tech Stack Mapping — languages, topics, original vs forked repos
  • Collaborator Detection — frequent interactions, orgs, following
  • Identity Mapping — cross-reference commit emails and author names

Installation

pip install ghspy

Requires Python 3.8+. Works on Linux, macOS, and Windows.

Usage

# Full OSINT scan
ghspy scan torvalds

# Extract emails from commit history
ghspy emails dhh

# Estimate timezone
ghspy timezone antirez

# Activity patterns
ghspy activity shazeus

# Tech stack
ghspy techstack gvanrossum

# Collaborators & organizations
ghspy collabs octocat

# Export to JSON
ghspy export torvalds --format json -o report.json

# Export to CSV
ghspy export torvalds --format csv -o report.csv

Commands

Command Description
ghspy scan <user> Full OSINT scan with all modules
ghspy emails <user> Extract emails from commit history
ghspy timezone <user> Estimate timezone from commit patterns
ghspy activity <user> Activity breakdown by hour, day, and event type
ghspy techstack <user> Languages, topics, and repo statistics
ghspy collabs <user> Collaborators, organizations, and following
ghspy export <user> Export findings to JSON or CSV
ghspy rate-limit Check GitHub API rate limit

Configuration

GitHub Token

Without a token you get 60 requests/hour. With a token you get 5,000 requests/hour. A full scan uses 20–50 requests depending on the user's repo count.

# Set as environment variable (recommended)
export GITHUB_TOKEN=ghp_your_token_here

# Or pass directly
ghspy --token ghp_xxxx scan torvalds

Generate a token at github.com/settings/tokens — no special scopes needed for public data.

JSON Output

Every command supports --json-output for piping to other tools:

ghspy scan user --json-output | jq '.emails'
ghspy scan user --json-output | jq '.timezone.estimated_timezone'

How It Works

GhSpy queries the public GitHub REST API to collect:

  1. User profile — public info, bio, location, social links
  2. Repositories — languages, topics, fork status, activity dates
  3. Commit history — author emails, timestamps, committer info
  4. Public events — pushes, PRs, issues, comments
  5. Social graph — followers, following, organizations

All data is publicly available through GitHub's API. No authentication bypass or scraping is involved.

Disclaimer

This tool only accesses publicly available data through the official GitHub API. It does not bypass access controls, scrape private information, or violate GitHub's Terms of Service. Use responsibly.

License

MIT

Project details


Download files

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

Source Distribution

ghspy-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

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

ghspy-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file ghspy-0.1.0.tar.gz.

File metadata

  • Download URL: ghspy-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for ghspy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 71789401005c03ed0db5d1857e5e31a107e8d98ec95f8caf750c5aa530677646
MD5 0638f62070f8dabc9eb22e5428d02631
BLAKE2b-256 31ad73c214c8cee563fba9a14311b71e0cea85c60f994ce26f164cc733e0b3f2

See more details on using hashes here.

File details

Details for the file ghspy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ghspy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for ghspy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 318b482bb9242e41efa0c389be8a89e651216b96a16caf6baf1185b8132c1420
MD5 95841d259aaf217edec0b0ec6b6ca9d7
BLAKE2b-256 f4e092cb2733a15e5c8c96f6bf766735a1e114c941c9e8f4dbcaa1b574556e42

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