GitHub Org / Dev-Tool Company Lead Extractor avatar

GitHub Org / Dev-Tool Company Lead Extractor

Pricing

from $8.00 / 1,000 org lead with contacts

Go to Apify Store
GitHub Org / Dev-Tool Company Lead Extractor

GitHub Org / Dev-Tool Company Lead Extractor

Verified dev-tool / SaaS company leads from GitHub: MX/DNS emails + phones + socials + tech stack scraped from the org's OWN declared website, an A-D lead score, repo traction (stars + recency), an is_verified trust signal, and an org-readiness grade. No API keys, no proxy. Per-result pricing.

Pricing

from $8.00 / 1,000 org lead with contacts

Rating

0.0

(0)

Developer

Virtual Footprint LLC

Virtual Footprint LLC

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Turn GitHub into verified dev-tool / SaaS-company sales leads — MX/DNS-validated contact emails, phones, social profiles, tech stack and an A–D lead score, all scraped from the organization's OWN declared website (/orgs/{login} blog field), plus the org's repo traction (total stars / newest push / top repos), an is_verified trust badge, an org-readiness grade, and an "actively maintained within the window" signal.

Per-result pricing. You're charged only when an org returns a real contact signal — not for empty lookups. No API keys, no proxy required (GitHub's REST API is a public keyless endpoint). Supply your own optional GitHub token to lift the keyless rate limit from 60 req/hr to 5,000/hr for larger batches.

Why this exists

GitHub is the largest dev-tool / SaaS company directory on the planet — every dev-tool company has a GitHub organization namespace. Existing GitHub Apify actors are raw profile/email scrapers — they dump usernames or commit metadata and stop there. None produce verified B2B sales leads. This actor is the only one that turns GitHub Organization owners into ready-to-pitch company leads: it discovers repos by topic/language/star qualifiers, rolls them up to Organization-typed owners, walks to the org's own declared blog company website, and verifies a real business contact there (MX/DNS-checked email, phone, socials, tech stack) — the data a B2B sales team actually buys.

Incumbents (raw scrapers, none verified-contact lead-gen): louisdeconinck/github-email-scraper (5,587 totalRuns, no rating), kawsar/github-profile-scraper (1,139 runs), viralanalyzer/github-trending-scraper (376 runs).

What it does

For each GitHub Organization:

  1. Discovers repos via GitHub's keyless /search/repositories?q=... (topic/language/star/pushed qualifiers) and/or resolves explicit org-logins/URLs. The search response carries owner.type directly, so the Organization gate needs no extra call.
  2. Keeps only Organization-typed owners — User/personal-account owners are dropped (the ToS-clean gate identical to the Show-HN / HuggingFace individual-author skip). GitHub user/org emails are never mined.
  3. Resolves the org via /orgs/{login}, which returns the org's OWN declared blog company website (e.g. vercel → vercel.com, puppeteer → pptr.dev) + is_verified trust signal + followers/public_repos/created_at + company/location/twitter_username.
  4. Filters honestly: orgs without a declared blog are dropped (no company website to enrich → not billed) — the data-driven equivalent of Docker Hub's bare-official-image drop. Verified-only is optional.
  5. Enriches the org's own website with the shared enrichment layer — MX/DNS-verified emails, NANP phones, socials, tech stack, A–D lead score. The /orgs email public-profile address is deliberately not surfaced — contact always comes from the org's own declared site (ToS-clean, identical to the App-Store sellerUrl / Steam website / Docker Hub profile_url / JetBrains vendor.url pattern).
  6. Rolls up all of an org's discovered repos into one lead (total stars, newest push, top repos) and emits an org-readiness grade (verified badge + traction + catalog + followers + reachability + maintenance recency → A–D) + a newlyActive flag.

Input

FieldTypeDefaultDescription
searchQueriesarray["topic:developer-tools+stars:>500"]GitHub search qualifiers passed to /search/repositories (e.g. "topic:developer-tools+stars:>500", "language:rust+stars:>1000", "topic:llm stars:>200").
orgsarray[]Explicit GitHub org logins (e.g. vercel) or github.com/{org} URLs.
maxPerQueryint25Cap on repos per search query (1–100). Keyless core limit = 60 req/hr → keep totals modest; supply a token for 5,000/hr.
organizationsOnlybooltrueKeep only Organization-typed owners (User owners dropped — ToS-clean gate).
blogOnlybooltrueKeep only orgs that declared their own blog website (the clean hop). Orgs without one are dropped, not billed.
verifiedOrgsOnlyboolfalseKeep only is_verified orgs.
activeWithinDaysint0Flag orgs whose newest repo pushed_at is within the trailing N days as newlyActive (0 = off). pushed_at is the newest repo activity, so this is an actively maintained within the window signal, not a created within the window claim.
verifyEmailsbooltrueMX/DNS-validate the best contact email's domain.
githubTokenstring""Your own optional GitHub PAT (public-read). Empty = keyless (60 req/hr); your token lifts to 5,000/hr. This is YOUR token, entered by you — never stored by us.
concurrencyint3Parallel orgs/repos (1–8). Lower if you hit rate limits.
proxyConfigurationobject{}Optional — only if you hit IP rate limits.

