When a developer stars your competitor's open-source repo, they are announcing two things publicly: they know the category exists, and they found your competitor's solution interesting enough to bookmark. That is a buyer at the awareness stage with category intent already confirmed. For sales teams selling developer tools, competitor repo stargazers are among the warmest leads available — and GitHub makes the entire list public.
Why Competitor Stargazers Are High-Intent Leads
Starring a repo on GitHub is not accidental. It requires a conscious action. Unlike a website visit — which could be a bot, a job seeker, or a one-second accidental click — a GitHub star means the developer actively decided to save this project for later. When someone stars prometheus/prometheus, they are probably building observability infrastructure. When someone stars supabase/supabase, they are probably evaluating Postgres hosting. When someone stars your competitor's repo, they want what your competitor sells.
- Category intent confirmed — they know the problem category exists and are actively researching solutions
- Technical profile public — you can see their top languages, repos, and GitHub activity
- Recent activity checkable — starring a repo recently means they are evaluating now, not 18 months ago
- Often reachable — a significant percentage of active GitHub developers have a public email on their profile
How to Get a Competitor's Stargazer List
GitHub exposes stargazer lists via its public API. The endpoint GET /repos/{owner}/{repo}/stargazers returns paginated user objects. For enriched profiles including email, company, and bio, each returned username requires a second call to GET /users/{username}.
import requests, time
GH_TOKEN = "ghp_your_token"
HEADERS = {"Authorization": f"Bearer {GH_TOKEN}"}
def get_new_stargazers(owner: str, repo: str, since_page: int = 1, max_pages: int = 5):
"""Fetch recent stargazers from a competitor repo."""
# Use Accept header to get starred_at timestamps
h = {**HEADERS, "Accept": "application/vnd.github.star+json"}
leads = []
for page in range(since_page, since_page + max_pages):
url = f"https://api.github.com/repos/{owner}/{repo}/stargazers"
resp = requests.get(url, headers=h, params={"page": page, "per_page": 100})
if resp.status_code != 200 or not resp.json():
break
for entry in resp.json():
user = entry["user"]
# Enrich each user
profile = requests.get(user["url"], headers=HEADERS).json()
leads.append({
"login": profile.get("login"),
"name": profile.get("name"),
"email": profile.get("email"),
"company": profile.get("company"),
"location": profile.get("location"),
"bio": profile.get("bio"),
"followers": profile.get("followers"),
"starred_at": entry.get("starred_at"),
"source_repo": f"{owner}/{repo}",
"signal_type": "competitor_star",
})
time.sleep(0.1) # gentle rate limiting
return leads
# Example: monitor who's starring a competitor
leads = get_new_stargazers("langfuse", "langfuse") # monitoring AI observability competitor
print(f"Found {len([l for l in leads if l['email']])} leads with public emails")Which Competitor Repos to Monitor
The best competitor repos to monitor are ones where a new star is a reliable buying signal for your category. Not all open-source stars are equal. A developer starring a popular UI component library (1M stars) may just be a frontend developer bookmarking a cool thing. A developer starring a niche developer tool in your exact category (5K stars) almost certainly wants what that tool does.
- Direct competitors: repos for tools that do exactly what you do
- Category adjacents: repos in adjacent categories that indicate the same buyer persona (e.g., if you sell observability tooling, monitor repos for logging, tracing, metrics)
- Complement tools: repos for tools that developers use alongside yours (integration-partner repos)
- Problem-space repos: repos whose README describes the same problem your product solves
- Avoid: mega-popular generic repos (linux/linux, facebook/react) — too noisy, not category-specific
Filtering Stargazers for Sales Quality
Not every stargazer is worth outreach. A student with 0 repos who starred a project for a class assignment is not the same as a senior engineer at a Series B startup who regularly contributes to open-source infrastructure tools. Apply these filters to prioritize your outreach queue:
- Has a public email (required for email sequences; LinkedIn for others)
- Public repos > 5 (indicates an active developer, not a passive observer)
- Followers > 10 (indicates a developer with some community presence)
- Company field is set (indicates professional context)
- Account created > 12 months ago (reduces student/hobbyist noise)
- Starred within the last 30 days (recency = active evaluation)
How to Reach Out to Competitor Stargazers
The mistake most teams make is sending a generic cold email to competitor stargazers. These developers have starred a competitor — they know the category, and they have chosen a solution. The outreach that works acknowledges that context directly.
Effective opening line templates for competitor stargazer outreach:
- "I noticed you starred [competitor repo] — we built [your product] for teams that need X that [competitor] doesn't cover"
- "You bookmarked [competitor] — if you're evaluating tools in this space, we're worth a look because [specific differentiator]"
- "Saw you starred [competitor] recently. We're similar but optimized for [your ICP use case]. Free tier if you want to compare"
Keep the first email to 3 sentences maximum. You are reaching a developer who made no move toward you — respect that. Give them something immediately useful (a feature comparison, a free trial link, a relevant doc) rather than asking for a meeting.
Automating Competitor Repo Monitoring with GitLeads
Building and maintaining a competitor stargazer pipeline manually requires ongoing engineering effort: rate limit handling, incremental polling (you only want new stars, not the full historical list), profile enrichment, deduplication, and CRM push. GitLeads automates this entire workflow.
In GitLeads, you add a tracked repo (your competitor's GitHub repo URL) and choose your integration destinations. From that point, every new stargazer on that repo is automatically enriched and routed to your HubSpot, Slack, or outreach tool in real time. You can track multiple competitor repos simultaneously. New stars appear in your lead queue within minutes of them occurring on GitHub.
Start monitoring competitor repos for free at gitleads.app. Related: turn GitHub stargazers into leads, GitHub buying signals for sales teams, and how to find leads on GitHub.