GitHub Repo Insights — Stars, Health Score & Stats avatar

GitHub Repo Insights — Stars, Health Score & Stats

Under maintenance

Pricing

from $0.35 / 1,000 repository profiles

Go to Apify Store
GitHub Repo Insights — Stars, Health Score & Stats

GitHub Repo Insights — Stars, Health Score & Stats

Under maintenance

Turn any GitHub repo into a structured profile: stars history, contributors, languages, dependencies, license, and a composite health score. Built for AI agents, VC diligence, and dev-tool comparison sites.

Pricing

from $0.35 / 1,000 repository profiles

Rating

0.0

(0)

Developer

Vivek Gaur

Vivek Gaur

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

22 days ago

Last modified

Share

GitHub Repository Insights — Stars, Health Score & Stats

Turn any GitHub repository URL or search query into a structured intelligence profile: stars, forks, contributors, languages, dependency manifests, license, and an automated composite Repository Health Score (0–100).

Designed for AI agents, software diligence, developer tool comparison platforms, and engineering intelligence feeds.


What this Actor does

This Actor queries the GitHub API with automated rate-limit handling and token rotation to transform repositories into structured, machine-consumable JSON data:

  • Repository Metadata: Stars, forks, open issues, watchers, primary language, topics, creation date, and last push timestamp.
  • Automated Health Score: A calculated 0–100 composite index evaluating commit freshness, open-issue-to-star ratio, and contributor diversity.
  • Language & Tech Stack: Exact byte breakdown across all repository programming languages.
  • Top Contributors: Profile URLs, usernames, and contribution counts for top committers.
  • Dependency Files: Inspects package.json, requirements.txt, pyproject.toml, Cargo.toml, and go.mod without downloading the full codebase.
  • README Summary: First 500 characters of cleaned body text for fast context embedding.

Why use this Actor

  • Computed Health Score: Unlike raw GitHub scrapers, it evaluates open source project vitality objectively so you can immediately flag unmaintained or abandoned packages.
  • No Token Required for Small Runs: Works out-of-the-box using the monorepo's shared rotation infrastructure, or you can provide high-throughput GitHub tokens via environment variables.
  • Zero Heavy Browser Overhead: Built on lightweight HTTP API queries (Octokit / REST), delivering results in milliseconds without paying for headless Chromium compute.
  • AI & RAG Ready: Clean, normalized JSON schema designed specifically for tool-calling AI agents, vector indexing, and automated due-diligence summaries.

Features

  • Dual Ingestion Modes: Provide a direct list of repository URLs / owner/repo strings, or run a GitHub search query (e.g. topic:rag stars:>1000).
  • Granular Enrichment Toggles: Enable or disable README extraction, dependency file inspection, or contributor analysis to optimize speed.
  • Deduplication & Validation: Automatically normalizes GitHub URLs, handles trailing slashes, and deduplicates inputs.
  • Pay-Per-Event Billing: Pay only for what you scrape with clear per-event limits and budget controls.

Use cases

  • Open Source Due Diligence: Venture funds and corporate M&A teams screening open-source software libraries for project longevity and maintenance risks.
  • Developer Tool Comparisons: Programmatically generate "alternative to" software matrices and tech stack directories.
  • AI Agent Context Retrieval: Provide LLM assistants with real-time dependency, license, and repository status information when writing code.
  • Recruiter & Talent Sourcing: Identify top contributors across high-growth niche libraries in AI, systems programming, and web infrastructure.

Input

