Github Star Gazer Actor avatar

Github Star Gazer Actor

Pricing

from $24.00 / 1,000 gituhub-profiles

Go to Apify Store
Github Star Gazer Actor

Github Star Gazer Actor

Extract every user who starred any GitHub repository. Get name, company, location, website, email, and linkedin. Perfect for B2B lead generation and DevRel outreach.

Pricing

from $24.00 / 1,000 gituhub-profiles

Rating

0.0

(0)

Developer

Giovanni Bianciardi

Giovanni Bianciardi

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

4

Monthly active users

15 hours ago

Last modified

Share

GitHub Star Gazer - Scrape GitHub Stargazers and Extract Contact Info

GitHub Star Gazer is an Apify Actor that collects every user who starred a GitHub repository and enriches their profile with contact information: email addresses, phone numbers, and social media profiles scraped from their personal websites.

Use it for developer lead generation, open-source community outreach, sales prospecting, and competitive intelligence on GitHub repositories.


What It Does

  1. Fetches all stargazers of any public GitHub repository with full pagination support
  2. Enriches each profile via the GitHub API - name, bio, location, company, follower count, public repos
  3. Scrapes the personal website listed on the GitHub profile to extract:
    • Email address (mailto links + regex fallback)
    • Phone number (tel links + regex fallback)
    • LinkedIn, Twitter/X, Instagram, YouTube, Reddit, Facebook, TikTok profile URLs

The result is a ready-to-use contact list of developers who expressed interest in a specific technology or project.


Key Features

FeatureDetails
Full stargazer paginationCollects every star, no artificial cap
GitHub profile enrichmentName, bio, company, location, followers, public repos
Email extractionFrom GitHub profile and personal website
Phone extractionFrom personal website (tel links and regex)
Social media discoveryLinkedIn, Twitter/X, Instagram, YouTube, Reddit, Facebook, TikTok
GitHub token supportIncreases rate limit from 60 to 5,000 requests/hour
Max results limitSet a cap for quick tests or cost control
Configurable enrichmentToggle profile enrichment and website scraping independently

Use Cases

  • Sales prospecting: Build a contact list of developers who starred a competitor repo and reach out directly
  • Developer outreach: Contact contributors or early adopters of an open-source project
  • Community growth: Find active GitHub users in your niche who have public contact info
  • Market research: Analyze who is watching a repository - company, location, follower count
  • Talent sourcing: Identify developers interested in a specific technology stack

Input Parameters

ParameterTypeRequiredDefaultDescription
ownerstringYes-GitHub username or organization (e.g. vercel)
repostringYes-Repository name (e.g. next.js)
github_tokenstringNo-Personal Access Token - raises rate limit from 60 to 5,000 req/h
max_resultsintegerNo0Max stargazers to collect. 0 = unlimited
enrich_profilesbooleanNotrueFetch full profile data for each user via GitHub API
scrape_websitesbooleanNotrueVisit each personal website to extract contact info and social links

Getting a GitHub Token

  1. Go to github.com/settings/tokens
  2. Click Generate new token (classic)
  3. Select the public_repo scope (read-only access is sufficient)
  4. Copy the token and paste it into the github_token field

Without a token the actor is limited to 60 API requests/hour. For repositories with hundreds or thousands of stars, a GitHub token is strongly recommended.


Output Data

Each record in the dataset represents one stargazer. Example output:

{
""repo_owner"": ""vercel"",
""repo_name"": ""next.js"",
""username"": ""johndoe"",
""github_id"": 1234567,
""name"": ""John Doe"",
""company"": ""Acme Corp"",
""location"": ""San Francisco, CA"",
""bio"": ""Full-stack developer. Open source enthusiast."",
""followers"": 342,
""following"": 120,
""public_repos"": 47,
""profile_url"": ""https://github.com/johndoe"",
""avatar_url"": ""https://avatars.githubusercontent.com/u/1234567"",
""blog"": ""https://johndoe.dev"",
""email"": ""john@example.com"",
""email_from_website"": ""contact@johndoe.dev"",
""phone_from_website"": ""415-555-0123"",
""linkedin"": ""https://www.linkedin.com/in/johndoe"",
""twitter"": ""https://twitter.com/johndoe"",
""instagram"": ""https://www.instagram.com/johndoe"",
""youtube"": null,
""reddit"": null,
""facebook"": null,
""tiktok"": null,
""starred_at"": ""2024-03-15T10:22:00Z""
}

Output Fields Reference

FieldSourceDescription
usernameGitHub APIGitHub login handle
github_idGitHub APIUnique numeric GitHub user ID
nameGitHub APIDisplay name
companyGitHub APICompany field from GitHub profile
locationGitHub APILocation field from GitHub profile
bioGitHub APIProfile bio text
followers / followingGitHub APIFollower and following counts
public_reposGitHub APINumber of public repositories
profile_urlGitHub APILink to the GitHub profile
blogGitHub APIPersonal website URL as listed on GitHub
emailGitHub APIEmail if made public on the GitHub profile
email_from_websiteWebsite scrapeEmail address found on personal website
phone_from_websiteWebsite scrapePhone number found on personal website
linkedinWebsite scrapeLinkedIn profile URL
twitterWebsite scrapeTwitter / X profile URL
instagramWebsite scrapeInstagram profile URL
youtubeWebsite scrapeYouTube channel URL
redditWebsite scrapeReddit profile URL
facebookWebsite scrapeFacebook profile URL
tiktokWebsite scrapeTikTok profile URL
starred_atGitHub APIISO 8601 timestamp when the star was added

How Website Scraping Works

When scrape_websites is enabled, the actor visits the URL in each user GitHub blog field and:

  1. Parses the HTML with BeautifulSoup
  2. Looks for mailto: anchor tags first, then falls back to regex scanning the full page text
  3. Looks for tel: anchor tags first, then falls back to regex for phone numbers
  4. Searches all anchor tags for known social media domain patterns (LinkedIn, Twitter/X, Instagram, YouTube, Reddit, Facebook, TikTok)

Only the first match per field is returned. The scraping step is skipped if the user has no personal website listed.


Rate Limits and Performance

ConditionGitHub API Rate Limit
No token (unauthenticated)60 requests / hour
With Personal Access Token5,000 requests / hour

With enrich_profiles enabled, each stargazer costs 1 API call. A repo with 1,000 stars requires approximately 1,010 requests total (10 paginated stargazer pages + 1,000 profile lookups). A GitHub token is essential for repos with more than ~50 stars.

The actor automatically waits when a rate limit is hit and resumes when the reset window opens (up to 10 minutes). If the wait would exceed 10 minutes, the actor stops early and logs a warning with instructions to add a GitHub token.


Tips

  • Test with max_results set to 10 before running a full collection
  • Set enrich_profiles: false and scrape_websites: false for a lightweight list of usernames only
  • Export to CSV directly from the Apify Console for use in CRMs or email outreach tools
  • Schedule the actor to run on a recurring basis to capture new stargazers as they appear