> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peoplecontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub Webset

> Access enriched GitHub user data with personal emails, LinkedIn links, and comprehensive activity

## Overview

The GitHub Webset provides enriched profile data for every active GitHub user, combining raw GitHub data with additional fields we've linked or normalized: full name parsing, personal emails, and LinkedIn profile mappings.

<Info>
  **Dataset Size**: \~63M+ GitHub users\
  **Refresh Rate**: Monthly\
  **LinkedIn Mappings**: \~7.8M profiles
</Info>

***

## What's Included

The GitHub Webset enriches standard GitHub profile data with:

### Personal Information

* **Name parsing** - Full name, first, middle, and last name extracted from various sources
* **Personal emails** - Email addresses beyond what's publicly visible on GitHub
* **Location data** - Structured location information (city, state, country, continent)

### Professional Data

* **LinkedIn mapping** - Connected LinkedIn profiles for \~7.8M GitHub users
* **Work information** - Current company, position, and work history (when available)
* **Contact details** - Work emails, school emails, and other contact methods

### GitHub Activity

* **Repositories** - All public repos with metadata (stars, forks, topics, languages)
* **Commits** - Recent commit activity across repositories
* **Stars** - Repositories starred by the user
* **Issues** - Issues created or commented on
* **Social graph** - Followers and following accounts

***

## Quick Start Example

Here's a minimal example to get started:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.peoplecontext.com/v1/person/enrich" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"github": "torvalds", "websets": ["github"]}'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.peoplecontext.com/v1/person/enrich",
      headers={
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
      },
      json={"github": "torvalds", "websets": ["github"]}
  )

  data = response.json()
  person = data.get("person", {})
  github = person.get("github", {})
  if github:
      print(f"Found: {github.get('full_name')}")
      print(f"Emails: {github.get('emails')}")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://api.peoplecontext.com/v1/person/enrich',
    {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        github: 'torvalds',
        websets: ['github']
      })
    }
  );

  const data = await response.json();
  const github = data.person?.github;
  if (github) {
    console.log(`Found: ${github.full_name}`);
    console.log(`Emails: ${github.emails}`);
  }
  ```
</CodeGroup>

***

## Response Structure

Here's what a typical response looks like (trimmed for clarity):

```json theme={null}
{
  "person": {
    "github": {
      "github_username": "torvalds",
      "full_name": "Linus Torvalds",
      "names": ["Linus Torvalds"],
      "emails": ["torvalds@example.com"],
      "bio": "Creator of Linux and Git",
      "location": "Portland, OR",
      "company": "@linuxfoundation",
      "followers": 180000,
      "following": 0,
      "public_repos": 6,
      "repos": [
        {
          "full_name": "torvalds/linux",
          "language": "C",
          "stargazers_count": 150000,
          "description": "Linux kernel source tree"
        }
      ]
    }
  },
  "websets_matched": ["github"]
}
```

For the complete schema, see the [API Reference](/api-reference/person/enrich).

***

## Data Schema

The GitHub webset returns enriched profile data with the following structure:

```json theme={null}
{
  "user_id": "1024025",
  "github_username": "torvalds",
  "github_url": "https://github.com/torvalds",
  "full_name": "Linus Torvalds",
  "first_name": "Linus",
  "last_name": "Torvalds",
  "names": ["Linus Torvalds"],
  "emails": ["torvalds@linux-foundation.org"],
  "email": "torvalds@linux-foundation.org",
  "bio": "Creator of Linux and Git",
  "location": "Portland, OR",
  "location_canonical": {
    "city": "Portland",
    "state": "Oregon",
    "country": "United States",
    "country_code": "US",
    "latitude": 45.5152,
    "longitude": -122.6784
  },
  "company": "@linuxfoundation",
  "linkedin_url": "https://www.linkedin.com/in/linustorvalds",
  "linkedin_username": "linustorvalds",
  "github": {
    "followers": 180000,
    "following": 0,
    "public_repos": 6,
    "created_at": "2011-09-03T15:26:22Z",
    "updated_at": "2024-01-15T10:30:00Z"
  },
  "summary": "Open source developer and maintainer of Linux kernel",
  "commit_count": 25000,
  "unique_orgs_count": 15,
  "repo_languages": ["C", "Assembly", "Shell"],
  "repos": [
    {
      "repo_id": "2325298",
      "full_name": "torvalds/linux",
      "name": "linux",
      "description": "Linux kernel source tree",
      "language": "C",
      "stargazers_count": 150000,
      "forks_count": 50000,
      "topics": ["linux", "kernel", "operating-system"]
    }
  ],
  "commits": [
    {
      "sha": "abc123...",
      "author_email": "torvalds@linux-foundation.org",
      "author_date": "2024-01-10T12:00:00Z",
      "repo_full_name": "torvalds/linux",
      "message": "Fix memory leak in driver"
    }
  ],
  "stars": [
    {
      "repo_full_name": "git/git",
      "starred_at": "2023-06-15T08:30:00Z"
    }
  ],
  "follower_accounts": ["github_user_1", "github_user_2"],
  "following_accounts": []
}
```

***

## Data Coverage

Field availability varies across profiles. Here are the fill rates for key fields across our GitHub dataset:

### Core Identity

| Field                 | Coverage |
| --------------------- | -------- |
| `user_id`             | 100%     |
| `github_username`     | 100%     |
| `summary`             | 100%     |
| `commit_count`        | 100%     |
| `github_url`          | 100%     |
| `github.followers`    | 80.5%    |
| `github.following`    | 80.5%    |
| `github.public_repos` | 80.5%    |
| `github.created_at`   | 80.5%    |
| `github.updated_at`   | 80.5%    |

### Activity & Repositories

| Field                      | Coverage |
| -------------------------- | -------- |
| `unique_orgs_count`        | 74.1%    |
| `repos`                    | 73.3%    |
| `repos[].repo_id`          | 73.3%    |
| `repos[].full_name`        | 73.3%    |
| `repos[].name`             | 73.3%    |
| `commits`                  | 53.6%    |
| `commits[].sha`            | 53.6%    |
| `commits[].author_email`   | 53.6%    |
| `repo_languages`           | 46.2%    |
| `repos[].stargazers_count` | 36.6%    |
| `repos[].language`         | 28.2%    |

### Contact Information

| Field        | Coverage |
| ------------ | -------- |
| `names`      | 53.0%    |
| `emails`     | 47.5%    |
| `email`      | 46.5%    |
| `full_name`  | 24.3%    |
| `first_name` | 24.3%    |
| `last_name`  | 24.3%    |

### Social & Network

| Field                | Coverage |
| -------------------- | -------- |
| `stars`              | 29.4%    |
| `follower_accounts`  | 12.3%    |
| `following_accounts` | 12.3%    |
| `location`           | 10.5%    |
| `bio`                | 9.5%     |
| `linkedin_username`  | 12.3%    |
| `linkedin_url`       | 12.3%    |

### Location Details

| Field                             | Coverage |
| --------------------------------- | -------- |
| `location_canonical.city`         | 7.0%     |
| `location_canonical.latitude`     | 7.0%     |
| `location_canonical.longitude`    | 7.0%     |
| `location_canonical.country`      | 7.0%     |
| `location_canonical.country_code` | 7.0%     |

<Note>
  **Coverage varies by profile type**: Active developers with public contributions tend to have higher field coverage, especially for commits, repos, and activity data.
</Note>
