GitHub Repos Scraper - trending repos, stars, topics, search
Pricing
from $5.00 / 1,000 records
GitHub Repos Scraper - trending repos, stars, topics, search
Repositories from GitHub's public search API, one row each: full name, owner, description, language, stars, forks, license, topics, created/updated/pushed dates and URL. Trending mode lists new repos by stars; search mode takes GitHub search syntax. For dev-tool teams, VC scouts and researchers.
Pricing
from $5.00 / 1,000 records
Rating
0.0
(0)
Developer
RetrainMap Team
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
GitHub repositories — search + trending-style ranking (public API)
One row per repository from GitHub's public REST search API (https://api.github.com/search/repositories): full name, description, language, stars, forks, watchers, open issues, license, topics, archived/fork flags, created/updated/pushed dates, homepage, GitHub URL, owner and owner type, plus the row's rank in the API's order. Two modes:
- trending — repositories created in the last N days with at least M stars, sorted by
stars. GitHub has no trending API; this is the standard emulation and every row says so in
ranking. - search — your own query in GitHub search syntax (
topic:llm,org:apache,in:name cli, plain words), with optional language, created-after and minimum-stars filters, sorted by stars, forks, recently updated or best match.
The default input (trending, last 7 days, ≥ 10 stars, 100 rows — one request) succeeds within 5 minutes and returns rows — Apify auto-tests it daily.
Data source and status
| Publisher | GitHub, Inc. — REST API, search endpoint (documentation: https://docs.github.com/en/rest/search/search#search-repositories) |
| Access | Public, no key needed. Rate limit: 10 search requests per minute unauthenticated, 30 with a token (each request = up to 100 repositories). The Actor spaces requests at 6.5 s (2.5 s with a token), reads the x-ratelimit-* headers, and on a 403/429 with the limit exhausted waits for the reset (≤ 90 s) and retries |
| Optional token | github_token (secret input): a personal access token with no scopes is enough. Sent only to api.github.com as Authorization: Bearer; never stored, logged or written to the dataset |
| Terms | GitHub Terms of Service and API terms (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service): repository metadata is public; do not use the data to spam or to build a competing service that scrapes users' personal information. Owner login and type are included because they are part of the repository's public name; no e-mail or profile data is read |
| Refresh cadence | Live on every run; star counts are the API's values at fetch time (fetched_at) |
| Known caveats | GitHub search returns at most 1,000 results per query (10 pages of 100) — narrow the query for more; incomplete_results: true in RUN_SUMMARY means the search timed out server-side and the list may be short; language is GitHub's detected primary language and can be null; license is the SPDX id (MIT, Apache-2.0) or the license name when SPDX is NOASSERTION; a 1,000-row unauthenticated run takes ~65 s because of the rate limit |
Honesty note: rows are the API's own fields renamed (stargazers_count → stars, fork →
is_fork, size → size_kb); nothing is inferred or scored by this Actor. A body without
total_count/items, or an item without full_name/html_url, stops the run with an error
rather than guess.
Identification: requests carry a product-token User-Agent, the X-GitHub-Api-Version header
and the operator's contact address in the standard From: header.
Input
| Field | Type | Meaning |
|---|---|---|
mode | trending / search | Default trending |
query | string | GitHub search syntax; required in search mode (or a filter), optional in trending |
language | string | Optional, e.g. Python, TypeScript, Jupyter Notebook |
sort | stars / forks / updated / best-match | Search mode only (trending is always by stars) |
created_after | YYYY-MM-DD | Search mode: creation-date lower bound |
trending_days | integer | Trending window, default 7 |
min_stars | integer | Default 10 |
max_records | integer | Default 100, at most 1,000 |
include_forks, include_archived | boolean | Default off (fork:false archived:false are added) |
github_token | secret string | Optional; raises the rate limit |
contact_email | string | Sent in the From: header |
Example — Python LLM repositories created this year, most recently updated first:
{ "mode": "search", "query": "topic:llm", "language": "Python", "sort": "updated", "created_after": "2026-01-01", "min_stars": 50, "max_records": 150 }
Output (dataset row)
rank, ranking, full_name, name, owner, owner_type, description, language,
stars, forks, watchers, open_issues, license, license_name, topics, archived,
is_fork, default_branch, size_kb, created_at, updated_at, pushed_at, homepage,
html_url, api_url, fetched_at, source.
A run summary (the exact query sent, GitHub's total_count, incomplete_results, pages,
requests, rate-limit waits and remaining quota, whether the pay-per-event budget stopped the
run) is stored as RUN_SUMMARY in the run's key-value store.
Pricing (pay per event)
| Event | Price |
|---|---|
run-start — once per run | $0.10 |
record — per row written | $0.005 |
The default pull (100 rows) costs $0.60; the 1,000-row maximum costs $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.
Operator
Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with GitHub. The Actor writes only to its own dataset and key-value store; it stores no credentials (the optional token lives in the run input, marked secret) and sends nothing else.