GitHub OSINT tool — extract intelligence from any GitHub user profile
Project description
GhSpy
GitHub OSINT tool — extract intelligence from any GitHub user profile.
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:
- User profile — public info, bio, location, social links
- Repositories — languages, topics, fork status, activity dates
- Commit history — author emails, timestamps, committer info
- Public events — pushes, PRs, issues, comments
- 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71789401005c03ed0db5d1857e5e31a107e8d98ec95f8caf750c5aa530677646
|
|
| MD5 |
0638f62070f8dabc9eb22e5428d02631
|
|
| BLAKE2b-256 |
31ad73c214c8cee563fba9a14311b71e0cea85c60f994ce26f164cc733e0b3f2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
318b482bb9242e41efa0c389be8a89e651216b96a16caf6baf1185b8132c1420
|
|
| MD5 |
95841d259aaf217edec0b0ec6b6ca9d7
|
|
| BLAKE2b-256 |
f4e092cb2733a15e5c8c96f6bf766735a1e114c941c9e8f4dbcaa1b574556e42
|