GitHub Email Scraper & Tech Stack Extractor (Patch & MX)
Pricing
$4.50 / 1,000 results
GitHub Email Scraper & Tech Stack Extractor (Patch & MX)
GitHub Email Scraper & Lead Generation Actor. Extract verified developer emails (.patch commits, DCO Sign-off, Events API) & tech stacks from repo contributors, stargazers, or usernames. Built-in DNS MX deliverability check (<2% bounce). 100% HTTP, 256MB RAM.
Pricing
$4.50 / 1,000 results
Rating
0.0
(0)
Developer
Xavier Richard
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
GitHub Developer Email & Tech Stack Extractor (Commit Patch & MX Verified)
GitHub Email Scraper & Developer Lead Generation Actor — Extract verified developer emails, full profiles, and inferred tech stacks from GitHub repository contributors, GitHub stargazers, or direct username lists.
Unlike basic GitHub profile scrapers that fail when a developer hides their public profile email, this Actor inspects public Git commit headers (.patch), DCO sign-off trailers (Signed-off-by:), GitHub Events API (PushEvent), and Profile README.md repositories, then validates every extracted email through a native DNS MX deliverability engine (node:dns/promises) to guarantee a < 2% bounce rate.
Why Use This GitHub Email Extractor? (Value Proposition)
- Bypasses Hidden Profile Emails Legitimately: Over 80% of developers hide their email on their main GitHub profile page, yet expose their real corporate or personal email inside Git commit metadata (
.patchheaders andSigned-off-bytrailers). - Competitor Stargazer & Contributor Poaching (
stargazers&contributors): Target any open-source repository (e.g.,langchain-ai/langchain,rust-lang/rust,vercel/next.js) to extract developers actively using or contributing to a specific technology or competitor DevTool. - Built-In DNS MX Verification (< 2% Bounce Rate): Every extracted email is checked against live DNS
MXrecords (resolveMx), rejecting dead domains, RFC 7505 Null MX records, 250+ disposable email providers (tempmail,guerrillamail,mailinator,yopmail), and GitHub privacy masks (@users.noreply.github.com). - MX Provider Fingerprinting: Automatically identifies whether the developer uses Google Workspace, Microsoft 365, Proton Mail, OVHcloud, Zoho Mail, Fastmail, Cloudflare Email Routing, or a custom corporate mail server.
- Anti-False-Positive PR Merge Filter: Intelligently cross-references commit author metadata against the target developer's identity so a maintainer merging an external contributor's Pull Request is never assigned the wrong email.
- Ultra-Low Compute Cost (100% HTTP, 256 MB RAM): Powered by
got-scrapingwithout headless browsers (no Playwright/Puppeteer). Costs less than $0.001 per 100 profiles in Apify platform compute.
Top Use Cases (Tech Recruiting, DevTools GTM & OSINT)
- Technical Recruiting & Executive Sourcing: Find senior Rust, AI/LLM, Go, TypeScript, or Kubernetes engineers contributing to top open-source projects, filtered by location (
locationFilter: "France","Germany","United States","Remote"). - DevTools & B2B SaaS Growth (Stargazer Lead Gen): Extract developers who recently starred your repository or a competitor's repository (
targetMode: "stargazers") and enrich them with verified work emails and company names. - AI Agent & Clay / n8n / Make Workflows: Connect directly as an MCP tool, Clay enrichment column, or n8n HTTP/Apify node to turn a list of GitHub URLs (
targetMode: "direct_users") into MX-verified emails and tech stacks.
4-Stage Extraction & Qualification Pipeline
- Stage 1 — Target Profile Collection:
- Contributors Mode (
contributors):GET https://api.github.com/repos/{owner}/{repo}/contributors - Stargazers Mode (
stargazers):GET https://api.github.com/repos/{owner}/{repo}/stargazers(withAccept: application/vnd.github.v3.star+jsonto capturestarred_attimestamps) - Direct Users Mode (
direct_users): Accepts raw GitHub usernames (torvalds) or profile URLs (https://github.com/torvalds). Automatically excludes[bot]accounts (dependabot,renovate,github-actions).
- Contributors Mode (
- Stage 2 — Multi-Vector Commit & Patch Email Extraction:
- Step 2A (GitHub Public Events API): Scans
GET https://api.github.com/users/{username}/events/publicforPushEventpayloads (payload.commits[*].author.email). - Step 2B (Commit
.patch& DCO Fallback): Fetches raw Git commit patches (GET https://github.com/{owner}/{repo}/commit/{sha}.patch) on the source repository and the developer's most recently pushed repositories. Extracts emails via/^From: .* <(.*@.*)>$/mas well asSigned-off-by:andCo-authored-by:trailers. - Step 2C (Zero-API-Quota Profile README Fallback): If all commits use
noreply, inspectshttps://raw.githubusercontent.com/{username}/{username}/HEAD/README.md(costs 0 GitHub REST API quota).
- Step 2A (GitHub Public Events API): Scans
- Stage 3 — Strict Filtering & Lead Prioritization:
- Strips
*@users.noreply.github.com,*@noreply.github.com, placeholder emails (test@test.com,user@localhost,example@domain.com), local hostnames, and 250+ disposable domains. - Prioritizes custom corporate domains (
john.doe@company.com) over consumer webmail (gmail.com) and flags shared role accounts (info@,security@,support@) as"risky".
- Strips
- Stage 4 — Native DNS MX Deliverability Verification:
- Executes
dns.resolveMx(domain)with in-memory domain caching, timeout protection, andmxProviderdeduction.
- Executes
Input Parameters (input_schema.json)
| Parameter | Type | Default | Description |
|---|---|---|---|
targets | string[] | ["langchain-ai/langchain", "rust-lang/rust"] | List of GitHub repositories (owner/repo or full GitHub URLs) or developer usernames/profile URLs. |
targetMode | string | "contributors" | "contributors", "stargazers", or "direct_users". |
maxUsersPerTarget | integer | 50 | Maximum number of developers to analyze per target repository (1 – 1000). |
githubTokens | string[] | [] | Optional pool of GitHub Personal Access Tokens (ghp_... / github_pat_...) to scale from 60 req/h to 5,000 req/h per token with automatic rotation and ETag (304 Not Modified) caching. |
onlyWithEmail | boolean | true | Only output profiles in the Dataset when a real, non-noreply, MX-verified email address is found. |
locationFilter | string | "" | Optional geographic filter (e.g. "France", "Germany", "London", "Remote"). Includes smart country-to-city matching ("France" matches "Paris", "Lyon", "Nantes", etc.). |
maxConcurrency | integer | 5 | Number of developer profiles processed in parallel (1 – 20). |
Input Example
{"targets": ["langchain-ai/langchain", "rust-lang/rust"],"targetMode": "contributors","maxUsersPerTarget": 50,"githubTokens": [],"onlyWithEmail": true,"locationFilter": "France","maxConcurrency": 5}
Output Dataset Example
Each item in the Apify Dataset is normalized with the following JSON schema:
{"username": "johndoe","fullName": "John Doe","email": "john.doe@company.com","deliverability": "valid","mxProvider": "Google Workspace","company": "Acme Corp","location": "Paris, France","bio": "Building scalable Rust backends and AI agents.","blog": "https://johndoe.dev","twitter": "johndoe_dev","publicReposCount": 42,"followersCount": 180,"techStack": ["Rust", "Python", "LangChain", "AI / LLM"],"sourceRepo": "rust-lang/rust","sourceRole": "contributor","commitProofUrl": "https://github.com/rust-lang/rust/commit/a1b2c3d4e5.patch","scrapedAt": "2026-10-20T01:00:00.000Z"}
In addition, the Actor writes a comprehensive RUN_SUMMARY record into the default Key-Value Store containing extraction telemetry, MX provider distribution, tech stack frequency, and rate-limit statistics.
Frequently Asked Questions (FAQ)
Do I need a GitHub Personal Access Token (githubTokens)?
For small runs (up to ~15–20 developers), the Actor works without any token using unauthenticated GitHub requests (60 REST API req/h + unlimited .patch requests). For larger runs (50 to 1,000 developers per target), adding one free GitHub PAT (ghp_... with no special permissions required) unlocks 5,000 requests/hour per token.
How does .patch email extraction work?
Every public commit on GitHub can be viewed in raw Git patch format by appending .patch to the commit URL (https://github.com/{owner}/{repo}/commit/{sha}.patch). This header contains the author's From: Name <email@domain.com> and optional Signed-off-by: lines configured in their local .gitconfig.
Can I use this Actor with Clay, n8n, Make, or MCP AI Agents?
Yes. Set targetMode: "direct_users" and pass a list of GitHub usernames or profile URLs in targets to enrich existing candidate or prospect tables in Clay, n8n, or Make, or pass competitor repositories with targetMode: "stargazers" to automate weekly GTM lead generation.