GitHub Repo Health Checker – Awesome-List Link Audit avatar

GitHub Repo Health Checker – Awesome-List Link Audit

Pricing

from $7.50 / 1,000 repository checkeds

Go to Apify Store
GitHub Repo Health Checker – Awesome-List Link Audit

GitHub Repo Health Checker – Awesome-List Link Audit

Is a GitHub repo still alive? Stars, forks, last commit, issues, archived flag, license and an active/stale/dead score for repo lists or awesome-lists. Official GitHub API. By Mike Start Games. This is not personalized advice. Material created also with the use of AI tools.

Pricing

from $7.50 / 1,000 repository checkeds

Rating

0.0

(0)

Developer

Mike

Mike

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

GitHub Repo Health Checker – is this repository still alive?

Check any list of GitHub repositories – or a whole awesome-list – in one run and get, for every repo: stars, forks, last commit date, open issues, archived flag, license and a simple health score: active / stale / dead.

  • Two inputs, one table: paste repository URLs (owner/repo, https://github.com/owner/repo, git@github.com:…) and/or the URL of an awesome-list (a GitHub README, or any raw Markdown / JSON / YAML file).
  • Link extraction done right: GitHub links are de-duplicated; topics, orgs, gists, docs, GitHub Pages, issues and other non-repository links are dropped.
  • Health score you control: active = last commit ≤ 90 days, stale = ≤ 365 days, dead = older or archived (both thresholds configurable).
  • Renamed / transferred repos detected (status: moved, movedFrom), and broken links reported as free rows (not-found, blocked), so you can clean up a list.
  • Official GitHub REST API only (api.github.com). No scraping of github.com pages, no browser, no proxies.
  • Rate-limit aware: reads X-RateLimit-Remaining / X-RateLimit-Reset, never hammers the API, waits (if you allow it) or stops cleanly with a clear message. Optional token for 5,000 requests/hour.
  • Pay only for what works: you are charged per repository successfully checked; unavailable or skipped repos are free.

Created with the help of AI by Mike Start Games.

Disclaimer: This is not personalized advice. Material created also with the use of AI tools.

Use cases

  • Awesome-list maintainers – find dead, archived, moved and deleted projects before your readers do.
  • Developers choosing a dependency – compare candidates by activity, license and stars in one table.
  • Investors, analysts and dev-rel – snapshot of an ecosystem (e.g. all AI-agent frameworks) with activity levels.
  • Security / OSPO teams – spot unmaintained or unlicensed repositories in your dependency list.
  • Content creators – keep "best tools" articles up to date.

Example: audit the "Awesome AI Agents" list

slavakurilyak/awesome-ai-agents (MIT License, © its authors) links to ~300 AI-agent projects. With a token:

{
"awesomeListUrls": ["https://github.com/slavakurilyak/awesome-ai-agents"],
"githubToken": "github_pat_…",
"maxRepos": 500
}

In our test the README contained 302 unique repository links (the list's own repo is excluded by default). The dataset view "Dead or unavailable" gives you the clean-up list directly. If you republish the results, cite the list as the source, as its MIT license requires.

Input

FieldTypeDefaultDescription
reposarray–Repositories: owner/repo, GitHub URL (any sub-page) or SSH URL.
awesomeListUrlsarray–Lists to read: GitHub repo URL (README), GitHub file URL (/blob/…) or raw Markdown/JSON/YAML/HTML URL.
includeListRepobooleanfalseAlso check the list's own repository.
maxReposinteger25 without token, 1,000 with tokenMax unique repos per run (max 5,000).
githubTokenstring (secret)–Optional GitHub token. A fine-grained token with no permissions is enough. Encrypted by Apify, never logged or output.
checkLastCommitbooleantrue2 requests/repo for the real last commit on the default branch; off = 1 request/repo using pushed_at.
maxRateLimitWaitSecsinteger0Wait for a rate-limit reset if it comes within this many seconds; otherwise stop cleanly.
maxConcurrencyinteger2 / 4Repos checked in parallel (without / with token).
activeDaysinteger90Active threshold in days.
staleDaysinteger365Stale threshold in days (must be > activeDays).
includeErrorRowsbooleantrueOutput free rows for repos that could not be checked.

At least one of repos or awesomeListUrls is required.

Without a token

GitHub allows 60 requests per hour per IP address without a token, and on Apify that IP can be shared with other users. Each repo costs 2 requests (1 with checkLastCommit: false), so without a token keep runs small (default 25 repos). When the quota runs out the Actor stops cleanly: remaining repos get a free rate-limited row and the SUMMARY explains when the quota resets. For anything bigger, create a token at https://github.com/settings/personal-access-tokens (no permissions needed) and paste it in githubToken.

Output

One row per repository (dataset), plus a SUMMARY record in the key-value store.

{
"url": "https://github.com/langchain-ai/langchain",
"owner": "langchain-ai",
"name": "langchain",
"fullName": "langchain-ai/langchain",
"status": "moved",
"statusMessage": "Repository was renamed or transferred to langchain-ai/langchain.",
"description": "The agent engineering platform.",
"stars": 148769,
"forks": 25000,
"openIssues": 706,
"lastCommitDate": "2026-10-31T15:17:54Z",
"lastCommitSource": "default-branch-commit",
"pushedAt": "2026-10-31T15:17:58Z",
"archived": false,
"license": "MIT",
"defaultBranch": "master",
"healthScore": "active",
"healthScoreIt": "attivo",
"daysSinceLastCommit": 0,
"movedFrom": "hwchase17/langchain",
"sourceList": null,
"checkedAt": "2026-10-31T16:28:22.253Z"
}
FieldMeaning
statusok, moved (renamed/transferred, followed automatically), not-found (deleted, private or wrong URL), blocked (HTTP 451), error, rate-limited (not checked).
healthScoreactive, stale, dead (archived or too old), unknown (no date available). healthScoreIt is the Italian label (attivo, fermo, morto).
lastCommitDateCommitter date of the latest commit on the default branch; lastCommitSource tells if pushed_at was used instead.
openIssuesGitHub's open_issues_count, which includes open pull requests.
licenseSPDX id (MIT, Apache-2.0…), NOASSERTION if GitHub cannot identify it, null if there is none.
sourceListThe list URL the repo was found in (null for repos given directly).

Other fields: description, stars, forks, pushedAt, createdAt, isFork, defaultBranch, language, topics, homepage.

Pricing (pay per event)

EventPrice
Actor start$0.005 per run
Repository checked$0.0075 per repository successfully checked (ok or moved)

Rows for unavailable, blocked and rate-limited repositories are free. Example: auditing a 300-repo awesome-list costs about $2.26. You can set a maximum cost per run in Apify; the Actor stops when it is reached.

Data and privacy

  • Data comes only from the official GitHub REST API and from the list files you provide.
  • The Actor stores repository metadata only. The only personal element is the public login of the repository owner, which is part of the repository URL. No e-mails, names of committers, avatars or follower data are collected.
  • Use of the GitHub API is subject to the GitHub Terms of Service and its API rate limits, which this Actor respects. You are responsible for how you use the output.

FAQ

Why is a repo "dead" although it had a commit last week? It is archived: archived repositories are always dead. Why did my run stop early? The GitHub rate limit was reached; see SUMMARY.rateLimit.stoppedReason, or add a token. Can it check private repositories? No. Only public repositories are reported, even if your token could see more.


Created with the help of AI · © Mike Start Games · Not affiliated with GitHub, Inc.