GitHub Repository Scraper — Search Repos by Topic & Stars avatar

GitHub Repository Scraper — Search Repos by Topic & Stars

Pricing

from $1.50 / 1,000 results

Go to Apify Store
GitHub Repository Scraper — Search Repos by Topic & Stars

GitHub Repository Scraper — Search Repos by Topic & Stars

Search GitHub repositories by topic, programming language, keyword and stars. Export each with description, stars, forks, language, topics, license and homepage — plus the owner's company, location and website. Build repo datasets and developer leads, no token required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

7 days ago

Last modified

Share

GitHub Repository Scraper — Stars, Topics, License & Owner Leads

A fast, no-code GitHub repository scraper that lets you search repositories by topic, programming language, keyword and star count, then export every match with its description, stars, forks, topics, license and homepage — plus the owner's name, company, location, website and public email. Use this GitHub scraper to build a clean repository dataset and a developer lead list in a single run — no login, no coding, no API key to manage. Whether you want to scrape GitHub for the top projects in a niche or turn a topic search into a technographic outreach list, this tool does both.

Export to JSON, CSV, Excel, or API.

Built for market and trend researchers, dev-tool and SaaS marketers, technical recruiters, founders, investors, and partnerships/BD teams who need structured GitHub data at scale.


🔎 Why scrape GitHub?

GitHub is the single largest index of open-source software on the planet — tens of millions of public repositories tagged by topic, language, stars, forks and license. Behind every repository is an owner (a developer or an organization) with a public profile. That combination makes GitHub data uniquely valuable: it is both a map of what technology is being built and a directory of the people and companies building it.

Collecting this by hand is slow and brittle. GitHub's web search paginates 10 or 30 results at a time, the owner details (company, location, website, email) live on a separate profile page, and there is no "Export to Excel" button. Copy-pasting a few hundred repositories and then visiting each owner's profile is hours of tedious work — and it goes stale the moment a project gains stars or an owner updates their bio.

This GitHub scraper automates all of it. Set a few friendly filters, press Start, and get a flat, de-duplicated, spreadsheet-ready dataset where each row is one repository with its owner enriched in-line.

Common reasons people scrape GitHub:

  • 📊 Track the top projects in a topic or language and watch how stars, forks and activity change over time.
  • 🧲 Generate developer leads — turn a topic or keyword search into an outreach list complete with company, location, website and X/Twitter.
  • 🧑‍💻 Source technical talent by finding the maintainers of notable repositories in a stack you hire for.
  • 🚀 Spot rising open-source projects early by sorting active repositories with a star floor.
  • 🤝 Build integration and partnership target lists of projects and companies working in your category.
  • 🔬 Run ecosystem and competitor research — how large is a technology's footprint, who leads it, which licenses dominate.
  • 📈 Feed dashboards and models with fresh repository metrics on a schedule.

