Every developer tool company with an open-source component publishes a live, real-time list of people who are evaluating them. That list is their GitHub repository. The Stargazers tab of any public repo shows every user who has bookmarked it — including the ones who starred it five minutes ago. If you sell a competing or complementary product, those names are your warmest possible market.
This is not a grey area. GitHub makes this data public by design. The stargazers API endpoint requires only an authenticated token to access, has no terms restriction on reading public star data, and is the same API GitHub uses in their own analytics products. The question is not whether you can access this data — it is whether you have a system to act on it faster than the evaluation window closes.
The Evaluation Window: Why Speed Matters
When a developer stars a repo, they are typically in a 24–72 hour active evaluation window. During this time, they are reading docs, running hello-world examples, and forming initial opinions. After 72 hours without a meaningful product interaction, cognitive switching costs kick in — they move on to the next thing, or they have already made a decision.
The implication: competitor intelligence is only actionable when it is real-time. A list of competitor stargazers from six months ago is market research data. A list from the last four hours is a sales pipeline.
Step 1: Identify Which Competitor Repos to Track
Not all competitor repos generate equal signal quality. Prioritize repos that indicate product evaluation over general interest:
- Primary product repos (the thing they actually sell), not ecosystem repos or sample code
- Repos with recent star velocity — a repo getting 50 new stars/week generates more actionable leads than one with 50,000 total stars from 2019
- SDK and client library repos — developers who star these are past "interesting project" and actively integrating
- Example/starter repos — very high signal, indicates active evaluation
- Avoid: forked repos, archived repos, general language tooling repos where stars indicate curiosity, not evaluation
Step 2: Accessing Competitor Stargazer Data via the GitHub API
The GitHub API exposes stargazers with timestamps when you request the star+json media type:
# Get stargazers with timestamps (requires Accept header)
curl -H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.github.star+json" \
"https://api.github.com/repos/COMPETITOR/REPO/stargazers?per_page=100&page=1"
# Response includes starred_at timestamp:
# {
# "starred_at": "2026-04-24T09:15:32Z",
# "user": { "login": "johndoe", "id": 123456, ... }
# }
# For new stars only: filter by starred_at > last_checked_at
# Then fetch full profile for each new login:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.github.com/users/johndoe"
# Returns: name, email, company, location, bio, followers, public_repos, top_languagesFor repos with millions of stars, use reverse pagination (start from the last page) and cache the highest-numbered page you have fully processed. You only need to poll new stars since your last check — typically a 5–15 minute polling interval is sufficient for most competitor repos.
Step 3: Enriching and Qualifying Competitor Stargazers
Raw stargazer data is a GitHub username and timestamp. To qualify it as a sales lead, you need enrichment:
- Name: available on the /users/{login} profile endpoint
- Email: available if the developer has made it public (typically 20–35% of profiles)
- Company: the company field — often includes @company-name handles that map to LinkedIn
- Bio: frequently contains job title, tech stack, and current focus area
- Top languages: inferred from their public repos — critical for ICP matching
- Follower count: a proxy for seniority and influence in the developer community
- Location: useful for routing to regional sales reps or time-zone-aware sequencing
Step 4: Filtering for Your ICP
Not everyone who evaluates a competitor is your customer. Apply ICP filters before routing to your sales stack:
interface StargazerLead {
login: string;
email?: string;
company?: string;
bio?: string;
followers: number;
publicRepos: number;
topLanguages: string[];
location?: string;
}
function matchesICP(lead: StargazerLead, icp: ICPConfig): boolean {
// Example ICP: Go or Rust engineers at companies, 50+ followers
const languageMatch = lead.topLanguages.some(l =>
icp.targetLanguages.includes(l)
);
const companySignal = !!lead.company && lead.company.length > 1;
const senioritySignal = lead.followers >= icp.minFollowers;
return languageMatch && companySignal && senioritySignal;
}
// Leads matching ICP → sales sequence
// Non-ICP leads with email → newsletter segment
// Non-ICP, no email → discardStep 5: The Competitor Intelligence Outreach Sequence
Outreach to competitor evaluators requires a different tone than warm inbound leads. They did not express interest in your product — they expressed interest in your competitor. Your message must acknowledge that framing and differentiate without being defensive:
Subject: If you're evaluating {competitor}, this comparison might help
Hi {first_name},
Saw you were checking out {competitor_repo}. We solve the same problem with a few meaningful differences:
→ {key_differentiator_1}
→ {key_differentiator_2}
→ {key_differentiator_3}
Full comparison: gitleads.app/vs/{competitor_slug}
Happy to answer specific questions if you're running evaluations in parallel.
{your_name}What to Track Beyond Stargazers
Stargazers are the most accessible competitor signal, but GitHub exposes several more:
- Forks: A fork indicates intent to modify or integrate — higher intent than a star
- Issues: People who open issues on competitor repos are active users with problems — prime targets if the issue is about a missing feature your tool has
- Discussions: Community discussions on competitor repos reveal pain points, feature gaps, and migration intent at scale
- Watchers: Developers watching a repo are monitoring for changes — usually existing users or deep evaluators
- Contributors: People contributing to a competitor's open-source repo are highly engaged — consider them for partnership or technical marketing outreach, not direct sales
Building vs. Buying the Monitoring Infrastructure
The engineering effort to build a production competitor monitoring system is significant: GitHub polling workers with proper rate limit handling, enrichment pipeline, deduplication, ICP scoring, CRM sync, and alerting. Figure 3–5 weeks of backend engineering time to build correctly, plus ongoing maintenance as GitHub API changes and competitor repos evolve.
GitLeads provides this as a managed platform: add competitor repos alongside your own repos, set your ICP filters, connect your CRM or Slack destination, and receive enriched competitor stargazer leads in real time. The free tier supports up to 50 leads per month across all tracked repos — enough to validate the signal quality before committing to a paid plan. See also: GitHub buying signals for sales teams, turn GitHub stargazers into leads, how to find leads on GitHub.