GitHub Repo Search: Topic / Language / Date | $2/1K avatar

GitHub Repo Search: Topic / Language / Date | $2/1K

Pricing

from $1.00 / 1,000 repo rows

Go to Apify Store
GitHub Repo Search: Topic / Language / Date | $2/1K

GitHub Repo Search: Topic / Language / Date | $2/1K

Official GitHub Search API → new and trending public repos by topic, language, or created:>date window. Stars, forks, license, topics, owner. Optional token for higher rate limit. No HTML scrape, no proxies. $2 per 1,000 repos.

Pricing

from $1.00 / 1,000 repo rows

Rating

0.0

(0)

Developer

CleanFeeds API

CleanFeeds API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

35 minutes ago

Last modified

Categories

Share

Quick start

  • GitHub repo search API as a dataset: one JSON row per public repository matching each query, with stars, forks, language, topics, license, timestamps and owner.
  • Minimal input: {"queries": ["topic:mcp stars:>50"]}
  • Run it from the Console, the API, or the Apify MCP server; export JSON, CSV or Excel.

Find new and trending public GitHub repositories by topic, language, or date window via the official GitHub REST Search API. No HTML scraping, no login wall, no proxies. Pass the same query syntax you use on github.com/search (topic:mcp, language:Rust, created:>2026-10-01).

You get one dataset row per repo: full name, URL, description, language, stars, forks, open issues, topics, license, created/updated/pushed timestamps, archived flag, owner.

Why this instead of scraping or the vendor API

  • It is the vendor API, with the plumbing done. The Actor calls GET https://api.github.com/search/repositories with per_page=100 and pages through the results, so you get a flat dataset instead of writing pagination and rate-limit code.
  • The Search API caps every query at 1,000 results (10 pages of 100). The Actor stops there and says so. To cover more, split one broad query into several narrow ones (stars:>500, stars:100..500, monthly created: windows) and pass them all in queries.
  • Rate limits are respected, not fought. Unauthenticated search allows 10 requests per minute, 30 with a token. The Actor reads X-RateLimit-Remaining and X-RateLimit-Reset and sleeps until reset when the budget hits zero, then continues.
  • Optional token, never required. Pass a personal access token in the secret token field only when you run many pages or many queries.
  • The github.com trending page has no API and changes daily with no history. A scheduled run of created:> or pushed:> queries gives you a reproducible dataset per day.

What you get

FieldMeaning
querythe search string that produced this row
full_nameowner/repo
urlhttps://github.com/owner/repo
descriptionrepo description (or null)
languageprimary language (or null)
stars, forks, open_issuescounts from the Search API
topicsstring array of topic tags
licenseSPDX id when GitHub knows it (else null)
created_at, updated_at, pushed_atISO 8601
archivedboolean
owner, owner_typelogin + User / Organization

A query that fails (bad syntax, HTTP error) does not abort the run: it yields one row with query and error, and other queries continue.

Not included, by design: profile / follower scraping, private repos, code search, commit contents, README bodies. This Actor is a narrow repo discovery feed for topic/language/date windows.

Input examples

{ "queries": ["topic:mcp stars:>50"], "sort": "stars", "maxReposPerQuery": 200 }
{
"queries": [
"created:>2026-10-01 language:Rust",
"topic:llm stars:>100 pushed:>2026-09-01"
],
"sort": "updated",
"maxReposPerQuery": 100
}
FieldTypeDefaultNotes
queriesstring listtopic:mcp stars:>50GitHub search syntax
sortenumstarsstars | updated | forks
maxReposPerQueryinteger200hard-capped at 1000 (GitHub Search API limit); 0 = 1000
tokensecret stringemptyoptional PAT; raises Search rate limit 10 to 30 req/min

Output example

{
"query": "topic:mcp stars:>50",
"full_name": "modelcontextprotocol/servers",
"url": "https://github.com/modelcontextprotocol/servers",
"description": "Model Context Protocol Servers",
"language": "TypeScript",
"stars": 12000,
"forks": 1500,
"open_issues": 80,
"topics": ["mcp", "ai"],
"license": "MIT",
"created_at": "2024-11-19T00:00:00Z",
"updated_at": "2026-11-01T12:00:00Z",
"pushed_at": "2026-11-01T11:30:00Z",
"archived": false,
"owner": "modelcontextprotocol",
"owner_type": "Organization"
}

How much does it cost?

Pay per event: $2.00 per 1,000 repo rows (repo event, $0.002 each) plus Apify's small Actor-start event. Platform compute is on us. Set a maximum charge per run in the Console and the Actor stops at the limit. The Apify free plan is enough to try the sample query.

Rate limits

GitHub Search API: 10 req/min unauthenticated, 30 req/min with a token. This Actor reads X-RateLimit-Remaining / X-RateLimit-Reset and sleeps until reset when remaining hits 0. Max 1000 results per query (GitHub hard cap, 10 pages × 100).

Use cases

  • Trend / launch radar: created:>YYYY-MM-DD language:... or topic:... daily, catch new repos in a niche.
  • Competitive / ecosystem maps: dump top starred repos for a topic into a sheet.
  • AI agents / MCP: "list hot Rust repos this month" without browser automation.
  • Monitoring: schedule weekly, diff full_name sets for newcomers above a stars threshold.

Integrations

  • Apify API: POST https://api.apify.com/v2/acts/cleanfeedsapi~github-repo-search/run-sync-get-dataset-items?token=<APIFY_TOKEN> with the input JSON as the body. The response is the dataset, ready to parse.
  • Scheduling: open the Actor in the Apify Console, click Schedule, pick a cron (for example weekly on Monday) and the saved input runs on its own. Each run keeps its own dataset.
  • n8n, Make, Zapier: use the Apify integration in each tool, choose this Actor and pass the same input JSON. No per-Actor setup, no custom code.
  • Apify MCP server for AI agents: connect the Apify MCP server to Claude, Cursor or any MCP client and ask the agent to run cleanfeedsapi/github-repo-search with these inputs.

More feeds at cleanfeeds.dev.

FAQ

Do I need a GitHub token? No. Unauthenticated works (10 Search req/min). Add a token only if you run many pages or many queries.

Is this HTML scraping? No. Only GET https://api.github.com/search/repositories.

Can I get more than 1000 repos for one query? No. That is GitHub's Search API ceiling. Narrow the query (stars:>N, date windows) instead.

Why is license null? GitHub did not detect a license file for that repo.

One query 422s, what happens? You get one error row for it; other queries still run.

How do I detect new and closed items between runs? full_name (owner/repo) is the stable key. Keep each run's dataset and compare full_name sets per query: names present today but not last week are newcomers; names that dropped out were renamed, deleted, archived out of the filter, or fell below your stars: threshold. Check archived on the newer run before calling a repo gone.

What happens when a source fails? A query that GitHub rejects (422 for bad syntax, 5xx, or a rate-limit 403 without a reset header) does not stop the run. The Actor logs it, pushes one row with query and error (status, URL and the first 200 characters of GitHub's response), and moves to the next query. Error rows are not charged. A 403 with X-RateLimit-Remaining: 0 is not an error: the Actor sleeps until reset and retries the same page.

GitHub repo search API, trending GitHub repositories, topic search, language:Rust created:>date, GitHub stars scraper alternative, new GitHub repos by topic.