✨ What this GitHub scraper does

  • ✅ Flexible search — combine any of keyword, topic, programming language, minimum stars and minimum forks to target exactly the repositories you want. Leave everything empty to pull a sample of the most-starred repositories on GitHub.
  • ✅ Automatic pagination — the actor walks GitHub search page by page and returns hundreds to a full 1,000 de-duplicated repositories per filter set (GitHub's search limit), controlled by the maxItems input.
  • ✅ Rich repository fields — for every repository you get repoFullName, description, repoUrl, homepage, stars, forks, watchers, openIssues, language, topics, license, createdAt, updatedAt, pushedAt and an archived flag.
  • ✅ Owner enrichment (developer leads) — optionally append each owner's ownerName, ownerCompany, ownerLocation, ownerWebsite, ownerEmail, ownerTwitter, ownerFollowers, ownerType and ownerProfileUrl, so a repository list doubles as a lead list.
  • ✅ Ranking — sort by most stars, most forks, or recently updated.
  • ✅ Clean, flat output — one row per repository, empty fields omitted, duplicates removed within each run; drops straight into a spreadsheet or database.
  • ✅ No token required — the GitHub scraper works out of the box. A free personal access token is optional and only speeds up very large jobs.
  • ✅ Fast & reliable — a lightweight HTTP scraper with retry, back-off and datacenter proxy rotation; owner enrichment runs concurrently.
  • ✅ Any export — JSON, CSV, Excel, XML, or straight to Google Sheets, Airtable, a webhook, or the Apify GitHub API.

🎯 Use cases

  • 🛠️ Dev-tool & SaaS marketing — find active projects in your category and the developers behind them, then reach out with company, website and email context.
  • 🧲 Technical recruiting — build a sourcing list of maintainers of popular repositories in Python, Rust, Go or any stack, with location and follower counts to prioritize.
  • 📊 Market & trend research — snapshot the leading projects in machine-learning, fintech, nextjs or any topic and re-run on a schedule to track momentum.
  • 🚀 Investors & founders — surface rising open-source projects and the companies or individuals who own them before they are obvious.
  • 🤝 Partnerships & BD — compile integration targets by finding every notable project in an ecosystem plus its owner's company and website.
  • 🏢 Technographic sales intelligence — map which organizations maintain which open-source projects to enrich your ICP and account lists.
  • 🔬 Open-source ecosystem analysis — measure license distribution, language mix, star/fork concentration and archival rates across a topic.
  • 📈 Data & analytics teams — keep a warehouse table of repository metrics fresh via scheduled runs and the API.

📥 Input

Every field is optional — fill in any combination of filters and press Start. Leave them all empty and the scraper returns a sample of the most-starred repositories on GitHub.

FieldTypeDescription
keywordstringWords to match in a repository's name, description or README — e.g. payment gateway, chatbot, kubernetes operator.
topicstringA GitHub topic tag — e.g. machine-learning, nextjs, fintech.
languagestring (enum)Restrict to repositories whose main language matches (JavaScript, TypeScript, Python, Go, Rust, and more). Empty = any language.
minStarsintegerOnly repositories with at least this many stars. 0 = no minimum.
minForksintegerOnly repositories with at least this many forks. 0 = no minimum.
sortstring (enum)Order results by stars, forks or updated.
enrichOwnersbooleanAdd each owner's name, company, location, website, email and X/Twitter. On by default; turn off for a faster repositories-only list.
maxItemsintegerHow many repositories to collect. GitHub search returns up to 1,000 matches per filter set. 0 = maximum.
githubTokenstring (secret)Optional free personal access token to speed up large jobs. No special scopes needed.
proxyConfigurationobjectProxy settings. Datacenter proxies are enough; Apify Proxy is on by default.

Example input

{
"topic": "machine-learning",
"language": "Python",
"minStars": 500,
"sort": "stars",
"enrichOwners": true,
"maxItems": 200,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

Every repository is one flat, spreadsheet-ready row, including its owner. Only fields that have a value are included, so your export stays clean.

Sample output item

{
"repoFullName": "huggingface/transformers",
"ownerUsername": "huggingface",
"ownerType": "Organization",
"description": "🤗 Transformers: state-of-the-art Machine Learning for PyTorch, TensorFlow and JAX.",
"repoUrl": "https://github.com/huggingface/transformers",
"homepage": "https://huggingface.co/transformers",
"stars": 168131,
"forks": 34976,
"watchers": 168131,
"openIssues": 1005,
"language": "Python",
"topics": "deep-learning, machine-learning, nlp, pytorch, transformers",
"license": "Apache-2.0",
"createdAt": "2018-10-29T13:56:00Z",
"updatedAt": "2026-10-25T12:47:54Z",
"pushedAt": "2026-10-25T10:30:17Z",
"ownerName": "Hugging Face",
"ownerCompany": "Hugging Face",
"ownerLocation": "NYC + Paris",
"ownerWebsite": "https://huggingface.co",
"ownerTwitter": "huggingface",
"ownerFollowers": 60000,
"ownerProfileUrl": "https://github.com/huggingface"
}

Field reference

FieldDescription
repoFullNameowner/repo identifier.
ownerUsernameOwner's GitHub username/login.
ownerTypeUser or Organization.
descriptionRepository description.
repoUrlRepository URL.
homepageThe project's website, when set.
starsStar count.
forksFork count.
watchersWatcher count.
openIssuesOpen issues count.
languageMain programming language.
topicsTopic tags, comma-separated.
licenseSPDX license ID (e.g. MIT, Apache-2.0); omitted when none/unspecified.
createdAt / updatedAt / pushedAtCreation, last-updated and last-push timestamps (ISO 8601).
archivedtrue when the repository is archived (omitted otherwise).
ownerNameOwner's display name. (enrichment)
ownerCompanyOwner's company. (enrichment)
ownerLocationOwner's location. (enrichment)
ownerWebsiteOwner's website/blog. (enrichment)
ownerEmailOwner's public email, when available. (enrichment)
ownerTwitterOwner's X / Twitter handle. (enrichment)
ownerFollowersOwner's follower count. (enrichment)
ownerProfileUrlOwner's GitHub profile URL.

Fields marked (enrichment) appear only when enrichOwners is on and the owner has made that detail public. Public emails in particular are only present when the owner has chosen to expose one — website, company and location are far more common.


🔁 Pagination & scale

GitHub's search API returns results in pages, and it caps any single query at 1,000 matches. This GitHub scraper handles that for you: it requests 100 repositories per page and walks up to 10 pages, stopping as soon as it reaches your maxItems target or the last page of results. You simply set maxItems (or 0 for the maximum) — there is no manual page handling.

Because the 1,000-result ceiling is imposed by GitHub, the way to go wider than 1,000 is to run several narrower searches. Split a broad query by language, by star range (e.g. minStars: 1000 then minStars: 100 with a different sort), or by topic, and combine the exports. Results are de-duplicated by repoFullName within each run, so overlapping filters won't create duplicate rows in a single dataset.

Repository search is fast; most of the wall-clock time in a large job is owner enrichment, which runs with concurrency and retry to stay quick and resilient. Adding an optional GitHub token raises your rate limit and speeds up very large runs.


⚙️ How to use

  1. Open the actor on the Apify Console.
  2. Set your filters — any combination of keyword, topic, language, minStars, minForks, and choose a sort. Leave everything empty for the most-starred repositories.
  3. Choose maxItems (up to 1,000 per filter set) and decide whether to keep enrichOwners on for lead data.
  4. Press Start. Watch progress in the run log and the live status message.
  5. Preview results in the Output tab, then Export to Excel, CSV, JSON or XML.
  6. Automate it — call the actor via the Apify GitHub API, run it on a Schedule, or pipe results into Make, Zapier, n8n, Google Sheets, Airtable or your own app with a webhook.

💡 Tips

  • 🎯 Stack your filters. Combining topic + language + minStars gives the most focused, highest-quality list.
  • 🔁 Go beyond 1,000 by running several targeted searches (per language, per star band, per topic) and merging the exports — dedupe is automatic within each run.
  • 🧑‍💻 Keep enrichOwners on when you want leads; turn it off for a faster, repositories-only metrics pull.
  • ⭐ Sort by updated with a star floor to catch active, rising projects instead of only established giants.
  • 🏷️ Lowercase topics — topic tags are matched in lowercase (the scraper handles this for you), so Machine-Learning and machine-learning behave the same.
  • 🔑 Add a free GitHub token for very large or frequently scheduled jobs to lift the rate limit.

❓ FAQ

Is scraping GitHub legal? This GitHub scraper collects only publicly available information — the same data anyone can see on github.com without logging in — for legitimate research, recruiting and lead generation. You are responsible for complying with applicable laws (such as GDPR and CCPA), GitHub's terms, and anti-spam rules when you contact anyone.

Do I need a GitHub token or to log in? No. The actor runs fully without a token or login. A free personal access token is optional and only raises your rate limit for very large jobs.

How many repositories can I scrape, and how fast? GitHub search returns up to 1,000 matches per filter set, and the scraper paginates through them automatically. A typical few-hundred-repository run completes in well under a minute; large runs are dominated by owner enrichment, which runs concurrently. To collect more than 1,000, run several narrower searches.

Do I need proxies? Datacenter proxies are enough and Apify Proxy is enabled by default — no residential proxies required. Proxy rotation plus retry/back-off keeps collection reliable.

What export formats are supported? JSON, CSV, Excel, and XML, plus direct integrations with Google Sheets, Airtable, webhooks, and the Apify API.

Is there an API? Yes. Every actor on Apify is callable via the GitHub API on the platform — start runs, pass the same input, and fetch the dataset programmatically.

How fresh is the data? It is pulled live from GitHub on every run. Schedule the actor to refresh your repository and lead lists daily, weekly or monthly.

Can I filter by topic, language or stars? Yes — that is exactly what the input is for. Combine topic, language, minStars, minForks and keyword, and sort by stars, forks or recent activity.

Are owner emails always included? No. Emails appear only when an owner has made theirs public. Website, company and location are far more commonly available.

Will I get duplicate repositories? No. Results are de-duplicated by repoFullName within each run.



Ready to build your repository dataset and developer lead list? Set your filters and click Start to run the GitHub Repository Scraper now.