GitHub Repos Scraper - trending repos, stars, topics, search avatar

GitHub Repos Scraper - trending repos, stars, topics, search

Pricing

from $5.00 / 1,000 records

Go to Apify Store
GitHub Repos Scraper - trending repos, stars, topics, search

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

RetrainMap Team

Maintained by Community

Actor 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

PublisherGitHub, Inc. — REST API, search endpoint (documentation: https://docs.github.com/en/rest/search/search#search-repositories)
AccessPublic, 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 tokengithub_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
TermsGitHub 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 cadenceLive on every run; star counts are the API's values at fetch time (fetched_at)
Known caveatsGitHub 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_countstars, forkis_fork, sizesize_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

FieldTypeMeaning
modetrending / searchDefault trending
querystringGitHub search syntax; required in search mode (or a filter), optional in trending
languagestringOptional, e.g. Python, TypeScript, Jupyter Notebook
sortstars / forks / updated / best-matchSearch mode only (trending is always by stars)
created_afterYYYY-MM-DDSearch mode: creation-date lower bound
trending_daysintegerTrending window, default 7
min_starsintegerDefault 10
max_recordsintegerDefault 100, at most 1,000
include_forks, include_archivedbooleanDefault off (fork:false archived:false are added)
github_tokensecret stringOptional; raises the rate limit
contact_emailstringSent 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)

EventPrice
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.