GitHub Contributors Email Scraper
Pricing
$0.01 / 1,000 contributors
GitHub Contributors Email Scraper
Find contributors in public GitHub repositories or a public organization. Get contribution counts and ranks, public account details including emails when GitHub exposes them, repository context, and optional profile or commit evidence in an Apify dataset.
Pricing
$0.01 / 1,000 contributors
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
👥 See who contributes to public GitHub repositories
Open-source maintainers, engineering teams, and developer relations teams can use this Actor to find contributors in public GitHub repositories or a public GitHub organization. Each row connects a contributor to a repository and includes contribution count and rank, public account details, source links, and repository facts. Optional profile enrichment and public commit evidence add more context for research and review.
Use cases
- Build a contributor list with GitHub Contributors from public repository URLs.
- Compare rows by source with GitHub Contributors By Repository.
- Collect organization results with GitHub Organization Contributors.
- Review the highest-ranked accounts with GitHub Top Contributors.
- Check contribution totals with GitHub Contribution Count.
- Add public profile details with GitHub Contributor Profile.
- Export public commit email evidence with GitHub Contributor Emails.
📊 Ranked GitHub contributor rows
Dataset rows
Each dataset row joins one contributor to the public repository where the contributor was found. It includes contribution count and rank, account type, profile and avatar links, public emails when GitHub reports them, and repository facts such as stars, forks, language, open issues, default branch, and archive state. Profile enrichment and commit evidence add the optional fields described below. Missing public values stay null or empty as the schema shows.
🔍 Build contributor lists from public GitHub sources
How it works
- Choose public repository URLs or one public GitHub organization. Use one source type per run.
- Add contribution and account filters when needed.
- Turn on profile enrichment or commit evidence when you need the related public fields.
- Run the Actor and open the
datasetoutput.
The Actor saves the first eligible occurrence for a submitted repository and ignores later duplicate submissions of the same repository. It does not merge later matches into the saved row. Different repositories can still produce separate rows for the same login because each row keeps its source repository.
⚙️ Input
Choose Public repositories to add repository URLs, or choose A GitHub organization to enter one organization name or URL. Only the selected source is used. The Actor reads public repositories only. Profile filters work when profile enrichment is on. Commit filters and the noreply choice work when commit evidence is on.
Input fields
| Field | Type | What it does |
|---|---|---|
discoveryMethod | Select | Chooses public repository URLs or one public GitHub organization. |
repositories | URL list | Adds public GitHub repository URLs when Public repositories is selected. |
repositories[].url | URL | A public GitHub repository URL. |
organization | String | Adds one public GitHub organization name or URL when the organization option is selected. |
minimumContributions | Integer | Keeps contributors with at least this many contributions in each source repository. Leave empty to include all contributors. |
botAccountFilter | Select | Keeps all accounts, excludes bot accounts, or keeps bot accounts only. |
maxItems | Integer | Stops after this many contributor records. Leave empty to return all available results until the source is exhausted. A limit can make the run incomplete. |
includeProfileEnrichment | Boolean | Requests public profile fields such as name, bio, company, location, website, follower counts, public repository and gist counts, hireability, account dates, organizations, and linked social accounts. |
profileEmailAvailability | Select | Keeps profiles with no public email when selected. Any skips this filter. |
profileHireability | Select | Keeps profiles by their public hireability value. Any skips this filter. |
profileLocations | String list | Adds public location terms for profile filtering. Leave empty to skip this filter. |
profileLocations[] | String | One public location term. |
profileLanguages | String list | Adds public language names for profile filtering. Leave empty to skip this filter. |
profileLanguages[] | String | One public language name. |
minimumFollowers | Integer | Keeps enriched profiles with at least this many followers. Leave empty to skip this filter. |
includeCommitEvidence | Boolean | Requests public commit-author email evidence with commit links, identifiers, author data, timestamps, message context, linked accounts, and provenance. |
commitBranch | String | Uses this branch for commit evidence in every selected repository. Leave empty to use each repository's default branch. |
commitStartDate | UTC date string | Includes commit evidence on or after this UTC calendar date. Leave empty for no start date. |
commitEndDate | UTC date string | Includes commit evidence on or before this UTC calendar date. Leave empty for no end date. |
includeNoreplyAddresses | Boolean | Includes privacy-protecting GitHub noreply addresses when commit evidence is on. Leave off to exclude them. |
The default choices use public repository URLs, include all account types, and leave profile enrichment and commit evidence off.
Example input
This is the public input from a successful current-beta run using the default choices:
{"discoveryMethod": "repositories","repositories": [{"url": "https://github.com/octocat/Hello-World"}],"botAccountFilter": "all","includeProfileEnrichment": false,"profileEmailAvailability": "any","profileHireability": "any","includeCommitEvidence": false,"includeNoreplyAddresses": false}
🧾 Output
The dataset output opens the saved contributor rows. Every row has repository, contributor, and contribution. profile appears when profile enrichment is requested. commitEvidence appears when commit evidence is requested. Both optional groups can appear together when both options are on. Null values and empty arrays mean GitHub did not expose a public value.
Run output
| Field | Type | What it does |
|---|---|---|
dataset | URL | Opens the dataset that contains the saved contributor rows. |
Core contributor row
| Field | Type | What it does |
|---|---|---|
repository | Object | The public GitHub repository where this contributor was found. |
repository.name | String | The repository name. |
repository.url | URL | The public link for reviewing the repository. |
repository.owner | String | The GitHub login of the repository owner. |
repository.description | String or null | The public repository description, or null when GitHub has none. |
repository.language | String or null | The main programming language, or null when it is not reported. |
repository.stars | Integer | The repository star count. |
repository.forks | Integer | The repository fork count. |
repository.openIssues | Integer | The number of open issues reported by GitHub. |
repository.defaultBranch | String or null | The repository default branch, or null when it is not reported. |
repository.isArchived | Boolean | Whether GitHub marks the repository as archived. |
contributor | Object | The public GitHub account associated with this repository contribution. |
contributor.login | String | The contributor's public GitHub login. |
contributor.accountType | String | The account type reported by GitHub: User, Bot, or Organization. |
contributor.profileUrl | URL or null | The public GitHub profile link, or null when it is unavailable. |
contributor.avatarUrl | URL or null | The public avatar link, or null when it is unavailable. |
contributor.emails | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
contribution | Object | The contributor's count and rank within this repository. |
contribution.count | Integer | The number of contributions by this contributor in this repository. |
contribution.rank | Integer | The contributor's rank in this repository's contributor results. |
Example core row
This complete row is from a successful current-beta run:
{"repository": {"name": "runner","url": "https://github.com/actions/runner","owner": "actions","description": "The Runner for GitHub Actions :rocket:","language": "C#","stars": 6224,"forks": 1413,"openIssues": 524,"defaultBranch": "main","isArchived": false},"contributor": {"login": "TingluoHuang","accountType": "User","profileUrl": "https://github.com/TingluoHuang","avatarUrl": "https://avatars.githubusercontent.com/u/1750815?v=4","emails": []},"contribution": {"count": 310,"rank": 1}}
Profile-enriched contributor row
This table repeats the core fields and adds the fields returned when profile enrichment is on.
| Field | Type | What it does |
|---|---|---|
repository | Object | The public GitHub repository where this contributor was found. |
repository.name | String | The repository name. |
repository.url | URL | The public link for reviewing the repository. |
repository.owner | String | The GitHub login of the repository owner. |
repository.description | String or null | The public repository description, or null when GitHub has none. |
repository.language | String or null | The main programming language, or null when it is not reported. |
repository.stars | Integer | The repository star count. |
repository.forks | Integer | The repository fork count. |
repository.openIssues | Integer | The number of open issues reported by GitHub. |
repository.defaultBranch | String or null | The repository default branch, or null when it is not reported. |
repository.isArchived | Boolean | Whether GitHub marks the repository as archived. |
contributor | Object | The public GitHub account associated with this repository contribution. |
contributor.login | String | The contributor's public GitHub login. |
contributor.accountType | String | The account type reported by GitHub: User, Bot, or Organization. |
contributor.profileUrl | URL or null | The public GitHub profile link, or null when it is unavailable. |
contributor.avatarUrl | URL or null | The public avatar link, or null when it is unavailable. |
contributor.emails | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
contribution | Object | The contributor's count and rank within this repository. |
contribution.count | Integer | The number of contributions by this contributor in this repository. |
contribution.rank | Integer | The contributor's rank in this repository's contributor results. |
profile | Object | Optional public profile details requested from GitHub. |
profile.name | String or null | The public name on the contributor profile, or null when it is not set. |
profile.bio | String or null | The public profile bio, or null when it is not set. |
profile.company | String or null | The public company value, or null when it is not set. |
profile.location | String or null | The public profile location, or null when it is not set. |
profile.website | URL or null | The public profile website, or null when it is not set. |
profile.followers | Integer or null | The public follower count, or null when it is unavailable. |
profile.publicRepositories | Integer or null | The public repository count, or null when it is unavailable. |
profile.publicGists | Integer or null | The public gist count, or null when it is unavailable. |
profile.hireable | Boolean or null | The public hireability value, or null when it is not set. |
profile.createdAt | Date-time string or null | When the GitHub account was created, or null when unavailable. |
profile.updatedAt | Date-time string or null | When the GitHub profile was last updated, or null when unavailable. |
profile.organizations | Object array | Public GitHub organizations listed on the profile. |
profile.organizations[].login | String | The organization's public GitHub login. |
profile.organizations[].profileUrl | URL or null | The public organization profile link, or null when unavailable. |
profile.organizations[].avatarUrl | URL or null | The public organization avatar link, or null when unavailable. |
profile.socialAccounts | Object array | Public social accounts linked from the profile. |
profile.socialAccounts[].provider | String | The service that provides the linked account. |
profile.socialAccounts[].displayName | String or null | The public display name for the linked account, or null when unavailable. |
profile.socialAccounts[].url | URL or null | The public link to the linked account, or null when unavailable. |
Example profile-enriched row
This complete row is from a successful current-beta profile-enrichment run:
{"repository": {"name": "Hello-World","url": "https://github.com/octocat/Hello-World","owner": "octocat","description": "My first repository on GitHub!","language": null,"stars": 3790,"forks": 6636,"openIssues": 7067,"defaultBranch": "master","isArchived": false},"contributor": {"login": "Spaceghost","accountType": "User","profileUrl": "https://github.com/Spaceghost","avatarUrl": "https://avatars.githubusercontent.com/u/251370?v=4","emails": []},"contribution": {"count": 1,"rank": 1},"profile": {"name": "Johnneylee Jack Rollins","bio": "👻👻","company": null,"location": "UTC-8","website": "https://recruit.johnneylee.com/","followers": 490,"publicRepositories": 179,"publicGists": 77,"hireable": null,"createdAt": "2010-04-24T09:32:52Z","updatedAt": "2026-09-01T19:49:11Z","organizations": [{"login": "Velocitous","profileUrl": "https://github.com/Velocitous","avatarUrl": "https://avatars.githubusercontent.com/u/2405964?v=4"},{"login": "ArtemisInternet","profileUrl": "https://github.com/ArtemisInternet","avatarUrl": "https://avatars.githubusercontent.com/u/4316246?v=4"},{"login": "signed-form","profileUrl": "https://github.com/signed-form","avatarUrl": "https://avatars.githubusercontent.com/u/36942019?v=4"}],"socialAccounts": []}}
Commit-evidence contributor row
This table repeats the core fields and adds the fields returned when commit evidence is on.
| Field | Type | What it does |
|---|---|---|
repository | Object | The public GitHub repository where this contributor was found. |
repository.name | String | The repository name. |
repository.url | URL | The public link for reviewing the repository. |
repository.owner | String | The GitHub login of the repository owner. |
repository.description | String or null | The public repository description, or null when GitHub has none. |
repository.language | String or null | The main programming language, or null when it is not reported. |
repository.stars | Integer | The repository star count. |
repository.forks | Integer | The repository fork count. |
repository.openIssues | Integer | The number of open issues reported by GitHub. |
repository.defaultBranch | String or null | The repository default branch, or null when it is not reported. |
repository.isArchived | Boolean | Whether GitHub marks the repository as archived. |
contributor | Object | The public GitHub account associated with this repository contribution. |
contributor.login | String | The contributor's public GitHub login. |
contributor.accountType | String | The account type reported by GitHub: User, Bot, or Organization. |
contributor.profileUrl | URL or null | The public GitHub profile link, or null when it is unavailable. |
contributor.avatarUrl | URL or null | The public avatar link, or null when it is unavailable. |
contributor.emails | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
contribution | Object | The contributor's count and rank within this repository. |
contribution.count | Integer | The number of contributions by this contributor in this repository. |
contribution.rank | Integer | The contributor's rank in this repository's contributor results. |
commitEvidence | Object array | Optional public commit evidence for contributor email addresses. |
commitEvidence[] | Object | One public commit evidence entry. |
commitEvidence[].commit | Object | The public commit and its message context. |
commitEvidence[].commit.sha | String | The commit SHA reported by GitHub. |
commitEvidence[].commit.url | URL | The public link for reviewing the commit. |
commitEvidence[].commit.message | String | The commit message reported by GitHub. |
commitEvidence[].commit.authoredAt | Date-time string or null | The time recorded for the commit author, or null when unavailable. |
commitEvidence[].commit.committedAt | Date-time string or null | The time recorded for the commit, or null when unavailable. |
commitEvidence[].author | Object | The author details recorded in the public commit. |
commitEvidence[].author.name | String or null | The name recorded for the commit author, or null when unavailable. |
commitEvidence[].author.email | String | The email address recorded for the commit author. |
commitEvidence[].linkedAccount | Object or null | The public GitHub account linked to the commit author, or null when none is provided. |
commitEvidence[].linkedAccount.login | String or null | The linked account's public login, or null when no login is provided. |
commitEvidence[].linkedAccount.profileUrl | URL or null | The linked account's public profile link, or null when unavailable. |
commitEvidence[].linkedAccount.avatarUrl | URL or null | The linked account's public avatar link, or null when unavailable. |
commitEvidence[].provenance | Object | The public branch context used to find the commit evidence. |
commitEvidence[].provenance.branch | String | The branch used to find the commit evidence. |
Example commit-evidence row
This shortened row keeps the first public commit evidence entry. The "..." string marks additional evidence omitted from the example.
{"repository": {"name": "runner","url": "https://github.com/actions/runner","owner": "actions","description": "The Runner for GitHub Actions :rocket:","language": "C#","stars": 6224,"forks": 1413,"openIssues": 524,"defaultBranch": "main","isArchived": false},"contributor": {"login": "dependabot[bot]","accountType": "Bot","profileUrl": "https://github.com/apps/dependabot","avatarUrl": "https://avatars.githubusercontent.com/in/29110?v=4","emails": ["49699333+dependabot[bot]@users.noreply.github.com"]},"contribution": {"count": 138,"rank": 2},"commitEvidence": [{"commit": {"sha": "fb64b9b20d56951bf30c5b7333a128bc25c2d923","url": "https://github.com/actions/runner/commit/fb64b9b20d56951bf30c5b7333a128bc25c2d923","message": "Bump @typescript-eslint/eslint-plugin from 8.67.0 to 8.68.0 in /src/Misc/expressionFunc/hashFiles (#4661)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","authoredAt": "2026-08-28T06:49:43Z","committedAt": "2026-08-28T06:49:43Z"},"author": {"name": "dependabot[bot]","email": "49699333+dependabot[bot]@users.noreply.github.com"},"linkedAccount": {"login": "dependabot[bot]","profileUrl": "https://github.com/apps/dependabot","avatarUrl": "https://avatars.githubusercontent.com/in/29110?v=4"},"provenance": {"branch": "main"}},"..."]}
💳 Pricing
Pay per saved contributor
This Actor uses pay-per-event pricing. The current configured price is $0.00001 for each contributor saved to the dataset. A run with no saved contributor does not create this contributor event.
🔌 Integrations
Use the dataset in your workflow
Start a run in Apify Console or through the Apify API. Read the dataset output after the run and export the rows in an Apify-supported format.
❓ FAQ
Can I use more than one repository URL?
Yes. Add multiple public repository URLs when Public repositories is selected. Each row keeps the repository where that contributor was found.
Can I use a GitHub organization?
Yes. Choose A GitHub organization and enter one public organization name or URL. The Actor finds that organization's public repositories before collecting contributors.
Why are GitHub contributors not showing in my run?
Check that the repository URL is public and that your contribution, account, profile, or commit filters are not too narrow. Profile filters only apply when profile enrichment is on, and commit filters only apply when commit evidence is on.
What does the contributor rank mean?
It is the contributor's rank in the results for that source repository. The count and rank are kept inside the contribution object.
Does this read private repositories or infer private emails?
No. It reads public GitHub repositories and keeps public email values when GitHub exposes them. It does not infer private contact data or bypass GitHub privacy settings.
What does profile enrichment add?
It adds public profile fields such as name, bio, company, location, website, follower counts, public repository and gist counts, hireability, account dates, organizations, and linked social accounts.
What does commit evidence add?
It adds public commit-author email evidence with commit links, SHAs, messages, author data, timestamps, linked accounts, and the branch used to find the commit.
Why are some fields null or empty?
GitHub does not expose every public value for every account or repository. The Actor keeps unavailable values as null and uses empty arrays when a list has no available values.
How do the profile and commit filters work?
Profile filters work only when profile enrichment is on. Branch, date, and noreply choices work only when commit evidence is on. Values for an inactive group are ignored.
What does leaving maximum contributor records empty do?
It returns all available results until the source is exhausted. Add a number when you want the Actor to stop after a set number of contributor records.
How are duplicate repositories handled?
The first eligible occurrence for a submitted repository is saved. A later submission of the same repository is ignored, and its later match is not merged into the saved row. The same login can still appear for different repositories.
Do I need a GitHub token?
No. This Actor works with public GitHub data without a buyer-supplied GitHub token.
📝 Changelog
v0.0 (02-09-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- GitHub Discussions Scraper. Collect public GitHub discussions to study questions around the repositories you are reviewing.
- GitHub Release. Review release notes and tags for the same public repositories.
- GitHub Security Advisories Scraper. Check public advisories for packages in those repositories.
- GitHub Contributors Scraper. Use it when a basic contributor list is all you need.
- GitHub Contributor Email Scraper. Focus on public commit-author emails and commit evidence.
Made with ❤️ by Maxime Dupré