GitHub
GET /v1/github/user

GitHub User API

GitHub public profile — login, type User|Organization, email when public, followers (1 credit).

1 credit per request
TL;DR
GitHub public profile — login, type User|Organization, email when public, followers (1 credit). The GitHub User API (GitHub) is a single authenticated GET request to /v1/github/user that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.

What is the GitHub User API?

Pass a GitHub username or profile URL and get the public /users/{username} profile as camelCase JSON: login, name, company, blog, location, email (only when the account made it public — omitted when null), bio, avatar, publicRepos/publicGists, followers/following, twitterUsername, hireable, nodeId, siteAdmin, and createdAt/updatedAt. type is User or Organization (GitHub's casing) so orgs are distinguishable from people. Flat 1 credit. Honesty note: this is a thin wrap of GitHub's free public REST API (60 req/hour unauthenticated; 5,000/hour with a personal access token). Captapi's value here is one key across ~32 platforms, no per-platform rate-limit handling, and the same response envelope/field names as other profile endpoints — not removing a GitHub OAuth barrier (there isn't one for public profiles). Call api.github.com directly for GitHub-only jobs.

What you get

  • Display name, handle or URL, bio, and avatar when available
  • Follower / subscriber and content counts
  • Verification status and external links when exposed
  • Structured JSON ready for enrichment and dashboards

Try it

Open in Playground

Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).

Parameters

Sign in to run live
curl "https://api.captapi.com/v1/github/user?username=getify" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

Edit the parameters and the code updates instantly. Switch languages and hit copy.

Example response

{
  "success": true,
  "data": {
    "platform": "github",
    "type": "User",
    "login": "getify",
    "id": 150330,
    "nodeId": "MDQ6VXNlcjE1MDMzMA==",
    "url": "https://github.com/getify",
    "apiUrl": "https://api.github.com/users/getify",
    "name": "Kyle Simpson",
    "company": "Getify Solutions",
    "blog": "http://getify.me",
    "location": "Austin, TX",
    "bio": "Kyle Simpson is a Human-Centric Technologist. He's fighting for the people behind the pixels.",
    "avatar": "https://avatars.githubusercontent.com/u/150330?v=4",
    "publicRepos": 74,
    "publicGists": 411,
    "followers": 45221,
    "following": 3,
    "hireable": true,
    "siteAdmin": false,
    "createdAt": "2009-11-08T06:56:21Z",
    "updatedAt": "2026-04-28T20:14:44Z"
  }
}

Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.

Response structure

A successful call returns success, cached, creditsUsed, and a data object with the following fields:

Top-level fields

  • platformAlways "github" on this endpoint.
  • typeGitHub account kind: "User" or "Organization" (upstream casing preserved).
  • loginAccount login name.
  • idStable platform ID for the item.
  • nodeIdGitHub GraphQL node_id for the account.
  • urlCanonical URL of the item.
  • apiUrlApi url URL.
  • nameGitHub profile display name (not a deprecated alias — GitHub has no displayName field here).
  • companyCompany. Example: "Getify Solutions".
  • blogBlog URL.
  • locationLocation shown on the profile or item.
  • bioProfile bio. Canonical across profile endpoints (prefer over description on YouTube).
  • avatarAvatar / profile picture URL. Canonical across profile endpoints.
  • publicReposCount of public repositories.
  • publicGistsCount of public gists.
  • followersFollower count.
  • followingNumber of accounts followed.
  • hireabletrue when the user marked themselves hireable on GitHub; omitted/null when unset.
  • siteAdmintrue when the account is a GitHub site admin (rare).
  • createdAtCreation date (ISO 8601).
  • updatedAtLast update date (ISO 8601).

Parameters

NameTypeRequiredDescription
usernamestringYesGitHub username or profile URL, e.g. getify or https://github.com/getify.
cachebooleanNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits.

Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.

Using an AI agent? This endpoint is the MCP tool github_user via @captapi/mcp. Set it up →

How it works

  1. 1. Sign up — get 100 free credits, no card required.
  2. 2. Create a key from your dashboard.
  3. 3. Send one request to /v1/github/user and parse the JSON response.

Use cases

Multi-platform enrichment

Same Captapi key and envelope as Spotify/SoundCloud/Bluesky profiles — join developer handles without a separate GitHub client.

User vs Organization

Read type (User | Organization) so org accounts are not mistaken for people.

Hiring screens

Pull hireable, publicRepos, followers, and public email (when set) for lightweight developer profiling.

When to call GitHub directly

GitHub-only workloads should hit api.github.com free — Captapi shines when you already fan out across many platforms.

Frequently asked questions

What does the GitHub User API do?+

The GitHub User API lets you fetch profile or page details and audience stats from a public GitHub profile or page using one GET request to /v1/github/user. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the GitHub User API cost?+

Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.

Why use Captapi instead of api.github.com?+

GitHub's public /users/{username} API is free (60 req/hour unauthenticated, 5,000/hour with a personal access token) and needs no OAuth for public profiles. Captapi's value is one Bearer key across ~32 platforms, shared rate-limit/retry handling, and the same camelCase envelope as other profile endpoints — not removing a GitHub login barrier. For GitHub-only jobs, call api.github.com directly.

How do I tell a user from an organization?+

Read type — "User" or "Organization" (GitHub's casing). Examples: getify is a User; vercel is an Organization.

When is email present?+

Only when the account made an email public on their GitHub profile. Private emails are never returned; the field is omitted when unset.

Is the GitHub User API suitable for production use?+

Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.

More GitHub APIs

Ready to use the GitHub User API?

Sign up, grab your key, and make your first call in 60 seconds.