GitHub Repository Search Scraper — Stars, Language, Topics avatar

GitHub Repository Search Scraper — Stars, Language, Topics

Pricing

from $2.56 / 1,000 repository results

Go to Apify Store
GitHub Repository Search Scraper — Stars, Language, Topics

GitHub Repository Search Scraper — Stars, Language, Topics

Search GitHub repositories by keyword, language, topic, stars or owner and export stars, forks, license and activity dates. $3.20 per 1,000 repos.

Pricing

from $2.56 / 1,000 repository results

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

14 days ago

Last modified

Features

Limited permissions

Share

GitHub Repository Search Scraper finds public GitHub repositories by keyword, programming language, topic, owner, star and fork range, license, and creation or push date, and exports each one with stars, forks, open issues, language, topics, license, owner, and activity dates. It is built for developer-tool marketers, open-source analysts, and researchers, and costs $3.20 per 1,000 repositories on the FREE tier ($0.003201 each) plus a $0.006251 start fee per started GB of memory.

What data does the GitHub scraper return?

It returns one flat record per repository, in the same shape for search results and direct lookups.

FieldWhat it contains
repoName, fullName, urlRepository name, owner/name, and GitHub URL
description, homepageRepository description and website link
owner, ownerType, ownerUrlOwner login, User or Organization, and profile URL
stars, forks, openIssuesStar count, fork count, and open issues plus pull requests
watchersSubscriber count for direct URL lookups; in search results GitHub returns the star count here
language, topicsPrimary language and GitHub topic tags
license, licenseNameSPDX key such as mit, and the full license name
isArchived, isForkArchive and fork flags
defaultBranch, sizeKb, hasWiki, hasDiscussionsRepository settings
createdAt, updatedAt, pushedAtCreation, last metadata update, and last push
totalResults, incompleteResultsHow many repositories match the query on GitHub, and whether GitHub cut the search short
scrapedAt, sourceUrlRetrieval time and the API request that produced the record

How do I search GitHub repositories by stars, language, and topic?

Fill in any combination of the search fields. The Actor turns them into one GitHub search query, for example web scraping language:python stars:>=100 fork:false archived:false, and pages through the results 100 at a time.

  • searchQuery: words matched in repository names, descriptions, and READMEs.
  • language, topic (comma-separated; every topic must match), userOrg.
  • minStars, maxStars, minForks, license.
  • createdAfter, pushedAfter as YYYY-MM-DD.
  • excludeForks and excludeArchived, both on by default.
  • sort by stars (default), forks, updated, or best-match, with order desc or asc.

GitHub returns at most 1,000 repositories per search query, so maxResults goes up to 1,000. For wider coverage, split the search, for example by star ranges or creation years.

Can I look up specific repositories by URL?

Yes. Put https://github.com/owner/repo URLs in startRepoUrls. Each is fetched directly and returned in the same record shape. A missing or private repository is skipped with a log warning. If you also fill search fields, the search runs after the URL lookups until maxResults is reached.

When should I use it, and when not?

Use it when you need:

  • the most-starred libraries for a language or topic, for market maps and competitor lists;
  • new repositories gaining stars, using createdAfter with sort: "stars";
  • actively maintained projects, using pushedAfter and excludeArchived;
  • metadata for a known list of repositories, refreshed on a schedule.

Do not use it when you need:

  • commercial software alternatives with likes and platforms: use AlternativeTo Scraper;
  • developer questions about a library: use Stack Overflow Questions Scraper;
  • code search, issues, commits, users, contributor lists, or the GitHub Trending page: the Actor searches repositories only.

How do I run it?

Default input, the most-starred web-scraping repositories:

{
"searchQuery": "web scraping",
"sort": "stars",
"maxResults": 100
}

Popular Python repositories created since 2025:

{
"language": "python",
"createdAfter": "2025-01-01",
"minStars": 500,
"sort": "stars",
"maxResults": 200
}

Direct lookups:

{
"startRepoUrls": ["https://github.com/facebook/react", "https://github.com/vuejs/core"],
"maxResults": 2
}

githubToken is optional. Without it, GitHub allows 10 search requests per minute and the Actor waits about 6 seconds between pages; with a classic token that has no scopes, the wait drops to about 2 seconds.

JavaScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/github-repo-search-stars-language-topics').call({
topic: 'mcp',
minStars: 100,
sort: 'stars',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((repo) => [repo.fullName, repo.stars, repo.language]));

Python (apify-client 3.x)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/github-repo-search-stars-language-topics").call(
run_input={"topic": "mcp", "minStars": 100, "sort": "stars", "maxResults": 100}
)
for repo in client.dataset(run.default_dataset_id).iterate_items():
print(repo["fullName"], repo["stars"], repo["language"])

