Gitlab Star Gazer Actor avatar

Gitlab Star Gazer Actor

Pricing

from $30.00 / 1,000 profiles

Go to Apify Store
Gitlab Star Gazer Actor

Gitlab Star Gazer Actor

Extract profiles of users who starred any GitLab repository — with emails, linkedin, instagram and phone numbers scraped from personal websites. Built for B2B lead generation and developer outreach.

Pricing

from $30.00 / 1,000 profiles

Rating

0.0

(0)

Developer

Giovanni Bianciardi

Giovanni Bianciardi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

GitLab Star Gazer - Scrape GitLab Starrers and Extract Contact Info

GitLab Star Gazer is an Apify Actor that collects every user who starred a GitLab 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 GitLab repositories.


What It Does

  1. Fetches all starrers of any public GitLab repository with full pagination support
  2. Enriches each profile via the GitLab API - name, bio, location, organization, follower count, LinkedIn, Twitter
  3. Scrapes the personal website listed on the GitLab 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 starrers paginationCollects every star, no artificial cap
GitLab profile enrichmentName, bio, organization, location, followers, LinkedIn, Twitter
Email extractionFrom GitLab public email and personal website
Phone extractionFrom personal website (tel links and regex)
Social media discoveryLinkedIn, Twitter/X, Instagram, YouTube, Reddit, Facebook, TikTok
GitLab token supportPersonal Access Token for higher rate limits and private repos
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 GitLab users in your niche who have public contact info
  • Market research: Analyze who is watching a repository - organization, location, follower count
  • Talent sourcing: Identify developers interested in a specific technology stack

Input Parameters

ParameterTypeRequiredDefaultDescription
ownerstringYes-GitLab username, group or namespace (e.g. gitlab-org)
repostringYes-Repository name (e.g. gitlab)
gitlab_tokenstringNo-Personal Access Token - increases rate limits and allows private repos
max_resultsintegerNo0Max starrers to collect. 0 = unlimited
enrich_profilesbooleanNotrueFetch full profile data for each user via GitLab API
scrape_websitesbooleanNotrueVisit each personal website to extract contact info and social links

Getting a GitLab Token

  1. Go to gitlab.com/-/user_settings/personal_access_tokens
  2. Click Add new token
  3. Select the read_api scope (read-only access is sufficient)
  4. Copy the token and paste it into the gitlab_token field

Without a token the actor uses unauthenticated requests, which are subject to GitLab's IP-based rate limits. For repositories with hundreds or thousands of stars, a GitLab token is strongly recommended.


Output Data

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

{
"repo_owner": "gitlab-org",
"repo_name": "gitlab",
"username": "johndoe",
"gitlab_id": 1234567,
"name": "John Doe",
"company": "Acme Corp",
"location": "San Francisco, CA",
"bio": "Full-stack developer. Open source enthusiast.",
"followers": 342,
"following": 120,
"profile_url": "https://gitlab.com/johndoe",
"avatar_url": "https://secure.gravatar.com/avatar/...",
"website": "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_since": "2024-03-15T10:22:00Z"
}

Output Fields Reference

FieldSourceDescription
usernameGitLab APIGitLab login handle
gitlab_idGitLab APIUnique numeric GitLab user ID
nameGitLab APIDisplay name
companyGitLab APIOrganization field from GitLab profile
locationGitLab APILocation field from GitLab profile
bioGitLab APIProfile bio text
followers / followingGitLab APIFollower and following counts
profile_urlGitLab APILink to the GitLab profile
websiteGitLab APIPersonal website URL as listed on GitLab
emailGitLab APIPublic email if set on the GitLab profile
linkedinGitLab API / scrapeLinkedIn URL from GitLab profile or website
twitterGitLab API / scrapeTwitter / X URL from GitLab profile or website
email_from_websiteWebsite scrapeEmail address found on personal website
phone_from_websiteWebsite scrapePhone number found on personal website
instagramWebsite scrapeInstagram profile URL
youtubeWebsite scrapeYouTube channel URL
redditWebsite scrapeReddit profile URL
facebookWebsite scrapeFacebook profile URL
tiktokWebsite scrapeTikTok profile URL
starred_sinceGitLab 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's GitLab website_url 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. LinkedIn and Twitter found directly in the GitLab profile take priority over values scraped from the website.


Rate Limits and Performance

ConditionGitLab API Rate Limit
No token (unauthenticated)IP-based limits (varies by endpoint)
With Personal Access TokenPer-user limits (higher, varies by endpoint)

With enrich_profiles enabled, each starrer costs 1 API call. A repo with 1,000 stars requires approximately 1,010 requests total (10 paginated starrer pages + 1,000 profile lookups). A GitLab token is recommended for repos with many stars.

The actor automatically waits when a rate limit is hit (HTTP 429) 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 GitLab 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 starrers as they appear
  • GitLab exposes LinkedIn and Twitter directly in user profiles — no website scraping needed for those fields