tools/integrations/github.md
GitHub REST API for prospecting use cases: listing users who star, fork, or watch a repo as a high-quality developer-intent signal.
| Integration | Available | Notes |
|---|---|---|
| API | ✓ | Public REST API, well-documented |
| MCP | - | Several community MCP servers exist; not bundled here |
| CLI | ✓ | github-prospects.js — stargazers, forks, watchers, user, rate-limit |
| SDK | ✓ | Official Octokit (JS, Python, Ruby, .NET, Go) |
Authorization: Bearer {token}public_repo scopeGITHUB_TOKEN| Auth | Limit | When you hit it |
|---|---|---|
| Unauthenticated | 60 req/hr | Fine for one-off small lookups |
| Authenticated PAT | 5,000 req/hr | Sufficient for a 10K-star repo pull in one hour |
| GitHub App | 5,000–15,000 req/hr | For high-volume use |
A 1,000-star repo with full enrichment (1 list call + 1 profile call per user) = ~1,011 requests. Always set a token.
GET https://api.github.com/repos/{owner}/{repo}/stargazers?per_page=100&page=1
Accept: application/vnd.github+json
X-GitHub-Api-Version: 2022-11-28
Authorization: Bearer {token}
Pagination via Link header (rel="next", rel="last"). Default 30 per page, max 100.
Returns array of user objects with login, id, html_url, type (User or Organization). Full profile fields (email, company, blog, bio, location) require a follow-up call per user.
GET https://api.github.com/repos/{owner}/{repo}/forks?per_page=100&page=1
Each fork object includes the owner (the user/org that forked). Forks are a stronger signal than stars — they imply intent to modify, not just bookmark.
GET https://api.github.com/repos/{owner}/{repo}/subscribers?per_page=100&page=1
GitHub's "watch" → API's "subscribers". Smaller pool than stargazers but signals deeper engagement.
GET https://api.github.com/users/{username}
Returns: name, company, blog, email (if public), bio, twitter_username, location, public_repos, followers, created_at, hireable.
Key fields for prospecting:
email: only ~5–20% of users publish this. Always nullable.company: many users include @org syntax — strip the @ for plain company name.blog: often a personal website where contact info is published.twitter_username / bio: useful for cross-channel research.GET https://api.github.com/rate_limit
# 100 stargazers, enrich each one, only keep those with email or company set
node tools/clis/github-prospects.js stargazers vercel/next.js \
--limit 100 --enrich --format csv > nextjs-stars.csv
Filter the CSV in your spreadsheet by company set OR email set OR blog set. Hand off to Apollo/Clay/Hunter to enrich the rest with email-by-name+company.
People who fork your repo have already shown direct interest. High-conversion outreach prospects.
node tools/clis/github-prospects.js forks yourorg/yourrepo \
--enrich --with-email --format csv > my-fork-prospects.csv
Watchers are smaller in number but higher in intent — they're tracking changes, not just bookmarking.
node tools/clis/github-prospects.js watchers tldraw/tldraw \
--enrich --with-company --format csv > tldraw-watchers.csv
# Stargazers
node tools/clis/github-prospects.js stargazers <owner/repo> \
[--limit N] [--enrich] [--with-email] [--with-company] \
[--with-blog] [--type User|Organization] [--format csv|json]
# Forks
node tools/clis/github-prospects.js forks <owner/repo> [...same flags]
# Watchers (subscribers in API terms)
node tools/clis/github-prospects.js watchers <owner/repo> [...same flags]
# Single user lookup
node tools/clis/github-prospects.js user <username>
# Check rate limit
node tools/clis/github-prospects.js rate-limit
Flags:
--limit N: cap total results pulled from the list endpoint--target N: when filtering with --with-*, stop enriching as soon as N users match (saves quota on restrictive filters)--enrich: fetch full profile per user (1 extra request each)--with-email / --with-company / --with-blog: filter to users with these fields set (implies --enrich)--type User|Organization: filter by account type--format csv: output prospecting-ready CSV; default is JSON--dry-run: preview the request without sendingnext.js, prisma, tailwindcss, etc., signal a Next.js / Prisma / Tailwind developerhtml_url (their profile URL) and the source repo. Required for GDPR DSAR defense.X-RateLimit-Remaining headers.Typical GitHub prospecting pipeline:
See skills/prospecting/references/saas-prospecting.md and data-sources.md for the full prospecting framework.