Lead generation · Developer tools
GitHub Organization Scraper
Pull GitHub organization metadata and its public repo list via the GitHub API — display name, description, location, blog, members count, plus per-repo summary (name, stars, language, last push) — export to JSON or CSV. Free REST API, optional token for higher limits.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
GitHub exposes every org at api.github.com/orgs/{slug} and its public repos at /orgs/{slug}/repos. This Actor takes a list of org slugs (or full github.com/<org> URLs), fans them out concurrently, and writes one row per organisation — with an optional public-repo summary attached.
Need orgs at scale? Provide thousands of slugs; the Actor pages through pagination and handles the rate-limit dance so you don't have to.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block or rate-limit signal.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per request,Retry-Afterheader honoured. - 🧱 Rate-limit-aware pacing — we back off gracefully when GitHub pushes back, so your run completes instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated output, ISO-8601 timestamps, stable IDs; export to JSON, CSV, or Excel straight from Apify Console.
- 💰 Pay-Per-Event pricing — you pay only when a result lands in your dataset. No data, no charge (beyond the tiny actor-start fee).
Use cases
- Lead generation — pull a list of dev-tool companies and surface contact info (email, blog, Twitter/X handle) from their public org profiles.
- M&A / competitive intel — quantify the open-source surface of a target company: repo count, total stars, last-push cadence, verified-org status.
- DevRel benchmarking — compare your org's public-repo activity against competitors; feed the data into your BI tool or Sheets dashboard.
- Recruitment targeting — rank organisations by location, follower count, and activity to prioritise engineering-heavy outreach targets.
- Dependency mapping — combine with the GitHub Repo Scraper to inventory every repo a company maintains.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
orgs | array | yes | List of GitHub organisation slugs (the bit after `github.com/`). URLs are also accepted. |
githubToken | string | no | Lifts rate limit from 60/hour to 5 000/hour. Read-only public access is sufficient. |
includeRepos | boolean | no | Adds up to `maxReposPerOrg` recently-updated repos per org. One extra API call per org. |
maxReposPerOrg | integer | no | Cap on repos returned per org. Hard ceiling 100 per page. |
concurrency | integer | no | Parallel API requests. |
{
"orgs": [
"apify",
"anthropics"
],
"githubToken": "",
"includeRepos": true,
"maxReposPerOrg": 30,
"concurrency": 4,
"proxyConfiguration": {
"useApifyProxy": false
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
loginnamedescriptioncompanybloglocationemailtwitter_usernamepublic_repospublic_gistsfollowershtml_urlavatar_urlmembers_url_templatetypeis_verified
{
"login": "apify",
"name": "Apify",
"description": "Web scraping and automation platform.",
"blog": "https://apify.com",
"location": "Prague, Czechia",
"email": null,
"twitter_username": "apify",
"public_repos": 412,
"followers": 3800,
"html_url": "https://github.com/apify",
"is_verified": true,
"created_at": "2013-01-15T10:22:31Z",
"updated_at": "2026-05-20T08:14:07Z",
"scraped_at": "2026-06-01T12:00:00Z",
"type": "Organization",
"repos": [
{
"name": "apify-sdk-python",
"full_name": "apify/apify-sdk-python",
"stargazers_count": 1100,
"language": "Python",
"pushed_at": "2026-05-30T18:00:00Z"
}
]
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0030 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Member lists are out of scope — the public API exposes member count but not individual member profiles (use the GitHub User Scraper for that).
- Private repos and security advisories are never returned; this is a public-read-only integration.
- Rate limits without a token: 60 requests/hour per IP; 5 000/hour with a personal-access token.
- Nullable fields —
location,email,blog, andcompanyare user-supplied and are frequentlynull. - Org size: very large organisations with 1 000+ repos will hit the
maxReposPerOrgcap — adjust the input or paginate across multiple runs.
FAQ
Which Actor should I use — GitHub Organization Scraper, GitHub User Scraper, or GitHub Repo Scraper?
How is this different from the GitHub REST API?
What's a github org scraper good for in a real workflow?
How do I get github company data reliably at scale?
githubToken to unlock 5 000 requests/hour, set concurrency to 8–10, and cap maxReposPerOrg at 10 if you only need the headline stats. For bulk runs (1 000+ orgs) that approach finishes in under 15 minutes.Can I use this as a github org repo list API alternative?
includeRepos: true and maxReposPerOrg: 100; the repos array on each output row gives you the full public repo list (up to 100) with name, stars, language, and last-push timestamp. Combine the outputs across multiple runs for a richer dataset.Why is `email` empty for most orgs?
Are private members listed?
Can I get GitHub Advanced Security findings?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors