GitHub Repo Search API - Stars, Language, Date, Official API
Pricing
$10.00 / 1,000 repository returneds
GitHub Repo Search API - Stars, Language, Date, Official API
Searches GitHub repositories through the official API and returns flat rows with stars, forks, license, topics and freshness. Adds stars-per-year and days-since-last-push, tells you plainly about GitHub's 1,000-result cap, and waits out rate limits instead of stopping half way.
Pricing
$10.00 / 1,000 repository returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Search GitHub repositories through the official REST API and get flat, analysis-ready rows: stars, forks, language, license, topics, and how alive the project actually is.
The thing every GitHub scraper runs into
GitHub's search API will never return more than 1,000 results, no matter how many matches exist. Ask for page 11 and it answers HTTP 422. A search that reports 7,670 matches still gives you 1,000 of them.
Measured on 2026-08-25: language:javascript stars:>1000 → 7,670 matches, 1,000 retrievable.
Most scrapers either stop with a partial result and say nothing, or fail outright. This one says so in the log, in plain words, and tells you how to work around it — split the query by date, e.g. created:2024-01-01..2024-06-30, and run it again.
The same goes for rate limits. GitHub allows 10 searches per minute anonymously, 30 with a token. When you hit that ceiling, this Actor waits for the reset and carries on, rather than handing you half a dataset.
Three columns the raw API does not give you
| Column | Why it matters |
|---|---|
daysSinceLastPush | 0 means it was touched today; 900 means it is abandoned. No date arithmetic on your side |
starsPerYear | 40,000 stars over ten years is not the same story as 40,000 over one. Brand-new repos are floored at one month so they cannot fake a huge rate |
ageDays | How long the project has existed |
A column deliberately left out
watchers. GitHub's search API does not return real watcher counts — the watchers_count field is a historical alias that equals the star count. Measured: a repo with 44,408 stars reports 44,408 "watchers". Publishing that as a watcher number would be handing you a fabricated statistic, so it is not in the output at all.
What you get
{"fullName": "facebook/react","owner": "facebook","ownerType": "Organization","url": "https://github.com/facebook/react","description": "The library for web and native user interfaces.","homepage": "https://react.dev","language": "JavaScript","stars": 247689,"forks": 51000,"openIssues": 980,"license": "MIT","licenseName": "MIT License","topics": ["javascript", "react", "frontend", "ui"],"isFork": false,"isArchived": false,"createdAt": "2013-05-24T16:15:54Z","pushedAt": "2026-08-25T00:00:00Z","daysSinceLastPush": 0,"ageDays": 4841,"starsPerYear": 18691.8,"sizeKb": 1024000,"defaultBranch": "main","source": "GitHub REST API (official)"}
Input
{"query": "language:python stars:>500 pushed:>2026-01-01","sort": "stars","maxResults": 500,"excludeArchived": true}
| Field | Default | Meaning |
|---|---|---|
query | language:javascript stars:>1000 | Any GitHub search query, exactly as on github.com |
sort | stars | stars, forks, updated, help-wanted-issues, best-match |
order | desc | Biggest first, or smallest first |
maxResults | 100 | Up to 1,000 — GitHub's own hard limit |
minStars | 0 | Extra filter applied after fetching |
excludeForks / excludeArchived | false | Drop forks / archived projects |
githubToken | empty | Optional. Raises the limit from 10 to 30 searches per minute. No scopes needed for public repositories |
waitForRateLimit | true | Wait out the limit instead of returning a partial result |
Typical uses
- Finding maintained alternatives to a library (
daysSinceLastPushsorts the living from the dead) - Competitive and ecosystem research
- Building lists of projects by language, topic or licence
- Tracking which tools are actually gaining traction (
starsPerYear, not lifetime stars) - Due diligence on dependencies: licence, archived status, issue backlog
FAQ
Do I need a token? No. Without one you get 10 searches per minute, which is enough for a few hundred results. With one, 30 per minute.
Is a token safe to paste here? The field is marked secret, and public repository search needs no scopes at all — create a token with nothing ticked.
How do I get more than 1,000 results?
Split the query. created:2020-01-01..2020-12-31, then 2021, and so on. Each slice gets its own 1,000.
Does it scrape github.com?
No. It uses api.github.com, GitHub's documented REST API, with the versioned API header.
What if my search matches nothing? Zero rows and a log line saying the search succeeded but matched nothing — not an error, and not a silent blank.
Other tools by NeverEmpty
Every NeverEmpty Actor follows the same rule: it never returns an empty result to mean two different things, and it only charges for rows that actually carry an answer.
- ats-jobs-api - every open job from a Greenhouse, Lever, Ashby or Workable board, one schema
- link-checker - broken links on a site, with blocked told apart from dead
- domain-lookup - WHOIS, DNS, MX, SPF, DMARC and SSL expiry for a list of domains
Support
Something missing or wrong? Open an issue on the Issues tab with the query you used.