GitHub Repo Health Checker – Awesome-List Link Audit
Pricing
from $7.50 / 1,000 repository checkeds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
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
| Field | Type | Default | Description |
|---|---|---|---|
repos | array | – | Repositories: owner/repo, GitHub URL (any sub-page) or SSH URL. |
awesomeListUrls | array | – | Lists to read: GitHub repo URL (README), GitHub file URL (/blob/…) or raw Markdown/JSON/YAML/HTML URL. |
includeListRepo | boolean | false | Also check the list's own repository. |
maxRepos | integer | 25 without token, 1,000 with token | Max unique repos per run (max 5,000). |
githubToken | string (secret) | – | Optional GitHub token. A fine-grained token with no permissions is enough. Encrypted by Apify, never logged or output. |
checkLastCommit | boolean | true | 2 requests/repo for the real last commit on the default branch; off = 1 request/repo using pushed_at. |
maxRateLimitWaitSecs | integer | 0 | Wait for a rate-limit reset if it comes within this many seconds; otherwise stop cleanly. |
maxConcurrency | integer | 2 / 4 | Repos checked in parallel (without / with token). |
activeDays | integer | 90 | Active threshold in days. |
staleDays | integer | 365 | Stale threshold in days (must be > activeDays). |
includeErrorRows | boolean | true | Output 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"}
| Field | Meaning |
|---|---|
status | ok, moved (renamed/transferred, followed automatically), not-found (deleted, private or wrong URL), blocked (HTTP 451), error, rate-limited (not checked). |
healthScore | active, stale, dead (archived or too old), unknown (no date available). healthScoreIt is the Italian label (attivo, fermo, morto). |
lastCommitDate | Committer date of the latest commit on the default branch; lastCommitSource tells if pushed_at was used instead. |
openIssues | GitHub's open_issues_count, which includes open pull requests. |
license | SPDX id (MIT, Apache-2.0…), NOASSERTION if GitHub cannot identify it, null if there is none. |
sourceList | The 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)
| Event | Price |
|---|---|
| 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.