GitHub Repo & Trending Scraper (official API) avatar

GitHub Repo & Trending Scraper (official API)

Pricing

Pay per event

Go to Apify Store
GitHub Repo & Trending Scraper (official API)

GitHub Repo & Trending Scraper (official API)

GitHub repositories scraper for public repository research. Export repository metadata as JSON, with optional contributor rows from the GitHub API.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Grit

Grit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

GitHub repositories scraper returns public repository records and, when requested, contributor rows from the GitHub API.

GitHub repositories scraper uses the public source named below and writes its results to the Actor dataset.

What you get

Fields vary by result type and optional enrichment. The examples below are from sample_output.json.

Output fieldTypeExample value or excerpt from saved sample
record_typestring"repo"
full_namestring"KKKKhazix/AIHOT"
ownerstring"KKKKhazix"
namestring"AIHOT"
urlstring"https://github.com/KKKKhazix/AIHOT"
descriptionstring or null"一个自己找热点、自己写日报的网站框架。把信源和精选标准换成你的,它就是你的行业热点站。"
homepagestring or null"https://aihot.news"
languagestring"TypeScript"
starsinteger5898
forksinteger1493
watchersinteger19
open_issuesinteger4
licensestring"MIT"
topicsarray["ai"]
default_branchstring"main"
created_atstring"2026-09-28T23:40:05Z"
updated_atstring"2026-10-05T11:09:53Z"
pushed_atstring"2026-10-04T23:27:49Z"
last_commit_datestring"2026-10-04T23:27:47Z"
size_kbinteger11077
archivedbooleanfalse
forkbooleanfalse
languagesobject{"TypeScript": 3051659}
latest_releaseobject or null{"tag": "v1.0.7"}
contributors_countinteger10
readme_excerptstring"一个自己找热点、自己写日报的网站框架。 把信源换成你的,把精选标准换成你的 KnowHow,它就是你的行业热点站。 跑起来 · 改成你的行业 · 它是怎么工作的 · 文档 · 社区交流 这是什么 A…
modestring"trending"
errornullnull
repostring"KKKKhazix/AIHOT"
loginstring"KKKKhazix"
contributionsinteger38
profile_urlstring"https://github.com/KKKKhazix"
account_typestring"User"

Three modes:

ModeWhat it does
searchGitHub repository search: text, language, topic, stars range, created / pushed dates, sort by stars, forks, updates or best match.
reposDetails for your list of owner/repo names or github.com URLs.
trendingTrending-like: repositories created in the last N days, sorted by stars. This is computed from the GitHub Search API. It is not GitHub's own trending page (which has no official API), so results differ from github.com/trending.

Optional in every mode: top contributors as separate rows (login and contribution count only).

Repository row (record_type: "repo")

FieldNotes
full_name, owner, name, url, homepage, description
language, topics, license (SPDX id), default_branch, archived, fork, size_kb
stars, forks, open_issuesfrom the search/repo response
watcherssubscribers count; filled in repos mode or when enrichSearchResults is on
created_at, updated_at, pushed_at
last_commit_datenewest commit on the default branch
languagesbytes per language
latest_releasetag, name, published_at, prerelease, url (null when the repo has no release)
contributors_countincluding anonymous contributors
readme_excerptoptional, plain text, length configurable
mode, error, warningserror is set on failed rows; warnings lists optional fields that were skipped (for example by the rate limit)

Contributor row (record_type: "contributor")

repo, login, contributions, profile_url, account_type. No emails or other personal data.

Input example

{
"mode": "search",
"query": "web scraping",
"language": "Python",
"minStars": 1000,
"pushedAfter": "2026-06-01",
"sort": "stars",
"maxItems": 50,
"enrichSearchResults": true,
"includeContributors": true,
"maxContributorsPerRepo": 3
}

Repo details:

{ "mode": "repos", "repositories": ["apify/crawlee", "https://github.com/psf/requests"], "includeReadme": true }

Trending-like, last 7 days, Rust:

{ "mode": "trending", "trendingDays": 7, "language": "Rust", "maxItems": 25 }

Output example

{
"record_type": "repo",
"full_name": "KKKKhazix/AIHOT",
"language": "TypeScript",
"stars": 5898,
"forks": 1493,
"watchers": 19,
"open_issues": 4,
"license": "MIT",
"created_at": "2026-09-28T23:40:05Z",
"last_commit_date": "2026-10-04T23:27:47Z",
"languages": {
"TypeScript": 3051659,
"CSS": 21311,
"PLpgSQL": 3024,
"Dockerfile": 1187
},
"latest_release": null,
"contributors_count": 10,
"mode": "trending",
"error": null
}

A complete sample is in sample_output.json.

GitHub token and rate limits (read this)

The token is optional. Without it GitHub allows 60 core API requests per hour and 10 search requests per minute per IP address. A plain search row costs no extra request (stars, forks, license, topics and dates come with the search result). Each enriched repo costs up to 5 requests (languages, latest release, last commit, contributors count, plus watchers, README or contributors when selected), so roughly 10 enriched repos fit into the unauthenticated hour. When GitHub says the limit is hit, the run does not crash: it keeps what it already has, marks skipped optional fields in warnings, writes an error row naming the reset time and finishes with a status message.

With a personal access token (no scopes needed for public data) the limits are 5,000 requests per hour and 30 search requests per minute. Put it in the githubToken input, which is stored as a secret. It is sent only to api.github.com, and never logged or written to the dataset.

Other limits: GitHub search returns at most 1,000 results per query (the maxItems cap is 1,000), and contributor lists on very large repositories are what GitHub returns for the contributors endpoint.

Pricing

Pay per event: $0.0008 per repository row (event repo) and $0.0003 per contributor row (event contributor). No start fee. Error rows are not charged. See PRICING.md for the comparison with other Store actors.

Measured on a local run (with a token, 2026-10-05)

  • 100 search rows, no enrichment: 3.5 s
  • 50 search rows with languages, release, last commit, contributors count and watchers: 8.2 s
  • 15 trending rows with README excerpt and 2 contributors each (40 rows): 3.3 s
  • Unauthenticated, after the hourly quota was used: repos mode returned clear rate-limit error rows in 0.3 s

FAQ

What limits the result set? maxItems caps repository rows, and the GitHub Search API also caps results for a query. Contributor rows are separate.

Do I need a proxy or login? No proxy or login is used. A GitHub token is optional for public data and gives authenticated API limits.

How is it priced? The proposed pay-per-event model charges repo per repository row and contributor per contributor row. Error rows have no custom event charge; no custom start event is proposed.

What happens at GitHub rate limits? The client reads GitHub rate-limit headers, waits for a nearby reset when allowed, or stops with a rate-limit warning. Enrichment uses extra API requests.

How fresh are the fields? Repository and contributor data is requested during the run. Source updated_at and pushed_at describe GitHub activity, not the Actor retrieval time.

Is trending mode the GitHub Trending page? No. It ranks recently created repositories by stars using the GitHub Search API.

Use with AI agents / MCP

The actor takes a small JSON input and returns flat JSON rows, which suits tool calls. Through the Apify MCP server (https://mcp.apify.com) an agent can run it as a tool, for example "find Python repos created this month with more than 200 stars and show me their latest release" maps to mode: trending or search with language, minStars and createdAfter. Always pass maxItems so an agent run stays cheap, and give the agent a githubToken input if it will request enrichment for more than a handful of repos.