GitHub Contributor Email Scraper avatar

GitHub Contributor Email Scraper

Pricing

from $0.02 / 1,000 contributor email rows

Go to Apify Store
GitHub Contributor Email Scraper

GitHub Contributor Email Scraper

Extract public GitHub contributor commit emails, names, logins, commit URLs, dates, and repository context from repos or organizations.

Pricing

from $0.02 / 1,000 contributor email rows

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Extract public GitHub contributor email rows from repository commit history.

What does GitHub Contributor Email Scraper do?

GitHub Contributor Email Scraper collects public contributor contact and activity records from public GitHub repositories.

It reads public commit metadata and saves normalized rows with repository context, contributor name, public commit email, GitHub login when GitHub maps the commit to a profile, commit URL, commit date, and scrape timestamp.

Use it when you need a clean spreadsheet of public contributor email evidence instead of manually opening commits one by one.

Who is it for?

  • πŸ§‘β€πŸ’» Developer relations teams finding active open-source contributors.
  • 🧲 Technical recruiters discovering engineers working in relevant repositories.
  • 🧾 OSS program managers mapping contributor activity across projects.
  • 🏒 B2B sales teams researching public technology ecosystems.
  • πŸ“Š Vendor intelligence teams tracking public project participation.
  • πŸ§ͺ Researchers analyzing public software collaboration patterns.

Why use it?

  • GitHub-specific inputs for repositories and organizations.
  • Public-only extraction from commit metadata.
  • Optional GitHub token support for higher rate limits.
  • Email deduplication across repositories.
  • Noreply email filtering.
  • Evidence links for every saved row.
  • Ready-to-export dataset tables.

What data can it extract?

FieldDescription
repositoryFull owner/repo repository name.
ownerRepository owner login.
repoRepository name.
commitShaCommit SHA used as evidence.
commitUrlGitHub commit URL.
authorNamePublic commit author name.
authorEmailPublic commit author email.
isNoreplyEmailWhether the email is a GitHub noreply address.
githubLoginGitHub login when GitHub maps the commit to a profile.
profileUrlGitHub profile URL when available.
committedAtCommit author timestamp.
messageSnippetShort commit message snippet.
sourceTypeRepository or organization source mode.
scrapedAtTimestamp when the row was collected.

How much does it cost to scrape GitHub contributor emails?

This actor uses pay-per-event pricing.

  • A small start event is charged once per run.
  • A result event is charged for each saved contributor email row.
  • Short test runs are inexpensive because you can set a low commit limit.
  • Larger organization scans cost more because they inspect more repositories and commits.

Start with one repository and a small maxCommitsPerRepo value to estimate your cost and output quality.

Input options

You can provide one or more of these sources:

  • repositoryUrls β€” GitHub repository URLs such as https://github.com/apify/crawlee.
  • repositories β€” compact owner/repo values such as apify/crawlee.
  • organization β€” a GitHub organization login for scanning public organization repositories.

You can also set:

  • maxCommitsPerRepo
  • since
  • until
  • includeNoreplyEmails
  • dedupeByEmail
  • githubToken

Example input

{
"repositoryUrls": [{ "url": "https://github.com/apify/crawlee" }],
"maxCommitsPerRepo": 100,
"includeNoreplyEmails": false,
"dedupeByEmail": true
}

Repository inputs

Repository URLs and owner/repo strings can be mixed in the same run.

Examples:

  • https://github.com/apify/crawlee
  • https://github.com/apify/apify-sdk-js
  • apify/crawlee
  • apify/apify-sdk-js

Invalid or non-GitHub URLs are ignored during normalization.

Organization input

Set organization to scan public repositories from a GitHub organization.

For example:

{
"organization": "apify",
"maxCommitsPerRepo": 25,
"includeNoreplyEmails": false,
"dedupeByEmail": true
}

Organization scans can produce many rows. Use smaller commit limits for your first run.

Date filters

Use since and until to focus on a time window.

Examples:

  • 2026-01-01
  • 2026-01-01T00:00:00Z
  • 2026-06-30T23:59:59Z

Date filters are useful when you only need recent contributors.

Noreply email filtering

GitHub users can hide their real email and commit with a noreply address.

Set includeNoreplyEmails to:

  • false to focus on non-noreply public commit emails.
  • true to include GitHub noreply addresses too.

The output includes isNoreplyEmail so you can filter exports later.

Dedupe behavior

When dedupeByEmail is enabled, the actor saves only the first row for each email address across all repositories.

Disable it if you want commit-level evidence for repeated appearances of the same contributor email.

GitHub token

