🎯 Issue Hunter
Search GitHub for open, unassigned issues that nobody is fixing yet — perfect for finding your next open-source contribution.
Features
- 🔍 Searches any public GitHub repository for open issues with no assignee
- 🌍 Global discover mode — find huntable issues across all of GitHub, filtered by repository stars
- 🚫 Automatically excludes issues that already have a linked pull request using multi-strategy detection:
- Timeline events API (cross-referenced PRs)
- Issue body scanning for PR URLs and "fixes #N" patterns
- Search API for open PRs referencing the issue
- 🏷️ Filter by labels (e.g.
bug,good first issue,help wanted) - 📝 Free-text query support
- 🌐 Filter by programming language (discover mode)
- ⭐ Filter by repository stars (discover mode)
- 📊 Rich terminal table output or JSON export
- 🔑 Optional GitHub token support for higher rate limits
- ⚡ Rate-limit aware — backs off automatically when limits are low
Installation
pip install -e .
Usage
Basic hunt (single repo)
issuehunter hunt facebook/react
Filter by labels
issuehunter hunt facebook/react -l "bug" -l "good first issue"
Free-text search
issuehunter hunt microsoft/vscode -q "memory leak"
Limit results
issuehunter hunt torvalds/linux -n 10
JSON output (for scripting)
issuehunter hunt python/cpython --json | jq '.[].title'
Skip PR check (faster)
issuehunter hunt rust-lang/rust --no-pr-check
🌍 Global discover mode
Find huntable issues across all of GitHub without specifying a repository:
# Issues in repos with 1000+ stars (default)
issuehunter discover
# Issues in repos with 5000+ stars
issuehunter discover --min-stars 5000
# Star range: 500–2000 stars
issuehunter discover --min-stars 500 --max-stars 2000
# Filter by language
issuehunter discover --language python --min-stars 1000
# Filter by label
issuehunter discover -l "good first issue" --min-stars 500
# Sort by most commented
issuehunter discover --sort comments
# JSON output with repo stars
issuehunter discover --json
Check rate limits
issuehunter ratelimit
Authentication
Set a GitHub personal access token to increase API rate limits (60 → 5000 requests/hour):
export GITHUB_TOKEN="ghp_your_token_here"
Or pass it directly:
issuehunter hunt owner/repo --token ghp_your_token_here
How it works
- Uses the GitHub Search Issues API with qualifiers:
is:issue is:open no:assignee - For each candidate, runs multi-strategy PR detection:
- Timeline events — checks for
cross-referencedandconnectedevents from PRs - Body scanning — regex-matches PR URLs and "fixes/closes/resolves #N" patterns
- PR search — queries the Search API for open PRs mentioning the issue number
- Timeline events — checks for
- Issues with a linked PR (open or closed) are excluded
- In discover mode, repository star counts are fetched and cached for display
- Results are sorted by creation date (newest first) by default
License
MIT
Metadata
Release files for issuehunter 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| issuehunter-0.1.0.tar.gz | 11.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| issuehunter-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.2 kB
Release files / issuehunter-0.1.0.tar.gz
| Download URL | issuehunter-0.1.0.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9f2638e2cdac396ed32c8efdb8424e9145312df7c41b9bd95b39a9a5061698cf
|
|
BLAKE2b-256 checksum How to use checksums |
fe837924eb0f3dfeadaca3e20c60c75f38cbbea69029c4fe6f588f005e52e103
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / issuehunter-0.1.0-py3-none-any.whl
| Download URL | issuehunter-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f25c2acf3c2b1dc890e1359a8ed3fc7f0337a60545b823ed0ee739641d36713
|
|
BLAKE2b-256 checksum How to use checksums |
41e64aa611efe1f18e3d67eeaec5051af34e57c4c0f35cd5df45ab52e8f95e78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|