# GitHub Contributors Email Scraper (`maximedupre/github-contributors`) Actor

Find contributors in public GitHub repositories or a public organization. Get contribution counts and ranks, public account details including emails when GitHub exposes them, repository context, and optional profile or commit evidence in an Apify dataset.

- **URL**: https://apify.com/maximedupre/github-contributors.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Developer tools, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.01 / 1,000 contributors

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 👥 See who contributes to public GitHub repositories

Open-source maintainers, engineering teams, and developer relations teams can use this Actor to find contributors in public GitHub repositories or a public GitHub organization. Each row connects a contributor to a repository and includes contribution count and rank, public account details, source links, and repository facts. Optional profile enrichment and public commit evidence add more context for research and review.

**Use cases**

- Build a contributor list with [**GitHub Contributors**](https://apify.com/maximedupre/github-contributors/examples/github-contributors) from public repository URLs.
- Compare rows by source with [**GitHub Contributors By Repository**](https://apify.com/maximedupre/github-contributors/examples/github-contributors-by-repository).
- Collect organization results with [**GitHub Organization Contributors**](https://apify.com/maximedupre/github-contributors/examples/github-organization-contributors).
- Review the highest-ranked accounts with [**GitHub Top Contributors**](https://apify.com/maximedupre/github-contributors/examples/github-top-contributors).
- Check contribution totals with [**GitHub Contribution Count**](https://apify.com/maximedupre/github-contributors/examples/github-contribution-count).
- Add public profile details with [**GitHub Contributor Profile**](https://apify.com/maximedupre/github-contributors/examples/github-contributor-profile).
- Export public commit email evidence with [**GitHub Contributor Emails**](https://apify.com/maximedupre/github-contributors/examples/github-contributor-emails).

#### 📊 Ranked GitHub contributor rows

**Dataset rows**

Each dataset row joins one contributor to the public repository where the contributor was found. It includes contribution count and rank, account type, profile and avatar links, public emails when GitHub reports them, and repository facts such as stars, forks, language, open issues, default branch, and archive state. Profile enrichment and commit evidence add the optional fields described below. Missing public values stay null or empty as the schema shows.

#### 🔍 Build contributor lists from public GitHub sources

**How it works**

1. Choose public repository URLs or one public GitHub organization. Use one source type per run.
2. Add contribution and account filters when needed.
3. Turn on profile enrichment or commit evidence when you need the related public fields.
4. Run the Actor and open the `dataset` output.

The Actor saves the first eligible occurrence for a submitted repository and ignores later duplicate submissions of the same repository. It does not merge later matches into the saved row. Different repositories can still produce separate rows for the same login because each row keeps its source repository.

#### ⚙️ Input

Choose `Public repositories` to add repository URLs, or choose `A GitHub organization` to enter one organization name or URL. Only the selected source is used. The Actor reads public repositories only. Profile filters work when profile enrichment is on. Commit filters and the noreply choice work when commit evidence is on.

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `discoveryMethod` | Select | Chooses public repository URLs or one public GitHub organization. |
| `repositories` | URL list | Adds public GitHub repository URLs when `Public repositories` is selected. |
| `repositories[].url` | URL | A public GitHub repository URL. |
| `organization` | String | Adds one public GitHub organization name or URL when the organization option is selected. |
| `minimumContributions` | Integer | Keeps contributors with at least this many contributions in each source repository. Leave empty to include all contributors. |
| `botAccountFilter` | Select | Keeps all accounts, excludes bot accounts, or keeps bot accounts only. |
| `maxItems` | Integer | Stops after this many contributor records. Leave empty to return all available results until the source is exhausted. A limit can make the run incomplete. |
| `includeProfileEnrichment` | Boolean | Requests public profile fields such as name, bio, company, location, website, follower counts, public repository and gist counts, hireability, account dates, organizations, and linked social accounts. |
| `profileEmailAvailability` | Select | Keeps profiles with no public email when selected. `Any` skips this filter. |
| `profileHireability` | Select | Keeps profiles by their public hireability value. `Any` skips this filter. |
| `profileLocations` | String list | Adds public location terms for profile filtering. Leave empty to skip this filter. |
| `profileLocations[]` | String | One public location term. |
| `profileLanguages` | String list | Adds public language names for profile filtering. Leave empty to skip this filter. |
| `profileLanguages[]` | String | One public language name. |
| `minimumFollowers` | Integer | Keeps enriched profiles with at least this many followers. Leave empty to skip this filter. |
| `includeCommitEvidence` | Boolean | Requests public commit-author email evidence with commit links, identifiers, author data, timestamps, message context, linked accounts, and provenance. |
| `commitBranch` | String | Uses this branch for commit evidence in every selected repository. Leave empty to use each repository's default branch. |
| `commitStartDate` | UTC date string | Includes commit evidence on or after this UTC calendar date. Leave empty for no start date. |
| `commitEndDate` | UTC date string | Includes commit evidence on or before this UTC calendar date. Leave empty for no end date. |
| `includeNoreplyAddresses` | Boolean | Includes privacy-protecting GitHub noreply addresses when commit evidence is on. Leave off to exclude them. |

The default choices use public repository URLs, include all account types, and leave profile enrichment and commit evidence off.

**Example input**

This is the public input from a successful current-beta run using the default choices:

```json
{
  "discoveryMethod": "repositories",
  "repositories": [
    {
      "url": "https://github.com/octocat/Hello-World"
    }
  ],
  "botAccountFilter": "all",
  "includeProfileEnrichment": false,
  "profileEmailAvailability": "any",
  "profileHireability": "any",
  "includeCommitEvidence": false,
  "includeNoreplyAddresses": false
}
```

#### 🧾 Output

The `dataset` output opens the saved contributor rows. Every row has `repository`, `contributor`, and `contribution`. `profile` appears when profile enrichment is requested. `commitEvidence` appears when commit evidence is requested. Both optional groups can appear together when both options are on. Null values and empty arrays mean GitHub did not expose a public value.

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `dataset` | URL | Opens the dataset that contains the saved contributor rows. |

**Core contributor row**

| Field | Type | What it does |
| --- | --- | --- |
| `repository` | Object | The public GitHub repository where this contributor was found. |
| `repository.name` | String | The repository name. |
| `repository.url` | URL | The public link for reviewing the repository. |
| `repository.owner` | String | The GitHub login of the repository owner. |
| `repository.description` | String or null | The public repository description, or null when GitHub has none. |
| `repository.language` | String or null | The main programming language, or null when it is not reported. |
| `repository.stars` | Integer | The repository star count. |
| `repository.forks` | Integer | The repository fork count. |
| `repository.openIssues` | Integer | The number of open issues reported by GitHub. |
| `repository.defaultBranch` | String or null | The repository default branch, or null when it is not reported. |
| `repository.isArchived` | Boolean | Whether GitHub marks the repository as archived. |
| `contributor` | Object | The public GitHub account associated with this repository contribution. |
| `contributor.login` | String | The contributor's public GitHub login. |
| `contributor.accountType` | String | The account type reported by GitHub: `User`, `Bot`, or `Organization`. |
| `contributor.profileUrl` | URL or null | The public GitHub profile link, or null when it is unavailable. |
| `contributor.avatarUrl` | URL or null | The public avatar link, or null when it is unavailable. |
| `contributor.emails` | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
| `contribution` | Object | The contributor's count and rank within this repository. |
| `contribution.count` | Integer | The number of contributions by this contributor in this repository. |
| `contribution.rank` | Integer | The contributor's rank in this repository's contributor results. |

**Example core row**

This complete row is from a successful current-beta run:

```json
{
  "repository": {
    "name": "runner",
    "url": "https://github.com/actions/runner",
    "owner": "actions",
    "description": "The Runner for GitHub Actions :rocket:",
    "language": "C#",
    "stars": 6224,
    "forks": 1413,
    "openIssues": 524,
    "defaultBranch": "main",
    "isArchived": false
  },
  "contributor": {
    "login": "TingluoHuang",
    "accountType": "User",
    "profileUrl": "https://github.com/TingluoHuang",
    "avatarUrl": "https://avatars.githubusercontent.com/u/1750815?v=4",
    "emails": []
  },
  "contribution": {
    "count": 310,
    "rank": 1
  }
}
```

**Profile-enriched contributor row**

This table repeats the core fields and adds the fields returned when profile enrichment is on.

| Field | Type | What it does |
| --- | --- | --- |
| `repository` | Object | The public GitHub repository where this contributor was found. |
| `repository.name` | String | The repository name. |
| `repository.url` | URL | The public link for reviewing the repository. |
| `repository.owner` | String | The GitHub login of the repository owner. |
| `repository.description` | String or null | The public repository description, or null when GitHub has none. |
| `repository.language` | String or null | The main programming language, or null when it is not reported. |
| `repository.stars` | Integer | The repository star count. |
| `repository.forks` | Integer | The repository fork count. |
| `repository.openIssues` | Integer | The number of open issues reported by GitHub. |
| `repository.defaultBranch` | String or null | The repository default branch, or null when it is not reported. |
| `repository.isArchived` | Boolean | Whether GitHub marks the repository as archived. |
| `contributor` | Object | The public GitHub account associated with this repository contribution. |
| `contributor.login` | String | The contributor's public GitHub login. |
| `contributor.accountType` | String | The account type reported by GitHub: `User`, `Bot`, or `Organization`. |
| `contributor.profileUrl` | URL or null | The public GitHub profile link, or null when it is unavailable. |
| `contributor.avatarUrl` | URL or null | The public avatar link, or null when it is unavailable. |
| `contributor.emails` | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
| `contribution` | Object | The contributor's count and rank within this repository. |
| `contribution.count` | Integer | The number of contributions by this contributor in this repository. |
| `contribution.rank` | Integer | The contributor's rank in this repository's contributor results. |
| `profile` | Object | Optional public profile details requested from GitHub. |
| `profile.name` | String or null | The public name on the contributor profile, or null when it is not set. |
| `profile.bio` | String or null | The public profile bio, or null when it is not set. |
| `profile.company` | String or null | The public company value, or null when it is not set. |
| `profile.location` | String or null | The public profile location, or null when it is not set. |
| `profile.website` | URL or null | The public profile website, or null when it is not set. |
| `profile.followers` | Integer or null | The public follower count, or null when it is unavailable. |
| `profile.publicRepositories` | Integer or null | The public repository count, or null when it is unavailable. |
| `profile.publicGists` | Integer or null | The public gist count, or null when it is unavailable. |
| `profile.hireable` | Boolean or null | The public hireability value, or null when it is not set. |
| `profile.createdAt` | Date-time string or null | When the GitHub account was created, or null when unavailable. |
| `profile.updatedAt` | Date-time string or null | When the GitHub profile was last updated, or null when unavailable. |
| `profile.organizations` | Object array | Public GitHub organizations listed on the profile. |
| `profile.organizations[].login` | String | The organization's public GitHub login. |
| `profile.organizations[].profileUrl` | URL or null | The public organization profile link, or null when unavailable. |
| `profile.organizations[].avatarUrl` | URL or null | The public organization avatar link, or null when unavailable. |
| `profile.socialAccounts` | Object array | Public social accounts linked from the profile. |
| `profile.socialAccounts[].provider` | String | The service that provides the linked account. |
| `profile.socialAccounts[].displayName` | String or null | The public display name for the linked account, or null when unavailable. |
| `profile.socialAccounts[].url` | URL or null | The public link to the linked account, or null when unavailable. |

**Example profile-enriched row**

This complete row is from a successful current-beta profile-enrichment run:

```json
{
  "repository": {
    "name": "Hello-World",
    "url": "https://github.com/octocat/Hello-World",
    "owner": "octocat",
    "description": "My first repository on GitHub!",
    "language": null,
    "stars": 3790,
    "forks": 6636,
    "openIssues": 7067,
    "defaultBranch": "master",
    "isArchived": false
  },
  "contributor": {
    "login": "Spaceghost",
    "accountType": "User",
    "profileUrl": "https://github.com/Spaceghost",
    "avatarUrl": "https://avatars.githubusercontent.com/u/251370?v=4",
    "emails": []
  },
  "contribution": {
    "count": 1,
    "rank": 1
  },
  "profile": {
    "name": "Johnneylee Jack Rollins",
    "bio": "👻👻",
    "company": null,
    "location": "UTC-8",
    "website": "https://recruit.johnneylee.com/",
    "followers": 490,
    "publicRepositories": 179,
    "publicGists": 77,
    "hireable": null,
    "createdAt": "2010-04-24T09:32:52Z",
    "updatedAt": "2026-09-01T19:49:11Z",
    "organizations": [
      {
        "login": "Velocitous",
        "profileUrl": "https://github.com/Velocitous",
        "avatarUrl": "https://avatars.githubusercontent.com/u/2405964?v=4"
      },
      {
        "login": "ArtemisInternet",
        "profileUrl": "https://github.com/ArtemisInternet",
        "avatarUrl": "https://avatars.githubusercontent.com/u/4316246?v=4"
      },
      {
        "login": "signed-form",
        "profileUrl": "https://github.com/signed-form",
        "avatarUrl": "https://avatars.githubusercontent.com/u/36942019?v=4"
      }
    ],
    "socialAccounts": []
  }
}
```

**Commit-evidence contributor row**

This table repeats the core fields and adds the fields returned when commit evidence is on.

| Field | Type | What it does |
| --- | --- | --- |
| `repository` | Object | The public GitHub repository where this contributor was found. |
| `repository.name` | String | The repository name. |
| `repository.url` | URL | The public link for reviewing the repository. |
| `repository.owner` | String | The GitHub login of the repository owner. |
| `repository.description` | String or null | The public repository description, or null when GitHub has none. |
| `repository.language` | String or null | The main programming language, or null when it is not reported. |
| `repository.stars` | Integer | The repository star count. |
| `repository.forks` | Integer | The repository fork count. |
| `repository.openIssues` | Integer | The number of open issues reported by GitHub. |
| `repository.defaultBranch` | String or null | The repository default branch, or null when it is not reported. |
| `repository.isArchived` | Boolean | Whether GitHub marks the repository as archived. |
| `contributor` | Object | The public GitHub account associated with this repository contribution. |
| `contributor.login` | String | The contributor's public GitHub login. |
| `contributor.accountType` | String | The account type reported by GitHub: `User`, `Bot`, or `Organization`. |
| `contributor.profileUrl` | URL or null | The public GitHub profile link, or null when it is unavailable. |
| `contributor.avatarUrl` | URL or null | The public avatar link, or null when it is unavailable. |
| `contributor.emails` | String array | Public contributor email addresses reported by GitHub. The array can be empty. |
| `contribution` | Object | The contributor's count and rank within this repository. |
| `contribution.count` | Integer | The number of contributions by this contributor in this repository. |
| `contribution.rank` | Integer | The contributor's rank in this repository's contributor results. |
| `commitEvidence` | Object array | Optional public commit evidence for contributor email addresses. |
| `commitEvidence[]` | Object | One public commit evidence entry. |
| `commitEvidence[].commit` | Object | The public commit and its message context. |
| `commitEvidence[].commit.sha` | String | The commit SHA reported by GitHub. |
| `commitEvidence[].commit.url` | URL | The public link for reviewing the commit. |
| `commitEvidence[].commit.message` | String | The commit message reported by GitHub. |
| `commitEvidence[].commit.authoredAt` | Date-time string or null | The time recorded for the commit author, or null when unavailable. |
| `commitEvidence[].commit.committedAt` | Date-time string or null | The time recorded for the commit, or null when unavailable. |
| `commitEvidence[].author` | Object | The author details recorded in the public commit. |
| `commitEvidence[].author.name` | String or null | The name recorded for the commit author, or null when unavailable. |
| `commitEvidence[].author.email` | String | The email address recorded for the commit author. |
| `commitEvidence[].linkedAccount` | Object or null | The public GitHub account linked to the commit author, or null when none is provided. |
| `commitEvidence[].linkedAccount.login` | String or null | The linked account's public login, or null when no login is provided. |
| `commitEvidence[].linkedAccount.profileUrl` | URL or null | The linked account's public profile link, or null when unavailable. |
| `commitEvidence[].linkedAccount.avatarUrl` | URL or null | The linked account's public avatar link, or null when unavailable. |
| `commitEvidence[].provenance` | Object | The public branch context used to find the commit evidence. |
| `commitEvidence[].provenance.branch` | String | The branch used to find the commit evidence. |

**Example commit-evidence row**

This shortened row keeps the first public commit evidence entry. The `"..."` string marks additional evidence omitted from the example.

```json
{
  "repository": {
    "name": "runner",
    "url": "https://github.com/actions/runner",
    "owner": "actions",
    "description": "The Runner for GitHub Actions :rocket:",
    "language": "C#",
    "stars": 6224,
    "forks": 1413,
    "openIssues": 524,
    "defaultBranch": "main",
    "isArchived": false
  },
  "contributor": {
    "login": "dependabot[bot]",
    "accountType": "Bot",
    "profileUrl": "https://github.com/apps/dependabot",
    "avatarUrl": "https://avatars.githubusercontent.com/in/29110?v=4",
    "emails": [
      "49699333+dependabot[bot]@users.noreply.github.com"
    ]
  },
  "contribution": {
    "count": 138,
    "rank": 2
  },
  "commitEvidence": [
    {
      "commit": {
        "sha": "fb64b9b20d56951bf30c5b7333a128bc25c2d923",
        "url": "https://github.com/actions/runner/commit/fb64b9b20d56951bf30c5b7333a128bc25c2d923",
        "message": "Bump @typescript-eslint/eslint-plugin from 8.67.0 to 8.68.0 in /src/Misc/expressionFunc/hashFiles (#4661)\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
        "authoredAt": "2026-08-28T06:49:43Z",
        "committedAt": "2026-08-28T06:49:43Z"
      },
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com"
      },
      "linkedAccount": {
        "login": "dependabot[bot]",
        "profileUrl": "https://github.com/apps/dependabot",
        "avatarUrl": "https://avatars.githubusercontent.com/in/29110?v=4"
      },
      "provenance": {
        "branch": "main"
      }
    },
    "..."
  ]
}
```

#### 💳 Pricing

**Pay per saved contributor**

This Actor uses pay-per-event pricing. The current configured price is $0.00001 for each contributor saved to the dataset. A run with no saved contributor does not create this contributor event.

#### 🔌 Integrations

**Use the dataset in your workflow**

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

Start a run in Apify Console or through the Apify API. Read the `dataset` output after the run and export the rows in an Apify-supported format.

#### ❓ FAQ

##### Can I use more than one repository URL?

Yes. Add multiple public repository URLs when `Public repositories` is selected. Each row keeps the repository where that contributor was found.

##### Can I use a GitHub organization?

Yes. Choose `A GitHub organization` and enter one public organization name or URL. The Actor finds that organization's public repositories before collecting contributors.

##### Why are GitHub contributors not showing in my run?

Check that the repository URL is public and that your contribution, account, profile, or commit filters are not too narrow. Profile filters only apply when profile enrichment is on, and commit filters only apply when commit evidence is on.

##### What does the contributor rank mean?

It is the contributor's rank in the results for that source repository. The count and rank are kept inside the `contribution` object.

##### Does this read private repositories or infer private emails?

No. It reads public GitHub repositories and keeps public email values when GitHub exposes them. It does not infer private contact data or bypass GitHub privacy settings.

##### What does profile enrichment add?

It adds public profile fields such as name, bio, company, location, website, follower counts, public repository and gist counts, hireability, account dates, organizations, and linked social accounts.

##### What does commit evidence add?

It adds public commit-author email evidence with commit links, SHAs, messages, author data, timestamps, linked accounts, and the branch used to find the commit.

##### Why are some fields null or empty?

GitHub does not expose every public value for every account or repository. The Actor keeps unavailable values as null and uses empty arrays when a list has no available values.

##### How do the profile and commit filters work?

Profile filters work only when profile enrichment is on. Branch, date, and noreply choices work only when commit evidence is on. Values for an inactive group are ignored.

##### What does leaving maximum contributor records empty do?

It returns all available results until the source is exhausted. Add a number when you want the Actor to stop after a set number of contributor records.

##### How are duplicate repositories handled?

The first eligible occurrence for a submitted repository is saved. A later submission of the same repository is ignored, and its later match is not merged into the saved row. The same login can still appear for different repositories.

##### Do I need a GitHub token?

No. This Actor works with public GitHub data without a buyer-supplied GitHub token.

### 📝 Changelog

**v0.0** (02-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~github-contributors/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [GitHub Discussions Scraper](https://apify.com/maximedupre/github-discussions). Collect public GitHub discussions to study questions around the repositories you are reviewing.
- [GitHub Release](https://apify.com/maximedupre/github-releases). Review release notes and tags for the same public repositories.
- [GitHub Security Advisories Scraper](https://apify.com/maximedupre/github-security-advisories-scraper). Check public advisories for packages in those repositories.
- [GitHub Contributors Scraper](https://apify.com/janbuchar/github-contributors-scraper). Use it when a basic contributor list is all you need.
- [GitHub Contributor Email Scraper](https://apify.com/fetch_cat/github-contributor-email-scraper). Focus on public commit-author emails and commit evidence.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `discoveryMethod` (type: `string`):

Choose how to find contributors. Public repositories use the repository URLs below. A GitHub organization first finds its public repositories.

## `repositories` (type: `array`):

Add one or more public GitHub repository URLs. Private repositories are not read. This field is used when Public repositories is selected.

## `organization` (type: `string`):

Enter one public GitHub organization name or URL. This option finds the organization's public repositories before collecting contributors. Values here are ignored when another source is selected.

## `minimumContributions` (type: `integer`):

Keep contributors with at least this many contributions in each source repository. Leave empty to include all contributors.

## `botAccountFilter` (type: `string`):

Choose which account types to keep. Include all accounts keeps both bots and people.

## `maxItems` (type: `integer`):

Stop after this many contributor records across the run. Leave empty to return all available results until the source is exhausted. A limit can make the run incomplete.

## `includeProfileEnrichment` (type: `boolean`):

Request public profile fields such as name, bio, company, location, website, follower counts, repository and gist counts, hireability, account dates, organizations, and linked social accounts.

## `profileEmailAvailability` (type: `string`):

When profile enrichment is on, keep profiles with no public email when set to No public email. Leave this at Any to skip the filter.

## `profileHireability` (type: `string`):

When profile enrichment is on, keep profiles by their public hireability value. Leave this at Any to skip this filter.

## `profileLocations` (type: `array`):

When profile enrichment is on, add one or more public location terms. Leave empty to skip this filter.

## `profileLanguages` (type: `array`):

When profile enrichment is on, add one or more public language names. Leave empty to skip this filter.

## `minimumFollowers` (type: `integer`):

When profile enrichment is on, keep profiles with at least this many followers. Leave empty to skip this filter.

## `includeCommitEvidence` (type: `boolean`):

Request public commit-author email evidence with commit links, identifiers, author data, timestamps, message context, linked accounts, and provenance.

## `commitBranch` (type: `string`):

When commit evidence is on, use this branch for every selected repository. Leave empty to use each repository's default branch. This value is ignored when commit evidence is off.

## `commitStartDate` (type: `string`):

When commit evidence is on, include commits on or after this UTC calendar date. Leave empty for no start date.

## `commitEndDate` (type: `string`):

When commit evidence is on, include commits on or before this UTC calendar date. Leave empty for no end date.

## `includeNoreplyAddresses` (type: `boolean`):

When commit evidence is on, include privacy-protecting GitHub noreply addresses. Leave off to exclude those addresses. This value is ignored when commit evidence is off.

## Actor input object example

```json
{
  "discoveryMethod": "repositories",
  "repositories": [
    {
      "url": "https://github.com/octocat/Hello-World"
    }
  ],
  "botAccountFilter": "all",
  "includeProfileEnrichment": false,
  "profileEmailAvailability": "any",
  "profileHireability": "any",
  "includeCommitEvidence": false,
  "includeNoreplyAddresses": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

Open the contributor records saved by this Actor.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "discoveryMethod": "repositories",
    "repositories": [
        {
            "url": "https://github.com/octocat/Hello-World"
        }
    ],
    "botAccountFilter": "all",
    "profileEmailAvailability": "any",
    "profileHireability": "any"
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/github-contributors").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "discoveryMethod": "repositories",
    "repositories": [{ "url": "https://github.com/octocat/Hello-World" }],
    "botAccountFilter": "all",
    "profileEmailAvailability": "any",
    "profileHireability": "any",
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/github-contributors").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "discoveryMethod": "repositories",
  "repositories": [
    {
      "url": "https://github.com/octocat/Hello-World"
    }
  ],
  "botAccountFilter": "all",
  "profileEmailAvailability": "any",
  "profileHireability": "any"
}' |
apify call maximedupre/github-contributors --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/github-contributors"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qoI7cqZdadCXy3RxX/builds/2WAW1t5l8Y1P9PUF0/openapi.json