A token is optional for public repositories, but recommended for larger runs.

Use a token when:

  • You scan many repositories.
  • You hit GitHub rate limits.
  • You run organization-wide jobs.
  • You need more stable throughput.

A public-repository read token is sufficient.

Output example

{
"repository": "apify/crawlee",
"owner": "apify",
"repo": "crawlee",
"commitSha": "abc123",
"commitUrl": "https://github.com/apify/crawlee/commit/abc123",
"authorName": "Example Developer",
"authorEmail": "dev@example.com",
"isNoreplyEmail": false,
"githubLogin": "exampledev",
"profileUrl": "https://github.com/exampledev",
"committedAt": "2026-01-01T12:00:00Z",
"messageSnippet": "Fix crawler retry handling",
"sourceType": "repository",
"scrapedAt": "2026-07-04T00:00:00Z"
}

How to run

  1. Add one or more repository URLs.
  2. Choose a maximum number of commits per repository.
  3. Decide whether to include noreply emails.
  4. Run the actor.
  5. Export the dataset as CSV, JSON, Excel, or via API.

Tips for best results

  • Start with maxCommitsPerRepo between 25 and 100.
  • Use since for recent contributor discovery.
  • Enable dedupeByEmail for lead lists.
  • Disable dedupe for audit trails.
  • Add a GitHub token for organization scans.
  • Expect some commits to have noreply emails.

Integrations

Use the output dataset in:

  • CRM enrichment workflows.
  • Recruiting spreadsheets.
  • Developer relations lead queues.
  • Open-source ecosystem dashboards.
  • Vendor intelligence reports.
  • Apify webhooks and integrations.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/github-contributor-email-scraper').call({
repositories: ['apify/crawlee'],
maxCommitsPerRepo: 50,
includeNoreplyEmails: false,
dedupeByEmail: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/github-contributor-email-scraper').call(run_input={
'repositories': ['apify/crawlee'],
'maxCommitsPerRepo': 50,
'includeNoreplyEmails': False,
'dedupeByEmail': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~github-contributor-email-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"repositories":["apify/crawlee"],"maxCommitsPerRepo":50}'

MCP usage

Connect this actor to Apify MCP Server when you want an AI assistant to run GitHub contributor research.

MCP URL pattern:

https://mcp.apify.com/?tools=fetch_cat/github-contributor-email-scraper

Claude Code setup:

$claude mcp add apify-github-contributor-email --url "https://mcp.apify.com/?tools=fetch_cat/github-contributor-email-scraper"

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-github-contributor-email": {
"url": "https://mcp.apify.com/?tools=fetch_cat/github-contributor-email-scraper"
}
}
}

Example prompts:

  • β€œFind public contributor emails from apify/crawlee and return deduplicated rows.”
  • β€œScan recent commits from this repository and summarize contributor domains.”
  • β€œRun a small test with noreply emails excluded.”

Data quality notes

The actor returns public commit author emails. It does not infer private emails, bypass privacy settings, or enrich users from unrelated sources.

Some rows may contain GitHub noreply addresses, depending on the input setting and contributor privacy preferences.

GitHub login and profile URL are available when GitHub can map the commit author to a GitHub account.

Legality and ethical use

This actor is intended for public data workflows. Use the results responsibly and comply with applicable privacy, anti-spam, employment, and data protection rules.

Do not use exported emails for unsolicited bulk messaging. Keep a legitimate business purpose and honor opt-out requests where applicable.

FAQ

Is this actor collecting private GitHub emails?

No. It returns public commit author email values available in public GitHub commit metadata.

Can I export results to CSV?

Yes. Use the Apify dataset export menu or API to download CSV, JSON, Excel, and other formats.

Troubleshooting

Why did I get zero rows?

The repository may only contain noreply emails, your date range may be too narrow, or your commit limit may be too low. Try enabling includeNoreplyEmails or increasing maxCommitsPerRepo.

Why did the run hit a GitHub API limit?

Unauthenticated GitHub API requests have lower rate limits. Add githubToken for larger scans.

Why is githubLogin empty?

Not every commit author email is mapped to a GitHub account. The email and commit URL are still saved when public.

You may also use other Apify actors by the same publisher for GitHub and developer workflow data when available:

  • GitHub Profile Scraper
  • GitHub Trending Scraper
  • GitHub Repository Search Scraper

0.1

Initial version with repository URLs, owner/repo inputs, organization support, date filters, noreply filtering, email dedupe, and optional GitHub token support.

Support

If you find a repository that should return public commit emails but does not, open an issue with the input you used and a short description of the expected output.