GitHub Repo Search API - Stars, Language, Date, Official API avatar

GitHub Repo Search API - Stars, Language, Date, Official API

Pricing

$10.00 / 1,000 repository returneds

Go to Apify Store
GitHub Repo Search API - Stars, Language, Date, Official API

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

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

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:>10007,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

ColumnWhy it matters
daysSinceLastPush0 means it was touched today; 900 means it is abandoned. No date arithmetic on your side
starsPerYear40,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
ageDaysHow 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
}
FieldDefaultMeaning
querylanguage:javascript stars:>1000Any GitHub search query, exactly as on github.com
sortstarsstars, forks, updated, help-wanted-issues, best-match
orderdescBiggest first, or smallest first
maxResults100Up to 1,000 — GitHub's own hard limit
minStars0Extra filter applied after fetching
excludeForks / excludeArchivedfalseDrop forks / archived projects
githubTokenemptyOptional. Raises the limit from 10 to 30 searches per minute. No scopes needed for public repositories
waitForRateLimittrueWait out the limit instead of returning a partial result

Typical uses

  • Finding maintained alternatives to a library (daysSinceLastPush sorts 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.