Provide either searchQueries or orgs (or both).

Output (per org lead)

{
"orgLogin": "TheAlgorithms",
"orgName": "The Algorithms",
"orgBlog": "https://the-algorithms.com/",
"isVerified": true,
"company": null,
"location": "India",
"twitterUsername": "the_algorithms",
"followers": 63118,
"publicRepos": 44,
"orgCreatedAt": "2016-07-16T08:17:02Z",
"orgHtmlUrl": "https://github.com/TheAlgorithms",
"repoCount": 1,
"totalStars": 222867,
"newestPush": "2026-07-11T00:39:35+00:00",
"topRepos": [{"name": "TheAlgorithms/Python", "stars": 222867, "pushedAt": "2026-07-11T00:39:35Z", "language": "Python", "description": "All Algorithms implemented in Python", "repoUrl": "https://github.com/TheAlgorithms/Python"}],
"newlyActive": true,
"emails": ["hello@the-algorithms.com"],
"emailVerified": true,
"phones": [],
"socials": {"twitter": "https://twitter.com/the_algorithms", "linkedin": "https://www.linkedin.com/company/thealgorithms"},
"techStack": ["Cloudflare", "Nginx"],
"orgReadiness": "A",
"orgLabel": "Prime target — verified org, strong repo traction, broad catalog, reachable contact.",
"leadScore": "A",
"hasContact": true
}

When an org's own website yields no email, the record still returns honestly — billed as an org_lead if it exposes a phone or social, or hasContact: false (not billed at all) if it exposes nothing.

Real run sample

Verified live on Apify (2026-07-19). The three records below are copied verbatim from the actual run datasets across three distinct inputs — not fabricated or rounded:

  • {"searchQueries":["topic:developer-tools+stars:>500"],"maxPerQuery":10} → 7 orgs incl. ComposioHQ (verified, 3 real socials, no email — billed as org_lead only) and rtk-ai (MX-verified contact@rtk-ai.app off its own site, socials: {} honestly empty — billed org_lead + verified_email).
  • {"orgs":["vercel","puppeteer","pulumi"]} → 3 orgs incl. pulumi (verified, MX-verified sales@pulumi.com + team@pulumi.com).
  • {"searchQueries":["language:python+stars:>10000"],"verifiedOrgsOnly":true,"activeWithinDays":90,"maxPerQuery":8} → 2 verified orgs, both newlyActive: true, incl. TheAlgorithms (MX-verified hello@the-algorithms.com, readiness A, 222,867 stars) and Significant-Gravitas (AutoGPT / agpt.co, 185,599 stars, newestPush today).
