GitHub Repo Health Lookup: Stars, Activity, License, Releases avatar

GitHub Repo Health Lookup: Stars, Activity, License, Releases

Pricing

from $0.75 / 1,000 repository checkeds

Go to Apify Store
GitHub Repo Health Lookup: Stars, Activity, License, Releases

GitHub Repo Health Lookup: Stars, Activity, License, Releases

Check any public GitHub repository's health in one row: stars, forks, last push, license, archived flag, contributor count and release cadence. Misses free.

Pricing

from $0.75 / 1,000 repository checkeds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Check a public GitHub repository's health in one row: stars, forks, last push, license, archived flag, contributor count and release cadence. Paste owner/repo or a github.com URL; a repository that does not exist comes back as a free miss row.

Who uses it: engineers vetting a dependency before adopting it, open-source program offices and investors scoring a list of projects, and recruiters or developer-relations teams sizing up a tool's community. Run it on a schedule to track a watchlist's stars and activity over time.

How to use

  1. In the Apify Console. Open the actor page and click Start — the repos field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~github-repo-health-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"repos":["octocat/Hello-World","facebook/react"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"repos": [
"octocat/Hello-World",
"facebook/react"
]
}

One per line: owner/repo (facebook/react) or a github.com URL. Public repositories only. Accepted formats: facebook/react, https://github.com/octocat/Hello-World, git@github.com:vercel/next.js.git.

Add your own free GitHub token in the optional token field if you check more than about 20 repositories an hour: without one, GitHub allows 60 requests per hour per IP and each repository takes 3 requests (repository, contributors, releases). A row whose contributor or release lookup was refused still returns the repository facts, leaves those fields empty and says why in partialReason.

Output

One row per repository. Missing values are empty, never 0. openIssuesAndPrs is GitHub's own open count, which includes open pull requests. activityStatus is ACTIVE (pushed in the last 90 days), SLOWING (91-365 days), STALE (over a year) or ARCHIVED. Release fields use stable releases only (no drafts or pre-releases) from GitHub's 30 newest.

queryfoundstatusreporepoUrldescriptionhomepageprimaryLanguagetopicsstarsforkswatchersopenIssuesAndPrslicensearchivedisForkdefaultBranchcreatedAtpushedAtdaysSinceLastPushactivityStatuscontributorCountlatestReleaseTaglatestReleaseAtdaysSinceLastReleasereleasesLast365dreleasesLast365dIsLowerBoundmedianDaysBetweenReleasespartialReasonsourceUrlscrapedAt
octocat/Hello-WorldtrueOK<open issues + prs><releases, last 365 days>1970-01-01T00:00:00.000Z

A miss comes back as a row with "found": false and is never charged.

What it costs

You pay per repository returned, about $1.50 per 1,000 on the Free plan and less on higher Apify plans. A repository that is not found, private, rate-limited or malformed is never charged.

Pricing

Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed per item only when data is actually found and returned — see .actor/pay_per_event.json for exact prices. A miss is never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~github-repo-health-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"repos":["octocat/Hello-World","facebook/react"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~github-repo-health-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"repos":["octocat/Hello-World","facebook/react"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~github-repo-health-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"repos":["{{repository}}"]}, mapping the row's repository into the repos array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "github repo stats scraper" — the agent will find and run this actor.

Example runs

All three below come from one keyless run (no token, no proxy) on 2026-10-11 with the input {"repos":["octocat/Hello-World","facebook/react"]}; it finished in 5 seconds.

1. A quiet, unlicensed repo (octocat/Hello-World). Stars 3,820, forks 7,068, 3 contributors, last push 2024-08-20 (781 days ago), so activityStatus is STALE. It has no license, no topics and no stable releases, so license and latestReleaseTag are empty while releasesLast365d is a real 0.

2. A busy library (facebook/react). Resolves to its current name react/react: 250,872 stars, 2,020 contributors, MIT license, last push 2 days earlier (ACTIVE), latest release v19.3.0 (32 days earlier) and 27 stable releases in the last 365 days. The median gap between releases rounds to 0 days because back-port releases ship on the same day.

3. A watchlist in one call. The input above returns both rows in one dataset, each with a sourceUrl, ready for a spreadsheet or a scheduled monitor. A repository that does not exist adds a free "found": false row with status NOT_FOUND.