GitHub Repo Audience Scraper — Forkers, Watchers, Contributors
Pricing
from $1.50 / 1,000 results
GitHub Repo Audience Scraper — Forkers, Watchers, Contributors
Export the developers engaged with any GitHub repository — the people who forked, watch, or contributed to it — enriched with name, company, location, website and X/Twitter. Build high-intent developer lead lists. No token needed for forkers and contributors.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Share
🎯 GitHub Repo Audience Scraper — Forkers, Watchers & Contributors as Developer Leads
Export the developers who forked, watch, or contributed to any repository on GitHub — as an enriched, spreadsheet-ready lead list. This GitHub scraper turns any repo into the audience of real engineers actively building with that technology, each one enriched with name, company, location, website, X/Twitter handle and follower count. No login, no coding — just paste a repo and press start.
Export to JSON, CSV, Excel, or API.
🧑💻 Built for dev-tool and SaaS marketers, technical recruiters, founders, DevRel teams and market researchers who want to reach — or understand — the developers already engaged with a project.
🔎 Why scrape GitHub?
GitHub is where nearly every open-source and professional developer leaves a public trail. When someone forks a repository, they are copying it to build something with it. When they watch it, they have subscribed to its every release and issue. When they contribute, they have committed code to it. These are the highest-intent developer signals that exist — far stronger than a passive star — and they are completely public.
The problem is that this audience is scattered across paginated web pages and rate-limited APIs. A popular library can have tens of thousands of forkers, and GitHub only shows a thin slice at a time. Clicking through fork lists and copying usernames by hand, then visiting each profile to read the person's company, location and website, is slow, error-prone and does not scale. There is no "export" button on GitHub.
This GitHub scraper does that work for you. Point it at any repository — including a direct competitor's — and it collects the full engaged audience, enriches every developer with their public profile, de-duplicates everyone, tags how they engaged, and hands you a clean table you can filter, sort and export in seconds.
Common reasons people scrape GitHub:
- 🍴 Lead generation for developer tools — reach the engineers who forked a competing or complementary project (they are buying, building and evaluating right now).
- 🧲 Technical recruiting — source engineers who already use a specific framework or library, filtered by company and location.
- 🚀 DevRel & community — understand and re-engage the developers around your own project.
- 📊 Market & competitor research — map the active community of any framework, library or SDK.
- 🔗 Enrichment & data — attach company, location, website and X/Twitter to a list of GitHub usernames.
- 🏷️ Audience segmentation — split your outreach by engagement type (forker vs. watcher vs. contributor).
- 🌍 Developer influence mapping — rank an audience by follower count to find the voices worth reaching first.
✨ What this GitHub scraper does
- 🍴 Three audience modes — collect forkers, watchers and contributors of any repo, in any combination. Forkers and contributors work with no token at all; watchers need a free GitHub token.
- 🔁 Automatic pagination — walks every page of forks, watchers and contributors (cursor- and page-based) and returns hundreds to thousands of de-duplicated developers per repo, bounded only by your limits.
- 🧑💻 Profile enrichment — for every developer it captures name, bio, company, location, websiteUrl, email (when public), twitter, followersCount, followingCount, hireable, avatarUrl, profileUrl and type (User or Organization).
- 🏷️ Engagement tagging — each row's
engagementsfield tells you exactly how the person engaged —forker,watcher,contributor, or several at once. People who appear in multiple lists are merged into one row with a combined tag. - 🗂️ Multi-repo targeting — pass many repositories at once (as
owner/repoor full URLs) and mine a whole category in a single run, with an optional per-repo cap to keep results balanced. - 🧹 Automatic de-duplication — every developer appears once per repo; multiple engagements never create duplicate rows.
- ⚡ Fast & reliable — profiles are fetched in efficient batches (GraphQL ~80 users per request on the token path, or 8 concurrent profile fetches on the token-free path), with built-in retries, proxy rotation and graceful rate-limit handling.
- 📤 Clean exports — every developer is one flat row. Empty fields are dropped so your JSON, CSV or Excel export stays tidy. Push to Google Sheets, Airtable, Zapier, Make, n8n or your own app via the Apify API.
Everything above reflects what the Actor actually does — no field or mode is promised that the scraper does not collect.
🎯 Use cases
- 🛠️ Dev-tool & SaaS marketers — export the forkers of a rival library and reach developers already invested in your category.
- 🧲 Technical recruiters — find engineers who use a specific technology, then filter the list by
companyandlocation. - 🚀 Founders & indie hackers — build a warm outreach list from the people engaging with projects adjacent to yours.
- 📣 DevRel & developer marketing — map and re-engage the community around your own repository.
- 📊 Market researchers & analysts — quantify and profile the active audience of any framework, SDK or tool.
- 🤝 Agencies & consultancies — assemble targeted lists of engineers in a niche for clients.
- 🧠 Data & RevOps teams — enrich a raw list of GitHub usernames with company, location, website and social handles.
- 🌍 Open-source maintainers — understand who forks, watches and contributes to your project, and spot your most invested users.
📥 Input
Configure the run from the Apify Console UI or pass the same fields as JSON via the API. The only field you really need is repos.
| Field | Type | Description |
|---|---|---|
repos | array of strings | The repositories whose audience you want. Enter as owner/repo (e.g. facebook/react) or paste a repo URL. Add as many as you like. |
audienceTypes | array (forkers | watchers | contributors) | Which engaged developers to collect. Forkers and contributors need no token; watchers need a GitHub token. Defaults to all three. |
githubToken | string (secret) | Optional. A free personal access token. Unlocks the watchers audience and speeds up large jobs. No special scopes needed; tick user:email to also collect public emails. |
maxItems | integer | Stop after this many developers in total across all repos. Defaults to 100. Set 0 for no limit. |
maxPerRepo | integer | Optional cap per repository — useful when scraping several repos at once. 0 = no per-repo cap. |
enrichProfiles | boolean | On by default. Collects full profile details for every developer. Turn off for a fast, username-only list. |
proxyConfiguration | object | Optional proxy settings. The Actor talks to GitHub directly, so a proxy is usually not needed. |
Example input
{"repos": ["facebook/react"],"audienceTypes": ["forkers", "watchers", "contributors"],"githubToken": "ghp_xxx","maxItems": 200,"maxPerRepo": 0,"enrichProfiles": true}
More examples
Only the developers who forked (highest intent), no token required:
{ "repos": ["vercel/next.js"], "audienceTypes": ["forkers", "contributors"], "maxItems": 500 }
Compare several competitor repos in one run, balanced per repo:
{"repos": ["sveltejs/svelte", "vuejs/core", "https://github.com/solidjs/solid"],"githubToken": "ghp_xxx","maxItems": 900,"maxPerRepo": 300}
📤 Output
Every developer is one flat, spreadsheet-ready row. Only the fields that exist for a given profile are included, so your export stays clean. Here is a representative item from the GitHub data this scraper returns:
{"username": "shadowspawn","name": "John Gee","bio": "Software developer and open-source maintainer","company": "@ExampleCorp","location": "Auckland, New Zealand","websiteUrl": "https://johngee.dev","email": "john@johngee.dev","twitter": "shadowspawn","followersCount": 210,"followingCount": 48,"hireable": true,"avatarUrl": "https://avatars.githubusercontent.com/u/1232215","profileUrl": "https://github.com/shadowspawn","type": "User","repo": "tj/commander.js","engagements": "contributor,watcher"}
Field reference
| Field | Description |
|---|---|
username | The developer's GitHub username. Always present. |
name | Their display name. Present when set on the profile. |
bio | Profile bio. Present when set. |
company | Company / organization — often an @handle. Present when set. |
location | Self-reported location. Present when set. |
websiteUrl | Personal or company website. Present when set. |
email | Public email — present only when the developer made it public and your token has the user:email scope. |
twitter | X / Twitter handle. Present when linked on the profile. |
followersCount | How many followers the developer has — an influence signal. |
followingCount | How many accounts they follow. |
hireable | Whether they flagged themselves open to work (token path). |
avatarUrl | Avatar image URL (token path). |
profileUrl | Link to their GitHub profile. Always present. |
type | User or Organization. |
repo | The repository they engaged with (owner/repo). Always present. |
engagements | How they engaged — forker, watcher, contributor, or a comma-joined combination. Always present. |
Fields marked "present when set / available" are optional and depend on the individual developer's public profile — this is normal for GitHub data, not a gap in the scraper. Use the enrichProfiles toggle to skip enrichment entirely for a fast, username-only list (then only username, profileUrl, type, repo and engagements are populated).
🔁 Pagination & scale
The GitHub scraper paginates every audience source automatically so you get complete lists, not just the first page:
- Forkers — paginated with 100 per page, using GitHub's GraphQL cursor (
forks(first:100, after:…)) on the token path, or the REST page parameter (/forks?per_page=100&page=N) on the token-free path, newest first. - Watchers — paginated with GitHub's GraphQL cursor (
watchers(first:100, after:…)), 100 per page (token required). - Contributors — paginated with the REST page parameter (
/contributors?per_page=100&page=N), 100 per page.
The loop keeps advancing the cursor/page and stops cleanly when GitHub reports no next page or when it reaches your limit. All three sources are then interleaved, de-duplicated into a single audience, and merged so a developer who is both a forker and a watcher appears once with a combined engagements tag.
Scale is controlled entirely by you: maxItems caps the total number of developers across all repos (set 0 for no limit), and maxPerRepo caps how many come from each repo so a large multi-repo run stays balanced. With no caps the Actor will walk through hundreds to thousands of developers per repository. Enrichment then runs in efficient batches — roughly 80 users per GraphQL request on the token path, or 8 concurrent profile fetches on the token-free path — with automatic retries, proxy rotation and 403/429 rate-limit back-off so large jobs finish reliably.
⚙️ How to use
- Open the Actor on the Apify Console.
- In GitHub repositories, type one or more repos as
owner/repoor paste a URL — e.g.facebook/react,https://github.com/vercel/next.js. - Choose which audience types you want. Forkers and contributors need no token; watchers need a free one.
- (Optional) Paste a free GitHub token to add watchers and speed up large jobs.
- Set Max developers (and an optional per-repo cap), then press Start.
- Open the Output tab to preview, then Export → Excel / CSV / JSON, or send the results to Google Sheets, Airtable, Zapier, Make, n8n, a webhook, or your own app via the Apify API.
- (Optional) Add an Apify Schedule to refresh your developer lists daily, weekly or monthly.
💡 Tips
- 🍴 Run forkers-only for the strongest leads — a fork is the clearest "I'm building with this" signal a developer tool can get.
- 🏷️ Watch the
engagementsfield — developers tagged with several engagements are your most invested audience; sort by it. - 🌍 Sort by
followersCountto prioritise the most influential developers in an audience. - 🔢 Use
maxPerRepowhen comparing several big repos so no single project dominates your list. - ⚡ Turn off
enrichProfilesfor a quick username-only pass, then re-run enrichment on just the people you care about. - 🔑 Add a free token (no scopes needed) to unlock watchers; tick
user:emailif you also want public emails.
❓ FAQ
Is scraping GitHub legal? This Actor collects only publicly available profile and repository information for legitimate research, recruiting and lead generation. You are responsible for how you use the data, including compliance with GDPR, CCPA, GitHub's terms and anti-spam rules. Do not use it for unsolicited bulk messaging or any unlawful purpose.
Do I need a GitHub token? No. Forkers and contributors work with no token at all. A free token (no special scopes) additionally unlocks the watchers audience and makes very large jobs faster.
How many developers can I collect, and how fast?
There is no fixed cap — the scraper paginates through the full audience of a repo (hundreds to thousands). You control size with maxItems and maxPerRepo. Enrichment runs in batches of ~80 (token) or 8 concurrent fetches (token-free), so even large lists finish quickly.
Do I need proxies or a login? No login is needed. The Actor talks to the public GitHub API and website, so proxies are optional — Apify Proxy is available in the input if you want IP rotation for very large jobs.
What export formats are supported? JSON, CSV, Excel and XML, plus direct integrations with Google Sheets, Airtable, Zapier, Make, n8n and the Apify API.
Is there a GitHub API behind this? Yes — the Actor uses GitHub's public GraphQL and REST endpoints and wraps them so you get clean, paginated, enriched output without writing any API code yourself.
Will I get duplicate developers?
No. Developers are de-duplicated within each repo, and anyone who is both a forker, watcher and/or contributor is merged into a single row with a combined engagements tag.
Are emails included?
Public emails are collected when you grant the optional user:email scope on your token and the developer has made their email public. Many developers hide their email, so this field is data-dependent.
Can I filter by company or location?
The Actor returns company and location for every developer that has them set, so you can filter and segment the exported list by company and geography in your spreadsheet or CRM.
How fresh is the data? Every run queries GitHub live, so results reflect the current forkers, watchers and contributors at the moment of the run. Schedule the Actor to keep your lists up to date.
🔗 Related scrapers
- GitHub Developer Scraper — Find Devs by Location & Language
- GitHub Repository Scraper — Search Repos by Topic & Stars
- GitHub Followers Scraper — Developer Leads
- npm Package Scraper — Downloads, Maintainers & Metadata
- WordPress Plugin & Theme Scraper — Installs, Downloads, Ratings
- ProductHunt Launches & Makers Scraper
⚖️ Legal & responsible use
This GitHub scraper collects only publicly available data for legitimate research, recruiting and lead generation. Always respect the privacy and preferences of the people in your results, honour opt-outs, and follow applicable laws and platform terms when contacting anyone.
▶️ Ready to build your developer lead list? Paste a repo and run the GitHub Repo Audience Scraper now.