[
{
"orgLogin": "TheAlgorithms",
"orgName": "The Algorithms",
"orgBlog": "https://the-algorithms.com/",
"isVerified": true,
"location": "India",
"followers": 63118,
"publicRepos": 44,
"repoCount": 1,
"totalStars": 222867,
"newestPush": "2026-07-11T00:39:35+00:00",
"topRepos": [{"name": "TheAlgorithms/Python", "stars": 222867, "pushedAt": "2026-07-11T00:39:35Z", "language": "Python", "repoUrl": "https://github.com/TheAlgorithms/Python"}],
"newlyActive": true,
"emails": ["hello@the-algorithms.com"],
"emailVerified": true,
"socials": {"twitter": "https://twitter.com/the_algorithms", "linkedin": "https://www.linkedin.com/company/thealgorithms"},
"techStack": ["Cloudflare", "Nginx"],
"orgReadiness": "A",
"leadScore": "A",
"hasContact": true
},
{
"orgLogin": "ComposioHQ",
"orgName": "Composio",
"orgBlog": "https://composio.dev",
"isVerified": true,
"location": "United States of America",
"followers": 2125,
"publicRepos": 16,
"repoCount": 1,
"totalStars": 68056,
"newestPush": "2026-05-22T03:17:49+00:00",
"topRepos": [{"name": "ComposioHQ/awesome-claude-skills", "stars": 68056, "pushedAt": "2026-05-22T03:17:49Z", "language": "Python", "repoUrl": "https://github.com/ComposioHQ/awesome-claude-skills"}],
"newlyActive": false,
"emails": [],
"emailVerified": false,
"socials": {"twitter": "https://x.com/composio", "linkedin": "https://www.linkedin.com/company/composiohq/", "youtube": "https://www.youtube.com/@Composio"},
"techStack": ["Cloudflare", "Google Analytics", "Google Tag Manager", "HubSpot", "Mailchimp", "React"],
"orgReadiness": "B",
"leadScore": "C",
"hasContact": true
},
{
"orgLogin": "rtk-ai",
"orgName": "rtk-ai",
"orgBlog": "https://www.rtk-ai.app",
"isVerified": false,
"location": "France",
"followers": 657,
"publicRepos": 7,
"repoCount": 1,
"totalStars": 71740,
"newestPush": "2026-07-18T23:09:36+00:00",
"topRepos": [{"name": "rtk-ai/rtk", "stars": 71740, "pushedAt": "2026-07-18T23:09:36Z", "language": "Rust", "description": "CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies", "repoUrl": "https://github.com/rtk-ai/rtk"}],
"newlyActive": false,
"emails": ["contact@rtk-ai.app"],
"emailVerified": true,
"socials": {},
"techStack": ["Google Analytics", "Google Tag Manager"],
"orgReadiness": "C",
"leadScore": "B",
"hasContact": true
}
]

The three records illustrate the full range: a verified-email A-grade lead (TheAlgorithms — MX-validated hello@the-algorithms.com off its own site, 222K stars, newlyActive), a verified-org socials-only lead (ComposioHQ — GitHub is_verified, three real company socials, no email exposed so billed org_lead only, not verified_email), and a verified-email lead with no socials (rtk-ai — contact@rtk-ai.app MX-validated, socials: {} honestly empty rather than a junk share-widget URL). Web-form placeholders such as you@company.com (seen on rtk-ai's site pre-cleaning) are dropped — never billed.

Cost

Pay-per-event, charged only on a successful result:

EventPriceWhen
org_lead (primary)$0.008per org returning at least one real contact signal + their repo traction
verified_email$0.003per org yielding an MX/DNS-validated email from its own site
org_signal$0.001per org whose newest repo push is within the chosen window
apify-actor-start$0.0001one-time run start

Zero upstream compose cost (self-contained: keyless GitHub search/orgs APIs + the org's own public site). Primary event priced well above per-run compute — positive unit margin from day one.

Performance & limits

  • Pure keyless JSON (one /search/repositories per query + one /orgs/{login} per org, then one site fetch per org). No anti-bot, no proxy, no API key by default.
  • Honest keyless cap: GitHub's core rate limit is 60 req/hr unauthenticated (search has its own 10/min limit) → batch ≤~50 orgs/run wall-clock with throttling. Supply your own githubToken to lift the core limit to 5,000/hr for larger batches.
  • The actor retries 429/403-rate-limit responses with backoff, and silently drops orgs it cannot fetch (not billed).
  • A maxPerQuery=25 run typically resolves 25 repos → ~10–20 distinct Organization-typed owners after the User/owner gate → 5–15 sellable orgs after the blog-only filter, in well under a minute plus per-org site enrichment.

Troubleshooting

  • No results / "no Organization-typed owners" — the qualifiers resolved only to User/personal-account owners. Use org-level qualifiers (topic:, language: + stars:>) or pass explicit org logins via orgs.
  • "Org not found / not an org" — an explicit login resolved to a User (404 on /orgs); skipped, not billed. Personal-account owners are deliberately not sold.
  • Fewer orgs than repos — expected: repos roll up one-per-org (keyed by owner login), and User + no-blog orgs are dropped.
  • Rate-limited (empty search results) — the keyless 60/hr core limit was hit mid-run. Lower concurrency, reduce the batch, or supply your own githubToken.
  • newlyActive not set — the org's newest repo push is older than activeWithinDays; widen the window or leave it 0.
  • An org you expected has no contact — its blog site exposed no email/phone/social, so hasContact: false and it is not billed at all.

Data sourcing & ToS

Discovery uses GitHub's public keyless /search/repositories + /orgs/{login} REST endpoints. Contact data is scraped only from the organization's OWN declared blog company website — the /orgs email public-profile address and GitHub user/commit/author emails are never mined for outreach (GitHub ToS §H). No login, no API key (optional user token only lifts rate limits), no residential proxy.