FieldTypeDescriptionDefaultExample
repoUrlsArray of StringsGitHub URLs or owner/repo strings. E.g. https://github.com/vercel/next.js or facebook/react.["https://github.com/vercel/next.js"]["vercel/next.js", "facebook/react"]
searchQueryStringGitHub repository search query (used if repoUrls is empty). E.g. topic:llm stars:>500."""topic:llm stars:>500"
maxReposIntegerMaximum number of repositories to process (1 to 100).1025
includeReadmeBooleanFetch and summarize the repository README.md (first 500 characters of body text).truetrue
includeDependenciesBooleanFetch package manifests (package.json, requirements.txt, pyproject.toml, etc.).falsetrue
includeContributorsBooleanFetch the top 10 contributors and their commit volume.truetrue

Example input

{
"repoUrls": [
"https://github.com/vercel/next.js",
"https://github.com/tailwindlabs/tailwindcss"
],
"maxRepos": 10,
"includeReadme": true,
"includeDependencies": true,
"includeContributors": true
}

Output

Every analyzed repository outputs a single structured record into your default Apify dataset.

Field Definitions

  • fullName (String): Repository slug (owner/repo).
  • owner (String): Owner username or organization.
  • repo (String): Repository name.
  • description (String | null): Short description provided by repo maintainers.
  • url (String): Canonical GitHub repository URL.
  • stars (Integer): Total stargazer count.
  • forks (Integer): Total fork count.
  • openIssues (Integer): Open issues and pull requests count.
  • watchers (Integer): Subscriber/watcher count.
  • primaryLanguage (String | null): Primary detected language.
  • languages (Object): Byte count breakdown per language.
  • license (String | null): SPDX license identifier (e.g. MIT, Apache-2.0).
  • createdAt (ISO Date): Repository creation timestamp.
  • pushedAt (ISO Date): Last commit push timestamp.
  • lastCommitDate (ISO Date): Mirror of last push timestamp.
  • contributorsCount (Integer): Count of retrieved contributors.
  • topContributors (Array): Array of contributor objects { login, contributions, url }.
  • topics (Array of Strings): Repository topic tags.
  • isArchived (Boolean): Whether repository is archived/read-only.
  • isFork (Boolean): Whether repository is a fork.
  • defaultBranch (String): Default branch name (main, master).
  • readmeSummary (String | null): Cleaned plain-text preview of repository README.
  • dependencyFiles (Object | undefined): Contents of detected dependency manifest files.
  • healthScore (Integer): Composite 0–100 health score (commit recency + issue ratio + contributor diversity).
  • fetchedAt (ISO Date): Extraction timestamp.

Example output

{
"fullName": "vercel/next.js",
"owner": "vercel",
"repo": "next.js",
"description": "The React Framework",
"url": "https://github.com/vercel/next.js",
"stars": 128500,
"forks": 27100,
"openIssues": 2420,
"watchers": 128500,
"primaryLanguage": "TypeScript",
"languages": {
"TypeScript": 8942312,
"JavaScript": 521430,
"Rust": 412050
},
"license": "MIT",
"createdAt": "2016-10-05T23:32:51Z",
"pushedAt": "2026-09-28T02:15:20Z",
"lastCommitDate": "2026-09-28T02:15:20Z",
"contributorsCount": 10,
"topContributors": [
{
"login": "timneutkens",
"contributions": 3842,
"url": "https://github.com/timneutkens"
}
],
"topics": ["react", "framework", "nextjs", "ssr", "typescript"],
"isArchived": false,
"isFork": false,
"defaultBranch": "canary",
"readmeSummary": "Next.js by Vercel is the full-stack React framework for the web...",
"dependencyFiles": {
"package.json": "{\n \"name\": \"next\",\n \"version\": \"15.0.0\"...\n}"
},
"healthScore": 94,
"fetchedAt": "2026-09-28T04:10:57.053Z"
}

Pricing (Pay-Per-Event)

This Actor uses Apify Pay-Per-Event (PPE) pricing. You are charged strictly for actual usage:

Event NamePrice (USD)Charged When
actor-start$0.01Charged once when the Actor run initializes
repo-profile$0.00035Charged for each repository profile successfully extracted

Example cost: Extracting 100 repository profiles costs $0.01 (start) + (100 × $0.00035 = $0.035) = $0.045 total.


API usage

Run this Actor programmatically in Python or Node.js via the Apify Client.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
"repoUrls": ["vercel/next.js", "facebook/react"],
"includeDependencies": True,
"maxRepos": 10
}
run = client.actor("lovely_radiologist/github-repo-insights").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['fullName']} — Health Score: {item['healthScore']}/100 — Stars: {item['stars']}")

Node.js / TypeScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_API_TOKEN' });
const run = await client.actor('lovely_radiologist/github-repo-insights').call({
repoUrls: ['vercel/next.js', 'facebook/react'],
includeDependencies: true,
maxRepos: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const repo of items) {
console.log(`${repo.fullName}: Health Score ${repo.healthScore}, Stars: ${repo.stars}`);
}

Limitations

  • Search Depth: The GitHub REST API caps search query results to the top 1,000 matches.
  • Private Repositories: This Actor extracts publicly accessible GitHub repositories and does not access private organization repositories.
  • Large Manifests: Dependency manifest contents are truncated to 2,000 characters per file to keep dataset items light and memory efficient.

FAQ

How is the Health Score calculated?

The health score is a composite metric out of 100 points:

  1. Commit Recency (up to 40 pts): Awarded based on how recently code was pushed (e.g. pushed within 7 days = 40 pts, within 30 days = 30 pts, >90 days decays).
  2. Issue Ratio (up to 30 pts): Ratio of open issues to total star community size. Lower relative issue accumulation indicates better backlog triage.
  3. Contributor Diversity (up to 30 pts): Evaluates unique contributor breadth across the repository.

Do I need to provide a GitHub personal access token?

No. The Actor handles querying through built-in request pooling. If you are scraping at high volume, setting a token pool in environment variables prevents rate limiting.

Can I schedule this Actor?

Yes! Use the Apify Console Schedules tab to run weekly or daily updates on critical OSS dependencies.


For issues or questions, open an issue in the Apify Console Actor discussion tab.