GitHub Email Scraper - Contributors & Developer Lead Finder
Pricing
from $17.00 / 1,000 results
GitHub Email Scraper - Contributors & Developer Lead Finder
GitHub email scraper and developer lead finder for recruiting and sales. Scrape repo contributors, org members or a GitHub user search into rich leads: email (profile + commit-mined), LinkedIn, X, company, location, followers, languages. No token needed. Export CSV, JSON or Excel.
Pricing
from $17.00 / 1,000 results
Rating
5.0
(2)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
GitHub Email Scraper - Contributors & Developer Lead Finder
The most complete GitHub email scraper and developer lead finder on Apify. Turn any GitHub repository, organisation, username list or user search into a clean, contact-rich lead list: public email, LinkedIn, X, company, location, followers and more. Built for developer recruiting, technical sourcing and dev-tool sales.
Here is one real result, with every field the actor returns:
{"login": "sophiebits","name": "Sophie Alpert","company": null,"location": "San Francisco, CA","email": "git@sophiebits.com","emailSource": "commit","blog": "https://sophiebits.com/","twitterUsername": "sophiebits","linkedin": "https://www.linkedin.com/in/sophiebits/","socialAccounts": [{ "provider": "bluesky", "url": "https://bsky.app/profile/sophiebits.com" },{ "provider": "linkedin", "url": "https://www.linkedin.com/in/sophiebits/" },{ "provider": "twitter", "url": "https://twitter.com/sophiebits" }],"bio": "principal engineer. powered by dumplings!","hireable": null,"followers": 10496,"following": 0,"publicRepos": 178,"publicGists": 28,"contributions": 1300,"topLanguages": ["JavaScript", "TypeScript", "Python", "C", "LilyPond"],"topRepos": ["react-dom-mini:601", "es3ify:113", "adventofcode:93"],"pinnedRepos": ["react", "react-dom-mini", "KaTeX", "adventofcode"],"orgs": ["reactjs"],"totalStars": 900,"isBot": false,"accountCreatedAt": "2008-04-11T22:42:39Z","profileUpdatedAt": "2026-08-18T20:57:59Z","sourceRepo": "facebook/react","sourceType": "contributor","githubUrl": "https://github.com/sophiebits","avatarUrl": "https://avatars.githubusercontent.com/u/6820?v=4","source": "GitHub","observedAt": "2026-08-26T04:28:51.110Z"}
This is a GitHub scraper, GitHub email finder and developer lead generation tool in one. It returns every contact field a public GitHub profile exposes (email, LinkedIn, X, Bluesky, Mastodon, blog, company, location), recovers developer emails from public commit history, adds derived signals (top languages, total stars, pinned repos, organisations), and gives you four ways to find developers plus filters to target exactly the people you need. No GitHub token required.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- How we compare
- Use cases
- Quickstart
- Input reference
- Output reference
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
- Related scrapers
What it does
Point this GitHub email scraper at repositories, organisations, a list of usernames, or a GitHub user search, and it returns clean, deduplicated developer-lead rows ready for a CRM, spreadsheet or outreach tool.
It finds developers four ways:
- Repository contributors by
owner/repoor full URL (e.g.facebook/react). - Organisation members for any org (public members).
- Direct usernames you already have.
- GitHub user search by main language, location and minimum followers, or a raw search query.
For every developer it captures the public profile (name, company, location, bio, hireable flag, followers, following, public repos and gists), the best public email it can find, verified social accounts (LinkedIn, X, Bluesky, Mastodon, YouTube, Instagram, npm, personal site), and derived signals (top languages, total stars across owned repos, top repos, pinned repos, and the organisations the developer belongs to). This is the depth that turns a plain GitHub contributors scraper into an outreach-ready developer email list.
Deep email search. Most developers leave the profile email blank, so an email pulled from the profile alone misses the majority of a list. This actor also recovers the address a developer publishes in their own commit history, in every mode: repository contributors, organisation members, usernames you supply, and user search. In testing on well-known maintainers with no profile email at all, it recovered a usable address for every one of them.
Ready for outreach, not just for a spreadsheet. Each row arrives with the fields a sequence actually needs: firstName and lastName split for mail-merge, emailDomain with an isCorporateEmail flag so you can separate work addresses from Gmail, companyClean and companyGithubOrg resolved from the raw company text, an absolute blogUrl plus blogDomain, per-network social URLs as their own columns, and lastActiveAt so you can drop dormant accounts before you send.
Everything comes from public GitHub data. No login, no cookies, no browser automation. Add an optional GitHub token to raise the rate limit for large jobs.
How we compare
We do not compete on price. Several GitHub scrapers on Apify are cheaper per record. We compete on completeness of contact data, number of filters, and valid derived fields, so a single run gives you a usable lead list instead of thin rows you then have to enrich elsewhere. Here is an honest comparison.
| Capability | This actor | louisdeconinck | bovi | automation-lab | scrapesage | fayoussef | contacts-api |
|---|---|---|---|---|---|---|---|
| Find by repo contributors | Yes | Yes | Yes | Yes | Yes | Yes | No |
| Find by org members | Yes | Yes | Yes | No | Yes | Yes | No |
| Find by GitHub user search | Yes | No | Yes | No | Yes | Yes | No |
| Email from public commits | Yes | Yes | Yes | No | Yes | Yes | No |
| Deep email search in every mode (not just repo contributors) | Yes | No | No | No | No | No | No |
Corporate vs free-mailbox flag (isCorporateEmail) | Yes | No | No | No | No | No | No |
| First / last name split for mail-merge | Yes | No | No | No | No | No | No |
Activity recency (lastActiveAt, lastPushedRepo) | Yes | No | No | No | No | No | No |
| Verified LinkedIn / X / Bluesky / Mastodon | Yes | No | X only | No | No | LinkedIn / X only | No |
| Pinned repos | Yes | No | No | No | No | No | No |
| Top languages + total stars | Yes | No | No | No | Yes | Yes | No |
| Public organisations | Yes | No | No | No | No | No | No |
onlyWithEmail / onlyHireable / minFollowers filters | Yes | No | No | No | Partial | Yes | No |
minContributions filter | Yes | No | No | No | No | No | No |
onlyCorporateEmail / activeSince / minTotalStars filters | Yes | No | No | No | No | No | No |
companyContains / locationContains filters | Yes | No | No | No | No | No | No |
Commit date window (since / until) | Yes | No | No | No | No | No | No |
| Exclude bot accounts | Yes | No | No | No | No | No | No |
| Never charges failed or empty runs | Yes | Charges with no email | Charges with no email | Yes | Yes | Charges per profile | Unknown |
| AI lead score + summary (opt-in) | Yes | No | No | No | Lead score only | No | No |
| Approx. price per 1,000 records | ~$17 to $20 | ~$1 | ~$4.75 | ~$0.02 | ~$2.20 | ~$5 | $4.99/mo + usage |
Competitor titles for reference: louisdeconinck github-email-scraper, bovi github-profile-email-enricher, automation-lab github-contributors-scraper, scrapesage github-scraper, fayoussef github-developer-leads, contacts-api github-email-scraper-fast-advanced-and-cheapest.
Why switch to us:
- louisdeconinck/github-email-scraper is the most adopted alternative and cheaper, but it returns only login, name, email, id, avatar and profile URL, has no company, location, social or follower data, no filters, and it currently carries a 1 out of 5 star rating. We return the full profile plus verified socials and derived signals.
- bovi/github-profile-email-enricher bills you per person even when no email is recovered. We only charge for records we return, and we add LinkedIn, Bluesky, Mastodon, pinned repos, top languages and organisations that it does not have.
- automation-lab/github-contributors-scraper is very cheap but has no email mining, no social accounts and no user search. It is a contributor lister, not a lead tool.
- scrapesage/github-scraper is close on breadth and cheaper, but it lacks verified social accounts beyond commit emails, pinned repos, org membership, and the
minContributions,since/untilandexcludeBotscontrols. - fayoussef/github-developer-leads is the closest competitor on breadth (contributors, org members, user search, commit emails, languages) and is cheaper. It bills per profile even when no email is found, and it lacks pinned repos, verified Bluesky/Mastodon/YouTube accounts, public organisations, the
minContributionsandsince/untilcontrols, bot exclusion and the opt-in AI add-ons. If you want the deepest per-developer record and no charge on empty rows, use us; if raw price is the only factor, it is cheaper. - contacts-api/github-email-scraper-fast-advanced-and-cheapest is a keyword-and-location email scraper: it returns page-level rows (keyword, title, URL, email), not structured developer profiles, and has no contributors, social, or profile fields. Different tool for a different job.
If your only requirement is the lowest possible price for logins and avatars, automation-lab or louisdeconinck will cost less. If you want a contact-rich lead list you can email today, this actor returns more valid fields per developer than any of them.
Use cases
- Developer recruiting and technical sourcing. Build shortlists of engineers by language, location and follower count, keep only hireable profiles or profiles with a public email, and export straight to your ATS.
- Developer-tool and API sales leads. Pull the contributors of repositories in your category, qualify them by contributions and top languages, and reach decision-making maintainers directly.
- Open-source community analysis. Map who contributes to a project or organisation, their affiliations, pinned work and total stars, for community reporting and ecosystem research.
- Contributor and maintainer outreach. Recover public commit emails and verified social accounts for a project's top contributors when you need to coordinate, sponsor or hire.
- Developer relations and sponsorship targeting. Rank developers by reach (followers, total stars) and find the channel to contact them (email, LinkedIn, X, Bluesky, personal site).
Quickstart
Contributors of a repository, enriched with repo signals:
{"repos": ["facebook/react"],"maxContributors": 25,"includeRepos": true,"onlyWithEmail": false}
Developer search by language and location:
{"userLanguage": "rust","userLocation": "Berlin","minFollowers": 500,"maxContributors": 50}
Organisation members with emails only:
{"orgs": ["apify"],"onlyWithEmail": true,"maxContributors": 100,"githubToken": "ghp_your_token_for_higher_limits"}
Input reference
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
repos | array | one source required | Repositories as owner/repo or full URLs, and/or org names to scan their top repos | ["facebook/react"] |
usernames | array | one source required | Specific GitHub usernames to enrich | ["gaearon"] |
orgs | array | one source required | Organisation names; enriches public members | ["apify"] |
userSearchQuery | string | one source required | Raw GitHub user-search query | language:go location:London |
userLanguage | string | no | Filter search by main language | rust |
userLocation | string | no | Filter search by profile location | Berlin |
minFollowers | integer | no | Keep only developers with at least this many followers | 500 |
minContributions | integer | no | For contributors, keep those with at least this many contributions | 50 |
maxContributors | integer | no | Max developers to return (default 40, free plans capped at 10) | 25 |
includeEmail | boolean | no | Capture profile and commit-derived email (default true) | true |
includeSocial | boolean | no | Capture verified social accounts (default true) | true |
includeRepos | boolean | no | Add top languages, total stars, top repos, pinned repos (default false) | true |
deepEmailSearch | boolean | no | Recover a work email for developers who hide it on their profile (default true) | true |
onlyWithEmail | boolean | no | Return only developers with a recovered email | false |
onlyHireable | boolean | no | Return only developers with the hireable flag set | false |
onlyCorporateEmail | boolean | no | Keep only company-domain emails, dropping Gmail, Outlook, iCloud and other free mailboxes | false |
excludeOrganizations | boolean | no | Keep only individual developers, dropping organisation accounts | false |
minTotalStars | integer | no | Keep only developers with at least this many stars across their own repos | 100 |
minPublicRepos | integer | no | Keep only developers with at least this many public repositories | 10 |
companyContains | string | no | Keep only developers whose company contains this text | stripe |
locationContains | string | no | Keep only developers whose location contains this text | berlin |
activeSince | string | no | Keep only developers who pushed public code on or after this date | 2026-01-01 |
excludeBots | boolean | no | Skip dependabot and other bot accounts (default true) | true |
since | string | no | Mine commit emails only after this ISO date | 2025-01-01T00:00:00Z |
until | string | no | Mine commit emails only before this ISO date | 2026-01-01T00:00:00Z |
githubToken | string | no | Personal access token for higher rate limits | ghp_... |
withLeadScore | boolean | no | Opt-in AI lead score (paid plans only) | false |
withProfileSummary | boolean | no | Opt-in AI profile summary (paid plans only) | false |
Output reference
| Name | Type | Description |
|---|---|---|
login | string | GitHub username |
name | string | Full name |
email | string | Public email (profile or commit-derived), null if none is public |
emailSource | string | profile or commit |
emailDomain | string | Domain part of the email |
isCorporateEmail | boolean | True when the email is on a company domain rather than a free mailbox |
emailCandidates | array | Every distinct email found for the developer |
firstName | string | First name, split for mail-merge |
lastName | string | Last name, split for mail-merge |
company | string | Company from the profile |
companyClean | string | Company text normalised (leading @ and trailing notes removed) |
companyGithubOrg | string | GitHub organisation handle when the company field is an @handle |
location | string | Location from the profile |
blog | string | Website or blog URL as written on the profile |
blogUrl | string | Personal site normalised to an absolute URL |
blogDomain | string | Hostname of the personal site |
twitterUsername | string | X / Twitter handle |
linkedin | string | LinkedIn URL from verified social accounts |
linkedinUsername | string | LinkedIn handle parsed from that URL |
twitterUrl | string | X / Twitter profile URL |
mastodon | string | Verified Mastodon profile URL |
bluesky | string | Verified Bluesky profile URL |
youtube | string | Verified YouTube channel URL |
instagram | string | Verified Instagram profile URL |
facebook | string | Verified Facebook profile URL |
twitch | string | Verified Twitch channel URL |
reddit | string | Verified Reddit profile URL |
npm | string | Verified npm profile URL |
personalSites | array | Other verified personal or company sites on the profile |
socialAccounts | array | All verified social accounts (provider + url) |
bio | string | Profile bio |
hireable | boolean | Available-for-hire flag |
followers | integer | Follower count |
following | integer | Following count |
publicRepos | integer | Public repository count |
publicGists | integer | Public gist count |
contributions | integer | Contributions to the source repository |
topLanguages | array | Most-used languages across owned repos |
topRepos | array | Top owned repos by stars (name:stars) |
pinnedRepos | array | Pinned repositories from the public profile |
orgs | array | Public organisations the developer belongs to |
totalStars | integer | Total stars across owned repositories |
lastPushedRepo | string | Most recently pushed own repository |
lastPushedAt | string | Timestamp of that push |
lastCommitAt | string | Date of the developer's most recent own commit found |
lastActiveAt | string | Best available public activity timestamp |
userId | integer | Numeric GitHub user id |
nodeId | string | GitHub GraphQL node id |
accountType | string | User or Organization |
siteAdmin | boolean | GitHub staff flag |
accountAgeYears | number | Age of the GitHub account in years |
isBot | boolean | Whether the account is a bot |
accountCreatedAt | string | Account creation date |
profileUpdatedAt | string | Profile last-updated date |
sourceRepo | string | Repository or org the developer was found in |
sourceType | string | contributor, org_member, user_search or username |
githubUrl | string | GitHub profile URL |
avatarUrl | string | Avatar image URL |
aiLeadScore | integer | AI lead score 0 to 100 (opt-in add-on) |
aiLeadTier | string | AI lead tier hot/warm/cold (opt-in add-on) |
aiLeadRationale | string | One-line rationale for the AI lead score (opt-in) |
aiSummary | string | AI-written developer summary (opt-in add-on) |
Run via API and CLI
Start a run with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~github-contributor-contacts-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"repos":["facebook/react"],"maxContributors":25,"includeRepos":true}'
Run with the Apify CLI:
apify call scrapers_lat/github-contributor-contacts-scraper \--input '{"orgs":["apify"],"onlyWithEmail":true,"maxContributors":50}'
Fetch results
Read the dataset items once the run finishes:
$curl "https://api.apify.com/v2/acts/scrapers_lat~github-contributor-contacts-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=json"
Swap format=json for format=csv or format=xlsx to export to CSV or Excel.
Billing and limits
- Pay per result. You are billed per developer record returned via the
resultevent. Optional AI add-ons (ai_lead_score,ai_profile_summary) bill only when they produce output, and only on paid Apify plans. - No charge on failure. Empty runs, errors and no-match runs return an informational row and are not billed.
- Free plan cap. Free Apify accounts are capped at 10 records per run. Upgrade for larger jobs.
- Spend cap respected. Set
maxTotalChargeUsdand the actor stops emitting billable records once the limit is reached. - Rate limits. GitHub's public API allows 60 requests per hour without a token and 5,000 per hour with one. Large repositories and searches run faster and further with a
githubToken. When the token-free budget runs out, the actor delivers the developers it already collected and tells you when the limit resets, instead of stalling or failing the whole run.
FAQ and troubleshooting
Why are some emails null? Many developers keep their email private on GitHub and use a noreply commit address. We return the public profile email when present and mine public commit metadata for a real address, but we never invent one. Use onlyWithEmail to keep only records where an email was recovered.
Do you use the login-only or private data? No. Everything is public GitHub data (public REST API and public profile pages). No login, cookies or private scopes are used.
How do I search developers by location and language? Set userLanguage, userLocation and minFollowers, or pass a raw userSearchQuery. GitHub user search returns up to 1,000 matches per query.
Can I scrape GitHub without an API token? Yes. The actor works with no GitHub token using GitHub's public data. A token is optional and only raises the rate limit from 60 to 5,000 requests per hour for large jobs.
Is this a GitHub email finder or a contributors scraper? Both. It lists repository contributors like a contributors scraper, then enriches each one with a public email, LinkedIn and the full profile like an email finder, so you get a ready-to-use developer email list in a single run.
Can I process many repositories or orgs in one run? Yes. repos, usernames and orgs are lists, and results are deduplicated across all sources.
What is the difference from a plain contributors lister? Beyond the login and contribution count, this actor recovers emails, verified social accounts, top languages, total stars, pinned repos and organisations, so each row is an outreach-ready lead.
Do I need a GitHub token? No, but adding one raises the rate limit from 60 to 5,000 requests per hour, which matters for large repos and searches.
Related scrapers
- LinkedIn, company and people data scrapers for B2B enrichment
- Email finder and contact enrichment actors
- Other developer and package registry scrapers
More scrapers at scrapers.lat
Browse the full catalog of company, contact, finance and developer data scrapers at scrapers.lat.
This is an independent actor and is not affiliated with, endorsed by, or sponsored by GitHub, Inc.
