GitHub Repo Intel — Search, Stars, Activity, Contributors
Pricing
from $3.50 / 1,000 result items
GitHub Repo Intel — Search, Stars, Activity, Contributors
GitHub repository intelligence for AI agents and analysts: explicit repos, repository search with qualifiers (stars, language, topic, dates, license), org/user listings.
Pricing
from $3.50 / 1,000 result items
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
GitHub Repo Intel — search, stars, activity, contributors, health
One clean JSON per repository, built for AI agents and analysts: stars, forks, open issues split from pull requests, language breakdown, 52-week commit activity, releases, top contributors with a bus-factor signal, community-health profile and README. Feed it explicit repos, a GitHub repository search query with qualifiers, or an organisation / user to list. No API key, proxy or browser needed — works on GitHub's public REST API (60 requests/h); drop in a token for 5000/h.
Use cases
- Dependency due diligence — is this library maintained? Days since last push/release, active weeks, contributor count, top-contributor share, archived flag.
- Competitor / market scan —
topic:mcp language:typescript stars:>500 pushed:>2026-06-01sorted by stars, refreshed weekly. - Deal sourcing — new repos in a niche (
createdAfter), withmaxStarsto catch early-stage projects before they trend. - Portfolio monitoring — list every repo of your orgs (
orgs) and alert whendaysSincePushgrows oropenPullRequestspiles up. - Developer-relations research — who are the top contributors of the projects your users depend on (
contributors, bot-filtered). - Open-source compliance — license SPDX id, license file presence, code-of-conduct / contributing files via the community profile.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
repos | string[] | — | owner/repo, github.com URLs (sub-paths, .git, ?tab= tolerated) or git@github.com:o/r.git. Always fully enriched. |
searchQueries | string[] | — | Repository search queries with qualifiers (see Reference). Up to maxItems per query, GitHub caps at 1000. Not code search. |
searchSort | select | best-match | best-match, stars, forks, help-wanted-issues, updated |
searchOrder | select | desc | desc, asc |
orgs | string[] | — | Organisation logins → GET /orgs/{org}/repos |
users | string[] | — | User logins → GET /users/{user}/repos |
listType | select | sources | sources, all, public, forks, member (users: sources/forks/public emulated client-side) |
listSort | select | pushed | pushed, updated, created, full_name |
maxItems | integer | 20 | Cap per search query and per org/user (1–1000) |
minStars / maxStars | integer | — | Star range; search → stars: qualifier, listings → client-side |
language | string | — | Primary language as GitHub names it (TypeScript, Jupyter Notebook…) |
pushedAfter / createdAfter | date YYYY-MM-DD | — | Recency filters (pushed:>=, created:>=) |
excludeForks / excludeArchived | boolean | false | fork:false, archived:false |
enrichListed | boolean | false | Run the per-repo enrichments also on search/org/user results (otherwise they cost zero extra requests) |
includeReleases | integer | 5 | Latest releases (0–30) + latestRelease, daysSinceRelease |
includeContributors | integer | 10 | Top contributors (0–100) + contributorsCount, topContributorShare |
includeLanguages | boolean | true | languages (%), languageBytes |
includeCommitActivity | boolean | true | commits52w/12w/4w, activeWeeks52w, lastActiveWeek |
includeLatestCommit | boolean | false | latestCommit + totalCommits |
includeCommunityProfile | boolean | false | community.* health flags |
includeIssuePrSplit | boolean | false | openIssuesOnly, openPullRequests (2 search requests per repo) |
includeReadme | boolean | false | First 4000 chars of README |
fields | string[] | all | Whitelist of top-level output fields (id, fullName, url, fetchedAt always kept) |
token | secret string | — | GitHub PAT / App token. 60 → 5000 core req/h, 10 → 30 search req/min, private repos you can read |
At least one of repos, searchQueries, orgs, users is required. Invalid repo references, dates or enum
values fail the run immediately with a message listing every problem.
Reference
Repository-search qualifiers (searchQueries)
Same syntax as github.com/search?type=repositories. Combine with free text; NOT, -qualifier: and ranges
(>, >=, <, ..) are supported. Structured inputs (minStars, language, pushedAfter, createdAfter,
excludeForks, excludeArchived) are appended automatically unless you already used that qualifier.
| Qualifier | Example | Meaning |
|---|---|---|
in: | in:name,description,readme | Where the free text must match (default name + description) |
user: / org: | org:vercel | Repositories owned by a user / organisation |
repo: | repo:apify/crawlee | A specific repository |
stars: | stars:>=1000, stars:10..500 | Star count |
forks: | forks:>100 | Fork count |
size: | size:<5000 | Size in KB |
language: | language:rust | Primary language |
topic: | topic:mcp | Has this topic (repeatable) |
topics: | topics:>3 | Number of topics |
license: | license:mit, license:apache-2.0 | License keyword (SPDX-like, lower-case) |
created: / pushed: | created:>=2026-01-01, pushed:2026-06-01..2026-09-01 | Dates |
is: | is:public, is:private | Visibility (private needs a token) |
fork: | fork:false, fork:only, fork:true | Fork handling |
archived: | archived:false | Archived state |
mirror: | mirror:false | Mirrors |
template: | template:true | Template repositories |
good-first-issues: / help-wanted-issues: | good-first-issues:>5 | Issues with those labels |
followers: | followers:>500 | Owner's follower count |
Full list: https://docs.github.com/en/search-github/searching-on-github/searching-for-repositories.
Sorts
| Where | Values |
|---|---|
searchSort | best-match, stars, forks, help-wanted-issues, updated |
listSort | pushed, updated, created, full_name |
Common license SPDX ids returned in license
MIT, Apache-2.0, GPL-3.0, GPL-2.0, LGPL-3.0, AGPL-3.0, BSD-2-Clause, BSD-3-Clause, MPL-2.0,
ISC, Unlicense, CC0-1.0, EPL-2.0, BSL-1.0, NOASSERTION (custom / unrecognised), null (no license file).
Rate limits (GitHub, per IP without token / per token)
| Resource | No token | With token | Used by |
|---|---|---|---|
| core | 60 / hour | 5000 / hour | repos, org/user listings, every enrichment |
| search | 10 / minute | 30 / minute | searchQueries, includeIssuePrSplit (2 per repo) |
Cost per explicit repo with defaults = 1 + languages + commit activity + releases + contributors (+1 when the
repo has more contributors than requested) ≈ 5–6 core requests. Search/org/user results with enrichListed: false
cost 1 request per 100 repositories.
Examples
Vet three dependencies before adopting them
{ "repos": ["hono-dev/hono", "colinhacks/zod", "apify/crawlee"], "includeCommunityProfile": true, "includeLatestCommit": true, "includeIssuePrSplit": true }
Weekly market scan: active TypeScript MCP servers with 500+ stars
{ "searchQueries": ["topic:mcp server"], "searchSort": "stars", "minStars": 500, "language": "TypeScript", "pushedAfter": "2026-06-01", "excludeForks": true, "excludeArchived": true, "maxItems": 50, "fields": ["stars", "forks", "pushedAt", "topics", "description", "searchTotalCount"] }
Deal sourcing: new Rust projects created this year that already have traction
{ "searchQueries": ["language:rust created:>=2026-01-01"], "searchSort": "stars", "minStars": 200, "maxStars": 5000, "maxItems": 100 }
Portfolio monitor: every source repo of your orgs, enriched, run daily
{ "orgs": ["x402-foundation", "apify"], "listType": "sources", "listSort": "pushed", "maxItems": 30, "enrichListed": true, "includeReleases": 3, "includeContributors": 5, "includeLatestCommit": true, "token": "ghp_…" }
Bus-factor audit of a user's projects
{ "users": ["sindresorhus"], "minStars": 1000, "maxItems": 20, "enrichListed": true, "includeContributors": 10, "includeLanguages": false }
Output
One item per repository. Failed or missing references (404, 5xx after retries) are not items and are not charged: they are listed in the SUMMARY record (errors[{input, source, error}], notFound[{input, source}], with counts) and in the run's status message. Trimmed example:
{"id": 66670819,"fullName": "apify/crawlee","url": "https://github.com/apify/crawlee","apiUrl": "https://api.github.com/repos/apify/crawlee","description": "Crawlee—A web scraping and browser automation library for Node.js…","homepage": "https://crawlee.dev","language": "TypeScript","license": "Apache-2.0","topics": ["apify", "crawler", "playwright", "scraping"],"stars": 25758, "forks": 1666, "watchers": 135, "openIssues": 137,"archived": false, "fork": false, "defaultBranch": "master","createdAt": "2016-08-26T18:35:03Z", "pushedAt": "2026-09-11T18:42:13Z","daysSincePush": 1, "ageDays": 3669,"latestRelease": { "tag": "v3.18.1", "publishedAt": "2026-08-12T15:39:11Z", "prerelease": false },"daysSinceRelease": 31,"releases": [{ "tag": "v4.0.0-rc.0", "publishedAt": "2026-08-13T10:14:22Z", "prerelease": true, "url": "…" }],"contributors": [{ "login": "mnmkng", "contributions": 1149, "bot": false }, { "login": "renovate[bot]", "contributions": 905, "bot": true }],"contributorsCount": 134, "topContributorShare": 29.3,"languages": { "TypeScript": 62, "MDX": 31.1, "JavaScript": 5.3 },"commits52w": 644, "commits12w": 256, "commits4w": 53, "activeWeeks52w": 50, "lastActiveWeek": "2026-09-06","source": "repos", "query": null,"fetchedAt": "2026-09-12T23:28:59.943Z"}
| Field | Type | Description |
|---|---|---|
id | number | GitHub repository id — stable across renames |
fullName, name, owner{login,type,url} | string / object | Identity |
url, apiUrl, homepage | string | Links (apiUrl = source endpoint) |
description, topics[], language, license, licenseName | Metadata; license is the SPDX id | |
stars, forks, watchers, openIssues, size | number | Counters. openIssues = issues and PRs (GitHub semantics); watchers is null for search/listing items unless enriched |
archived, disabled, fork, parent, isTemplate, hasIssues, hasWiki, hasDiscussions, hasPages | boolean / string | Flags |
createdAt, updatedAt, pushedAt, daysSincePush, ageDays | Dates & derived recency | |
releases[], latestRelease, daysSinceRelease | With includeReleases (drafts skipped; latestRelease prefers non-prerelease) | |
contributors[], contributorsCount, topContributorShare | With includeContributors; share = % of listed commits by the #1 contributor | |
languages, languageBytes | object | With includeLanguages |
commits52w, commits12w, commits4w, activeWeeks52w, lastActiveWeek | number / string | With includeCommitActivity (null while GitHub is still computing) |
latestCommit{sha,date,author,message,url}, totalCommits | With includeLatestCommit | |
community{healthPercentage,hasReadme,hasLicense,hasContributing,hasCodeOfConduct,hasIssueTemplate,hasPullRequestTemplate} | object | With includeCommunityProfile |
openIssuesOnly, openPullRequests | number | With includeIssuePrSplit |
readme, readmeUrl | string | With includeReadme |
source, query, searchTotalCount | repos / search / org / user; the effective query; total matches GitHub reported | |
fetchedAt | ISO string | When the item was fetched |
The key-value store also gets SUMMARY (items, errors, errorCount, notFound, notFoundCount, requests), STATS (pushed, failed, requests, coreRemaining, searchRemaining) and, on a
rate-limit abort, RATE_LIMIT with the reset time. The run fails only when nothing could be fetched.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~github-repo-intel/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'content-type: application/json' \-d '{"repos":["apify/crawlee"],"includeCommunityProfile":true}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/github-repo-intel').call({ searchQueries: ['topic:mcp language:typescript'], minStars: 500, maxItems: 50 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/github-repo-intel").call(run_input={"orgs": ["apify"], "maxItems": 30, "enrichListed": True})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to your agent (Claude, Cursor, custom) and call the tool yadroo/github-repo-intel
with the same JSON input; the schema descriptions are written so an agent can fill them unaided.
Pricing
Pay per event: $0.001 per run start + $0.005 per repository item. Error items (404, invalid ref) are pushed but count as items too, so validate references upstream when possible.
Typical runs: vetting 3 dependencies ≈ $0.016; a 50-repo market scan ≈ $0.25; a 200-repo org inventory ≈ $1.00. Apify compute (256 MB, seconds per run) is billed separately by the platform.
Limits & FAQ
- Rate limits. Without a token GitHub allows 60 core requests/h and 10 search requests/min per IP — enough for ~10 fully
enriched repos or a few hundred un-enriched search results per hour. When the quota is exhausted the run fails fast
with the reset time (no silent looping); everything fetched so far stays in the dataset. Pass
tokenfor 5000/h. - Secondary limits / 5xx. Retried with backoff (honours
Retry-After, max 60 s), up to 4 attempts, then the repo is listed inSUMMARY.errors(no item, not charged). - Commit activity is null. GitHub computes
/stats/commit_activitylazily and answers 202 for cold repositories. The actor retries 4 times (~20 s); if still not ready you get nulls and a warning — run again a minute later. openIssueslooks too high. That is GitHub's own number: issues + pull requests. EnableincludeIssuePrSplitfor the split.- Freshness. Live API calls on every run; counters are current to the second, search indexes lag by minutes.
- Private repositories. Only with a token that can read them;
is:privatesearch also needs a token. - Code search / user search. Not included: code search requires authentication on GitHub's side and returns file matches, not repositories. Use
searchQuerieswithin:readmefor text-in-repo discovery. - Roadmap. Star history sampling via stargazers timestamps; dependents count; issue response-time metrics.
Made by Yadroo — more data actors for agents: npm-package-intel · pypi-package-intel · hackernews-search · stackexchange-search · domain-intel