Use it from an AI assistant

The Actor works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/github-repo-search-stars-language-topics as a server, then ask, for example: "List the 50 most-starred Rust command-line tools on GitHub pushed to in the last six months, with their licenses."

What does the output look like?

Records from the default run on 2026-10-26 (descriptions and topics shortened):

[
{
"repoName": "Scrapling",
"fullName": "D4Vinci/Scrapling",
"description": "A Web Scraping framework that handles everything from a single request to a full-scale crawl…",
"url": "https://github.com/D4Vinci/Scrapling",
"owner": "D4Vinci",
"ownerType": "User",
"ownerUrl": "https://github.com/D4Vinci",
"stars": 89756,
"forks": 9274,
"watchers": 89756,
"openIssues": 20,
"language": "Python",
"topics": ["ai-scraping", "automation", "crawler", "crawling", "data-extraction"],
"license": "bsd-3-clause",
"licenseName": "BSD 3-Clause \"New\" or \"Revised\" License",
"isArchived": false,
"isFork": false,
"homepage": "https://scrapling.readthedocs.io/en/latest/",
"defaultBranch": "main",
"sizeKb": 15699,
"createdAt": "2024-10-13T20:29:53Z",
"updatedAt": "2026-10-26T07:20:48Z",
"pushedAt": "2026-10-22T20:43:49Z",
"hasWiki": true,
"hasDiscussions": true,
"totalResults": 139048,
"incompleteResults": false,
"scrapedAt": "2026-10-26T07:26:20.586Z"
},
{
"repoName": "scrapy",
"fullName": "scrapy/scrapy",
"description": "Scrapy, a fast high-level web crawling & scraping framework for Python.",
"url": "https://github.com/scrapy/scrapy",
"ownerType": "Organization",
"stars": 65030,
"forks": 12049,
"openIssues": 175,
"language": "Python",
"topics": ["crawler", "crawling", "framework", "python"],
"license": "bsd-3-clause",
"createdAt": "2010-02-22T02:01:14Z",
"pushedAt": "2026-10-22T21:57:27Z",
"totalResults": 139048
}
]

How much does it cost to scrape GitHub repositories?

You pay per repository delivered, plus the start fee. Platform usage is included in these prices.

EventFREEBRONZESILVERGOLD, PLATINUM, DIAMOND
Repository result (per repository)$0.003201$0.00312$0.00304$0.00256
Actor start (per started GB of allocated memory)$0.006251$0.006094$0.005938$0.005

The Actor's default memory is 256 MB (it only makes HTTP requests), so a run pays one start event. Worked totals on the FREE tier:

  • Default run, 100 repositories: $0.006251 + 100 × $0.003201 = $0.326.
  • 1,000 repositories: $0.006251 + 1,000 × $0.003201 = $3.207 (GOLD: $2.565).

Each repository is saved before it is charged, and a repository that appears twice in one run (for example as a direct URL and a search hit) is returned and charged once. If you set a maximum total charge, the run stops cleanly before a repository the limit cannot cover.

Limits and reliability

  • Up to 1,000 repositories per run, GitHub's own ceiling for one search query.
  • When GitHub's rate limit is hit, the Actor waits for the reset time (at most 60 seconds per wait) and retries the same page; three other consecutive errors stop the search and keep what was saved.
  • incompleteResults: true means GitHub's search timed out on its side and some matches may be missing.
  • A search with no matches returns an empty dataset; the OUTPUT record and the run's status message say so, and only the start fee is charged. If GitHub refuses or keeps failing the search and nothing was saved, the run ends as failed.
  • An invalid query (for example a malformed date) fails the run with GitHub's validation message.

FAQ

Do I need a GitHub token?

No. The Actor works unauthenticated. A classic token with no scopes speeds up larger runs; it is sent only to GitHub's API and stored encrypted as a secret input, but never use a token with write scopes.

No. It does not read the Trending page. To find new repositories gaining traction, search with createdAfter set to a recent date and sort: "stars".

Why is watchers equal to stars?

GitHub's search response reports the star count in its watchers field. Direct URL lookups return the real subscriber count.

Does it search code, issues, or users?

No. It searches repositories only and returns repository metadata, not file contents.

Can I export the repositories to CSV or Excel?

Yes. Export the run's dataset as JSON, CSV, Excel, XML, or RSS from Apify Console, or read it through the API.

Can I track star growth over time?

Yes. Save a startRepoUrls or search input as a Task, schedule it, and compare stars across runs.

The Actor reads public repository metadata through GitHub's REST API and respects its rate limits. It does not access private repositories or download code. Follow GitHub's terms of service and acceptable-use policies, and each repository's license when you reuse its content.

Last verified: 2026-10-27