{
  "data": {
    "id": "32feOH3mExthh1uMd",
    "actId": "vLrV3nltsfeBNgKur",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-11-09T11:47:41.716Z",
    "finishedAt": "2026-11-09T11:47:45.079Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 3297,
      "runTimeSecs": 3.297,
      "computeUnits": 0.0036633333333333335,
      "imageSizeBytes": 318980096
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"GitHub Repository Language Breakdown Analyzer Input\",\n  \"description\": \"Pick repositories by URL, pasted list, organization, user, keyword search, or GitHub topic. Choose the repository metrics and optional language, contributor, commit and release enrichment.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"What to scrape\",\n      \"description\": \"One repository, a pasted list of repositories, every public repository in an organization or user account, a keyword search, or a GitHub topic.\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"repoDetail\",\n        \"repoList\",\n        \"orgRepos\",\n        \"userRepos\",\n        \"search\",\n        \"topicRepos\"\n      ],\n      \"enumTitles\": [\n        \"One repository\",\n        \"A list of repositories\",\n        \"Organization repositories\",\n        \"User repositories\",\n        \"Keyword search\",\n        \"Topic search\"\n      ],\n      \"default\": \"orgRepos\",\n      \"prefill\": \"repoDetail\"\n    },\n    \"repoFullName\": {\n      \"title\": \"Repository (one repo)\",\n      \"description\": \"Repository for One repository mode. Accepts owner/repo, a full https://github.com/owner/repo URL, or the git@github.com:owner/repo.git form.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"microsoft/vscode\",\n      \"example\": \"https://github.com/facebook/react\"\n    },\n    \"repoFullNames\": {\n      \"title\": \"Repositories (list)\",\n      \"description\": \"Repositories for A list of repositories mode. Accepts owner/repo strings and full GitHub URLs; duplicates are removed and order is preserved before sorting.\",\n      \"type\": \"array\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [],\n      \"example\": [\n        \"microsoft/vscode\",\n        \"https://github.com/facebook/react\"\n      ]\n    },\n    \"org\": {\n      \"title\": \"Organization\",\n      \"description\": \"GitHub organization login for Organization repositories mode.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"default\": \"microsoft\",\n      \"prefill\": \"microsoft\"\n    },\n    \"username\": {\n      \"title\": \"Username\",\n      \"description\": \"GitHub user login for User repositories mode.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"example\": \"torvalds\"\n    },\n    \"searchQuery\": {\n      \"title\": \"Search query\",\n      \"description\": \"Keyword search for Keyword search mode. GitHub qualifiers work, for example stars:>1000, language:python, org:vercel, topic:llm, or pushed:>2025-01-01.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"default\": \"stars:>1000\",\n      \"prefill\": \"stars:>1000\"\n    },\n    \"topic\": {\n      \"title\": \"GitHub topic\",\n      \"description\": \"Topic slug for Topic search mode, for example machine-learning, web-scraping, or cli.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"default\": \"machine-learning\",\n      \"prefill\": \"machine-learning\"\n    },\n    \"language\": {\n      \"title\": \"Primary language\",\n      \"description\": \"Only return repositories whose primary language matches this name, for example Python, TypeScript, Rust, or Jupyter Notebook. Applied as a GitHub search qualifier where possible, otherwise as a client-side filter.\",\n      \"type\": \"string\",\n      \"editor\": \"textfield\",\n      \"example\": \"Rust\"\n    },\n    \"includeForks\": {\n      \"title\": \"Include forked repositories\",\n      \"description\": \"Discovery modes skip forks by default. Turn this on to include forked repositories in organization, user, search, and topic results.\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeArchived\": {\n      \"title\": \"Include archived repositories\",\n      \"description\": \"Turn this off to drop archived repositories from discovery results.\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"sortBy\": {\n      \"title\": \"Sort results by\",\n      \"description\": \"Sort order for discovery results. Stars and forks work through GitHub search; created, pushed, and name use the organization/user listing. Keyword-only sort options fall back to recently updated.\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"bestMatch\",\n        \"stars\",\n        \"forks\",\n        \"updated\",\n        \"created\",\n        \"pushed\",\n        \"fullName\"\n      ],\n      \"enumTitles\": [\n        \"Best match\",\n        \"Stars\",\n        \"Forks\",\n        \"Recently updated\",\n        \"Recently created\",\n        \"Recently pushed\",\n        \"Repository name\"\n      ],\n      \"default\": \"bestMatch\",\n      \"prefill\": \"bestMatch\"\n    },\n    \"sortOrder\": {\n      \"title\": \"Sort direction\",\n      \"description\": \"Descending (highest or newest first) or ascending.\",\n      \"type\": \"string\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"desc\",\n        \"asc\"\n      ],\n      \"enumTitles\": [\n        \"Descending\",\n        \"Ascending\"\n      ],\n      \"default\": \"desc\",\n      \"prefill\": \"desc\"\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum repositories\",\n      \"description\": \"Hard cap on repository records. GitHub search itself stops at 1,000 results.\",\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"default\": 20,\n      \"prefill\": 1\n    },\n    \"includeLanguages\": {\n      \"title\": \"Include language breakdown\",\n      \"description\": \"Fetch byte counts per language and compute percentage shares, up to one extra API request per repository.\",\n      \"type\": \"boolean\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeContributors\": {\n      \"title\": \"Include top contributors\",\n      \"description\": \"Fetch ranked contributors and their contribution counts, up to one extra API request per repository.\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"contributorsLimit\": {\n      \"title\": \"Contributors per repository\",\n      \"description\": \"Maximum ranked contributors to keep when contributor enrichment is on.\",\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"default\": 10,\n      \"prefill\": 10\n    },\n    \"includeCommitStats\": {\n      \"title\": \"Include commit statistics\",\n      \"description\": \"Fetch weekly commit activity, participation, code frequency, and punch-card data, up to four extra API requests per repository.\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeReleases\": {\n      \"title\": \"Include releases\",\n      \"description\": \"Fetch recent releases with tag, date, asset count, and download totals, up to one extra API request per repository.\",\n      \"type\": \"boolean\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"releasesLimit\": {\n      \"title\": \"Releases per repository\",\n      \"description\": \"Maximum recent releases to keep when release enrichment is on.\",\n      \"type\": \"integer\",\n      \"minimum\": 1,\n      \"maximum\": 30,\n      \"default\": 5,\n      \"prefill\": 5\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# GitHub Repository Language Breakdown Analyzer\n\nGitHub shows one primary-language badge per repository, which hides the real mix of code inside. This actor reads GitHub's public REST API and returns each repository with byte counts and percentage shares for every detected language, plus optional ranked contributors, weekly commit statistics, and release history. Pick repositories one at a time, paste a list, sweep an organization or user account, or discover them by keyword or topic. No API token, login, or proxy is needed.\n\n## What this actor does\n\n- **Six ways to choose repositories:** one repository, a pasted list, an organization, a user account, a GitHub keyword search, or a topic search\n- **Language detail:** byte counts per language beside the existing percentage breakdown, with the primary language and total analyzed bytes\n- **Contributor rankings:** top contributors with public profile links and contribution counts, capped by your chosen limit\n- **Commit statistics:** 52-week commit activity, all/owner weekly participation, weekly additions and deletions, and the weekday/hour punch card\n- **Release history:** recent releases with tag, date, asset count, and total asset downloads\n- **Discovery controls:** primary-language filter, fork and archive filters, sort field, sort direction, and a hard result cap\n- Empty values are omitted from each record, so a field only appears when GitHub actually reports it\n\n## Output per repository\n\n- `repoId`, `repoName`, `fullName` — numeric ID, short name, and `owner/repo`\n- `owner`, `ownerId`, `ownerType`, `ownerUrl`, `ownerAvatarUrl` — owner identity and public links\n- `description` — repository description, capped at 300 characters\n- `homepage`, `repoUrl`, `cloneUrl`, `gitUrl`, `sshUrl` — project and clone links\n- `language` — GitHub's single primary-language label\n- `languageBytes` — bytes of code per detected language, largest first\n- `languagesBreakdown` — percentage share per language, rounded to two decimals\n- `languageCount`, `totalLanguageBytes` — number of detected languages and total bytes analyzed\n- `stars`, `forks`, `watchers`, `networkCount`, `openIssues` — popularity and issue counts; `watchers` is the real subscriber count when GitHub includes it\n- `sizeKb`, `topics[]`, `topicsCount` — repository size and topic tags\n- `defaultBranch`, `visibility` — default branch and public visibility\n- `isForked`, `isArchived`, `isDisabled`, `isTemplate`, `isPrivate`, `allowForking` — repository state flags\n- `hasIssues`, `hasProjects`, `hasWiki`, `hasPages`, `hasDownloads`, `hasDiscussions`, `hasPullRequests` — enabled feature flags\n- `createdAt`, `updatedAt`, `pushedAt` — ISO timestamps for creation, metadata update, and last push\n- `license`, `licenseSpdx`, `licenseKey` — declared license name, SPDX identifier, and key\n- `score` — GitHub search relevance score, present in keyword and topic results\n- `contributors[]` — ranked contributors with `login`, `name`, `email`, `contributorId`, `type`, `contributions`, `avatarUrl`, `profileUrl`, and `isAnonymous` for anonymous entries\n- `contributorCount` — number of contributor rows returned\n- `commitActivity[]` — 52 weekly rows with `weekStart`, `total`, and seven daily counts\n- `commitActivityTotalLastYear` — total commits in the activity window\n- `weeklyParticipation` — `all` and `owner` weekly commit counts\n- `participationTotalLastYear` — sum of the all-contributor participation series\n- `codeFrequency[]` — weekly `additions` and `deletions`\n- `punchCard[]` — `day`, `hour`, and `commits` slots\n- `releases[]` — recent releases with `tagName`, `name`, `publishedAt`, `createdAt`, `url`, `isDraft`, `isPrerelease`, `author`, `assetCount`, and `downloadCount`\n- `releaseCount`, `latestRelease` — number of releases returned and the newest one\n- `recordType` — always `github_repo`\n- `scrapedAt` — UTC timestamp when the record was collected\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `orgRepos` | `repoDetail`, `repoList`, `orgRepos`, `userRepos`, `search`, or `topicRepos` |\n| `repoFullName` | string | – | Repository for `repoDetail`; accepts `owner/repo` or a GitHub URL |\n| `repoFullNames` | array | – | Repositories for `repoList`; accepts names and URLs |\n| `org` | string | `microsoft` | Organization login for `orgRepos` |\n| `username` | string | – | User login for `userRepos` |\n| `searchQuery` | string | `stars:>1000` | Keyword or qualifier query for `search` |\n| `topic` | string | `machine-learning` | Topic slug for `topicRepos` |\n| `language` | string | – | Keep repositories whose primary language matches this name; applies to every mode, including named repositories |\n| `includeForks` | boolean | `false` | Include forks in discovery results |\n| `includeArchived` | boolean | `true` | Include archived repositories in discovery results |\n| `sortBy` | string | `bestMatch` | `bestMatch`, `stars`, `forks`, `updated`, `created`, `pushed`, or `fullName` |\n| `sortOrder` | string | `desc` | `desc` or `asc` |\n| `maxItems` | integer | `20` | Hard cap on repository records (1–1000) |\n| `includeLanguages` | boolean | `true` | Fetch language bytes and percentages |\n| `includeContributors` | boolean | `false` | Fetch ranked contributors |\n| `contributorsLimit` | integer | `10` | Contributors to keep per repository (1–100) |\n| `includeCommitStats` | boolean | `false` | Fetch commit activity, participation, code frequency, and punch card |\n| `includeReleases` | boolean | `false` | Fetch recent releases |\n| `releasesLimit` | integer | `5` | Releases to keep per repository (1–30) |\n\n### Example: one repository with every enrichment\n\n```json\n{\n  \"mode\": \"repoDetail\",\n  \"repoFullName\": \"microsoft/vscode\",\n  \"includeLanguages\": true,\n  \"includeContributors\": true,\n  \"contributorsLimit\": 10,\n  \"includeCommitStats\": true,\n  \"includeReleases\": true,\n  \"releasesLimit\": 5\n}\n```\n\n### Example: a TypeScript-heavy organization sweep\n\n```json\n{\n  \"mode\": \"orgRepos\",\n  \"org\": \"vercel\",\n  \"language\": \"TypeScript\",\n  \"includeForks\": false,\n  \"includeArchived\": false,\n  \"sortBy\": \"stars\",\n  \"maxItems\": 50\n}\n```\n\n### Example: discover popular Python repositories\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"web scraping stars:>5000\",\n  \"language\": \"Python\",\n  \"sortBy\": \"stars\",\n  \"sortOrder\": \"desc\",\n  \"maxItems\": 30,\n  \"includeLanguages\": true\n}\n```\n\n### Example: compare a pasted repository list\n\n```json\n{\n  \"mode\": \"repoList\",\n  \"repoFullNames\": [\n    \"facebook/react\",\n    \"https://github.com/vercel/next.js\",\n    \"git@github.com:sveltejs/svelte.git\"\n  ],\n  \"includeLanguages\": true,\n  \"includeContributors\": true,\n  \"contributorsLimit\": 5,\n  \"sortBy\": \"stars\",\n  \"sortOrder\": \"desc\"\n}\n```\n\n## Use cases\n\n- **Tech due diligence** — check what languages an acquisition target or vendor actually ships, not just its marketing page\n- **Engineering benchmarking** — compare language mix, contributor depth, and commit cadence across competitor organizations\n- **Open-source health checks** — review release rhythm, weekly participation, and top contributor concentration before adopting a dependency\n- **Developer research** — find repositories in a niche by topic or keyword and rank them by stars or forks\n- **Portfolio monitoring** — paste a watchlist of repositories and track stars, forks, language drift, and releases over time\n- **License audits** — scan an organization's repositories for declared licenses and SPDX identifiers\n\n## FAQ\n\n**Do I need a GitHub token?** No. The actor uses GitHub's public endpoints without authentication. GitHub allows 60 unauthenticated core requests per hour per IP and 10 search requests per minute. When that budget runs out, the actor returns the repository records it already collected and tells you which enrichment was skipped.\n\n**Why are some language fields missing?** Repositories with no analyzed code — documentation collections, awesome lists, empty repositories — genuinely have no language bytes on GitHub. The field is omitted rather than filled with a zero or a guess.\n\n**What counts as a contributor?** GitHub's ranked contributor list groups commits by linked GitHub account and includes anonymous author entries when they are the only match. The list is capped by `contributorsLimit`, so `contributorCount` is the number returned, not necessarily every person who ever committed.\n\n**Why did a big repository return no code-frequency data?** GitHub refuses code-frequency statistics for repositories with more than 10,000 commits. Other commit statistics still return when available.\n\n**Why is `commitActivity` sometimes absent?** GitHub computes statistics lazily and can return a temporary \"accepted\" response for a repository it has not analyzed recently. The actor retries twice with a short delay; if the data is still pending it omits the field instead of fabricating it.\n\n**What happens with more than 1,000 search results?** GitHub's search API stops at 1,000 matches. The actor reports the cap in the run status; narrow the query, split it by date or language, or use the organization/user modes, which paginate the full repository list.\n\n**Are forks included by default?** No. Discovery modes skip forks unless `includeForks` is on. When you request a specific repository by name or URL, that repository is returned even if it is a fork, because you named it explicitly. The primary-language filter still applies to named repositories.\n\n**Why does sorting by stars sometimes fall back to recently updated?** GitHub's organization and user listing endpoints sort by creation, update, push, or name, but not stars or forks. For those two sort options the actor switches to GitHub's repository search, which supports star and fork ranking and is capped at 1,000 results. Keyword-only sort choices that search does not support fall back to recently updated, and the run status says so.\n\n**Can I fetch private repositories?** No. Only public repositories and public metadata are reachable without credentials.\n\n**Is this affiliated with GitHub?** No. This is an independent, third-party actor built on GitHub's public REST API; it is not operated by or affiliated with GitHub, Inc.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "github-repository-language-breakdown-analyzer",
      "title": "GitHub Repository Language Breakdown Analyzer",
      "description": "Analyze public GitHub repositories by URL, list, organization, user, keyword, or topic. Get language byte counts and percentage shares, stars, forks, topics, licenses, ranked contributors, commit activity, and releases without an API token.",
      "version": "2.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "# GitHub Repository Language Breakdown Analyzer\n\nGitHub shows one primary-language badge per repository, which hides the real mix of code inside. This actor reads GitHub's public REST API and returns each repository with byte counts and percentage shares for every detected language, plus optional ranked contributors, weekly commit statistics, and release history. Pick repositories one at a time, paste a list, sweep an organization or user account, or discover them by keyword or topic. No API token, login, or proxy is needed.\n\n## What this actor does\n\n- **Six ways to choose repositories:** one repository, a pasted list, an organization, a user account, a GitHub keyword search, or a topic search\n- **Language detail:** byte counts per language beside the existing percentage breakdown, with the primary language and total analyzed bytes\n- **Contributor rankings:** top contributors with public profile links and contribution counts, capped by your chosen limit\n- **Commit statistics:** 52-week commit activity, all/owner weekly participation, weekly additions and deletions, and the weekday/hour punch card\n- **Release history:** recent releases with tag, date, asset count, and total asset downloads\n- **Discovery controls:** primary-language filter, fork and archive filters, sort field, sort direction, and a hard result cap\n- Empty values are omitted from each record, so a field only appears when GitHub actually reports it\n\n## Output per repository\n\n- `repoId`, `repoName`, `fullName` — numeric ID, short name, and `owner/repo`\n- `owner`, `ownerId`, `ownerType`, `ownerUrl`, `ownerAvatarUrl` — owner identity and public links\n- `description` — repository description, capped at 300 characters\n- `homepage`, `repoUrl`, `cloneUrl`, `gitUrl`, `sshUrl` — project and clone links\n- `language` — GitHub's single primary-language label\n- `languageBytes` — bytes of code per detected language, largest first\n- `languagesBreakdown` — percentage share per language, rounded to two decimals\n- `languageCount`, `totalLanguageBytes` — number of detected languages and total bytes analyzed\n- `stars`, `forks`, `watchers`, `networkCount`, `openIssues` — popularity and issue counts; `watchers` is the real subscriber count when GitHub includes it\n- `sizeKb`, `topics[]`, `topicsCount` — repository size and topic tags\n- `defaultBranch`, `visibility` — default branch and public visibility\n- `isForked`, `isArchived`, `isDisabled`, `isTemplate`, `isPrivate`, `allowForking` — repository state flags\n- `hasIssues`, `hasProjects`, `hasWiki`, `hasPages`, `hasDownloads`, `hasDiscussions`, `hasPullRequests` — enabled feature flags\n- `createdAt`, `updatedAt`, `pushedAt` — ISO timestamps for creation, metadata update, and last push\n- `license`, `licenseSpdx`, `licenseKey` — declared license name, SPDX identifier, and key\n- `score` — GitHub search relevance score, present in keyword and topic results\n- `contributors[]` — ranked contributors with `login`, `name`, `email`, `contributorId`, `type`, `contributions`, `avatarUrl`, `profileUrl`, and `isAnonymous` for anonymous entries\n- `contributorCount` — number of contributor rows returned\n- `commitActivity[]` — 52 weekly rows with `weekStart`, `total`, and seven daily counts\n- `commitActivityTotalLastYear` — total commits in the activity window\n- `weeklyParticipation` — `all` and `owner` weekly commit counts\n- `participationTotalLastYear` — sum of the all-contributor participation series\n- `codeFrequency[]` — weekly `additions` and `deletions`\n- `punchCard[]` — `day`, `hour`, and `commits` slots\n- `releases[]` — recent releases with `tagName`, `name`, `publishedAt`, `createdAt`, `url`, `isDraft`, `isPrerelease`, `author`, `assetCount`, and `downloadCount`\n- `releaseCount`, `latestRelease` — number of releases returned and the newest one\n- `recordType` — always `github_repo`\n- `scrapedAt` — UTC timestamp when the record was collected\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `orgRepos` | `repoDetail`, `repoList`, `orgRepos`, `userRepos`, `search`, or `topicRepos` |\n| `repoFullName` | string | – | Repository for `repoDetail`; accepts `owner/repo` or a GitHub URL |\n| `repoFullNames` | array | – | Repositories for `repoList`; accepts names and URLs |\n| `org` | string | `microsoft` | Organization login for `orgRepos` |\n| `username` | string | – | User login for `userRepos` |\n| `searchQuery` | string | `stars:>1000` | Keyword or qualifier query for `search` |\n| `topic` | string | `machine-learning` | Topic slug for `topicRepos` |\n| `language` | string | – | Keep repositories whose primary language matches this name; applies to every mode, including named repositories |\n| `includeForks` | boolean | `false` | Include forks in discovery results |\n| `includeArchived` | boolean | `true` | Include archived repositories in discovery results |\n| `sortBy` | string | `bestMatch` | `bestMatch`, `stars`, `forks`, `updated`, `created`, `pushed`, or `fullName` |\n| `sortOrder` | string | `desc` | `desc` or `asc` |\n| `maxItems` | integer | `20` | Hard cap on repository records (1–1000) |\n| `includeLanguages` | boolean | `true` | Fetch language bytes and percentages |\n| `includeContributors` | boolean | `false` | Fetch ranked contributors |\n| `contributorsLimit` | integer | `10` | Contributors to keep per repository (1–100) |\n| `includeCommitStats` | boolean | `false` | Fetch commit activity, participation, code frequency, and punch card |\n| `includeReleases` | boolean | `false` | Fetch recent releases |\n| `releasesLimit` | integer | `5` | Releases to keep per repository (1–30) |\n\n### Example: one repository with every enrichment\n\n```json\n{\n  \"mode\": \"repoDetail\",\n  \"repoFullName\": \"microsoft/vscode\",\n  \"includeLanguages\": true,\n  \"includeContributors\": true,\n  \"contributorsLimit\": 10,\n  \"includeCommitStats\": true,\n  \"includeReleases\": true,\n  \"releasesLimit\": 5\n}\n```\n\n### Example: a TypeScript-heavy organization sweep\n\n```json\n{\n  \"mode\": \"orgRepos\",\n  \"org\": \"vercel\",\n  \"language\": \"TypeScript\",\n  \"includeForks\": false,\n  \"includeArchived\": false,\n  \"sortBy\": \"stars\",\n  \"maxItems\": 50\n}\n```\n\n### Example: discover popular Python repositories\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQuery\": \"web scraping stars:>5000\",\n  \"language\": \"Python\",\n  \"sortBy\": \"stars\",\n  \"sortOrder\": \"desc\",\n  \"maxItems\": 30,\n  \"includeLanguages\": true\n}\n```\n\n### Example: compare a pasted repository list\n\n```json\n{\n  \"mode\": \"repoList\",\n  \"repoFullNames\": [\n    \"facebook/react\",\n    \"https://github.com/vercel/next.js\",\n    \"git@github.com:sveltejs/svelte.git\"\n  ],\n  \"includeLanguages\": true,\n  \"includeContributors\": true,\n  \"contributorsLimit\": 5,\n  \"sortBy\": \"stars\",\n  \"sortOrder\": \"desc\"\n}\n```\n\n## Use cases\n\n- **Tech due diligence** — check what languages an acquisition target or vendor actually ships, not just its marketing page\n- **Engineering benchmarking** — compare language mix, contributor depth, and commit cadence across competitor organizations\n- **Open-source health checks** — review release rhythm, weekly participation, and top contributor concentration before adopting a dependency\n- **Developer research** — find repositories in a niche by topic or keyword and rank them by stars or forks\n- **Portfolio monitoring** — paste a watchlist of repositories and track stars, forks, language drift, and releases over time\n- **License audits** — scan an organization's repositories for declared licenses and SPDX identifiers\n\n## FAQ\n\n**Do I need a GitHub token?** No. The actor uses GitHub's public endpoints without authentication. GitHub allows 60 unauthenticated core requests per hour per IP and 10 search requests per minute. When that budget runs out, the actor returns the repository records it already collected and tells you which enrichment was skipped.\n\n**Why are some language fields missing?** Repositories with no analyzed code — documentation collections, awesome lists, empty repositories — genuinely have no language bytes on GitHub. The field is omitted rather than filled with a zero or a guess.\n\n**What counts as a contributor?** GitHub's ranked contributor list groups commits by linked GitHub account and includes anonymous author entries when they are the only match. The list is capped by `contributorsLimit`, so `contributorCount` is the number returned, not necessarily every person who ever committed.\n\n**Why did a big repository return no code-frequency data?** GitHub refuses code-frequency statistics for repositories with more than 10,000 commits. Other commit statistics still return when available.\n\n**Why is `commitActivity` sometimes absent?** GitHub computes statistics lazily and can return a temporary \"accepted\" response for a repository it has not analyzed recently. The actor retries twice with a short delay; if the data is still pending it omits the field instead of fabricating it.\n\n**What happens with more than 1,000 search results?** GitHub's search API stops at 1,000 matches. The actor reports the cap in the run status; narrow the query, split it by date or language, or use the organization/user modes, which paginate the full repository list.\n\n**Are forks included by default?** No. Discovery modes skip forks unless `includeForks` is on. When you request a specific repository by name or URL, that repository is returned even if it is a fork, because you named it explicitly. The primary-language filter still applies to named repositories.\n\n**Why does sorting by stars sometimes fall back to recently updated?** GitHub's organization and user listing endpoints sort by creation, update, push, or name, but not stars or forks. For those two sort options the actor switches to GitHub's repository search, which supports star and fork ranking and is capped at 1,000 results. Keyword-only sort choices that search does not support fall back to recently updated, and the run status says so.\n\n**Can I fetch private repositories?** No. Only public repositories and public metadata are reachable without credentials.\n\n**Is this affiliated with GitHub?** No. This is an independent, third-party actor built on GitHub's public REST API; it is not operated by or affiliated with GitHub, Inc.\n",
      "input": {
        "title": "GitHub Repository Language Breakdown Analyzer Input",
        "description": "Pick repositories by URL, pasted list, organization, user, keyword search, or GitHub topic. Choose the repository metrics and optional language, contributor, commit and release enrichment.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "What to scrape",
            "description": "One repository, a pasted list of repositories, every public repository in an organization or user account, a keyword search, or a GitHub topic.",
            "type": "string",
            "editor": "select",
            "enum": [
              "repoDetail",
              "repoList",
              "orgRepos",
              "userRepos",
              "search",
              "topicRepos"
            ],
            "enumTitles": [
              "One repository",
              "A list of repositories",
              "Organization repositories",
              "User repositories",
              "Keyword search",
              "Topic search"
            ],
            "default": "orgRepos",
            "prefill": "repoDetail"
          },
          "repoFullName": {
            "title": "Repository (one repo)",
            "description": "Repository for One repository mode. Accepts owner/repo, a full https://github.com/owner/repo URL, or the git@github.com:owner/repo.git form.",
            "type": "string",
            "editor": "textfield",
            "prefill": "microsoft/vscode",
            "example": "https://github.com/facebook/react"
          },
          "repoFullNames": {
            "title": "Repositories (list)",
            "description": "Repositories for A list of repositories mode. Accepts owner/repo strings and full GitHub URLs; duplicates are removed and order is preserved before sorting.",
            "type": "array",
            "editor": "stringList",
            "default": [],
            "prefill": [],
            "example": [
              "microsoft/vscode",
              "https://github.com/facebook/react"
            ]
          },
          "org": {
            "title": "Organization",
            "description": "GitHub organization login for Organization repositories mode.",
            "type": "string",
            "editor": "textfield",
            "default": "microsoft",
            "prefill": "microsoft"
          },
          "username": {
            "title": "Username",
            "description": "GitHub user login for User repositories mode.",
            "type": "string",
            "editor": "textfield",
            "example": "torvalds"
          },
          "searchQuery": {
            "title": "Search query",
            "description": "Keyword search for Keyword search mode. GitHub qualifiers work, for example stars:>1000, language:python, org:vercel, topic:llm, or pushed:>2025-01-01.",
            "type": "string",
            "editor": "textfield",
            "default": "stars:>1000",
            "prefill": "stars:>1000"
          },
          "topic": {
            "title": "GitHub topic",
            "description": "Topic slug for Topic search mode, for example machine-learning, web-scraping, or cli.",
            "type": "string",
            "editor": "textfield",
            "default": "machine-learning",
            "prefill": "machine-learning"
          },
          "language": {
            "title": "Primary language",
            "description": "Only return repositories whose primary language matches this name, for example Python, TypeScript, Rust, or Jupyter Notebook. Applied as a GitHub search qualifier where possible, otherwise as a client-side filter.",
            "type": "string",
            "editor": "textfield",
            "example": "Rust"
          },
          "includeForks": {
            "title": "Include forked repositories",
            "description": "Discovery modes skip forks by default. Turn this on to include forked repositories in organization, user, search, and topic results.",
            "type": "boolean",
            "default": false,
            "prefill": false
          },
          "includeArchived": {
            "title": "Include archived repositories",
            "description": "Turn this off to drop archived repositories from discovery results.",
            "type": "boolean",
            "default": true,
            "prefill": true
          },
          "sortBy": {
            "title": "Sort results by",
            "description": "Sort order for discovery results. Stars and forks work through GitHub search; created, pushed, and name use the organization/user listing. Keyword-only sort options fall back to recently updated.",
            "type": "string",
            "editor": "select",
            "enum": [
              "bestMatch",
              "stars",
              "forks",
              "updated",
              "created",
              "pushed",
              "fullName"
            ],
            "enumTitles": [
              "Best match",
              "Stars",
              "Forks",
              "Recently updated",
              "Recently created",
              "Recently pushed",
              "Repository name"
            ],
            "default": "bestMatch",
            "prefill": "bestMatch"
          },
          "sortOrder": {
            "title": "Sort direction",
            "description": "Descending (highest or newest first) or ascending.",
            "type": "string",
            "editor": "select",
            "enum": [
              "desc",
              "asc"
            ],
            "enumTitles": [
              "Descending",
              "Ascending"
            ],
            "default": "desc",
            "prefill": "desc"
          },
          "maxItems": {
            "title": "Maximum repositories",
            "description": "Hard cap on repository records. GitHub search itself stops at 1,000 results.",
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "default": 20,
            "prefill": 1
          },
          "includeLanguages": {
            "title": "Include language breakdown",
            "description": "Fetch byte counts per language and compute percentage shares, up to one extra API request per repository.",
            "type": "boolean",
            "default": true,
            "prefill": true
          },
          "includeContributors": {
            "title": "Include top contributors",
            "description": "Fetch ranked contributors and their contribution counts, up to one extra API request per repository.",
            "type": "boolean",
            "default": false,
            "prefill": false
          },
          "contributorsLimit": {
            "title": "Contributors per repository",
            "description": "Maximum ranked contributors to keep when contributor enrichment is on.",
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 10,
            "prefill": 10
          },
          "includeCommitStats": {
            "title": "Include commit statistics",
            "description": "Fetch weekly commit activity, participation, code frequency, and punch-card data, up to four extra API requests per repository.",
            "type": "boolean",
            "default": false,
            "prefill": false
          },
          "includeReleases": {
            "title": "Include releases",
            "description": "Fetch recent releases with tag, date, asset count, and download totals, up to one extra API request per repository.",
            "type": "boolean",
            "default": false,
            "prefill": false
          },
          "releasesLimit": {
            "title": "Releases per repository",
            "description": "Maximum recent releases to keep when release enrichment is on.",
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "default": 5,
            "prefill": 5
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "GitHub Repository Language Breakdown Analyzer Output",
        "description": "Repository records with language byte counts and percentage shares, owner and repository metadata, optional contributors and commit statistics, optional releases, and URLs.",
        "properties": {
          "results": {
            "type": "string",
            "title": "GitHub repositories",
            "description": "Dataset containing all scraped GitHub repository records.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 1800,
        "memoryMbytes": 1024
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "GitHub repositories",
              "transformation": {
                "fields": [
                  "fullName",
                  "language",
                  "languagesBreakdown",
                  "stars",
                  "forks",
                  "contributorCount",
                  "topics",
                  "pushedAt",
                  "repoUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "2.0.1",
    "imageDigest": "44b7d36e1069dee36d95436b71f96eb5a4c8a76e0ef59569cfbdd79ce1d17a06",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "2.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.0036633333333333335
    }
  }
}