GitHub hub

GitHub profile activity API

Read a public GitHub login's contribution timeline one calendar month at a time — grouped summaries, repo links, and month labels — in the shared Social Fetch envelope.

GET /v1/github/profiles/{handle}/activity

1 credit per successful request.

About this endpoint

Recruiting screens, open-source marketing, and founder graphs often need what someone actually did last month, not only follower counts or a repo inventory. You have a GitHub login, you want the public activity groups for a year sliced by month, and you do not want to maintain a personal access token just to read that timeline.

`GET /v1/github/profiles/{handle}/activity` takes the username in the path. Optional `year` selects the calendar year (defaults to the current year). Optional `cursor` continues from a previous page; each page moves backward one month through that year. Branch on `data.lookupStatus` before you write: `found` vs `not_found`. On `found`, read `data.username`, `data.year`, `data.month`, `data.activity`, and `data.noActivity`. Each activity group has a `summary` and `details` rows that can include plain `text`, optional `repository` (`text` / `url`), `links`, and optional `language` / date labels when GitHub exposes them.

An empty `activity` array with `noActivity: true` is still a successful month for that login — do not treat it like `not_found`. For day-level contribution heatmap cells, use `GET /v1/github/profiles/{handle}/contributions` instead. Credit pricing for this operation is shown on this page; trust `meta.creditsCharged` on every response.

GitHub profile activity API FAQ

How do I list GitHub profile activity via API?

Call GET /v1/github/profiles/{handle}/activity with your Social Fetch API key in the x-api-key header. Pass the public GitHub username (login) as the path parameter. Optionally set year and cursor. Read data.lookupStatus, then data.month, data.activity, and data.page. Full parameters and examples are in the API docs linked from this page.

How much does the GitHub profile activity API cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.

How does month pagination work on GitHub profile activity?

Each response covers one month for the selected year. When data.page.hasMore is true, pass data.page.nextCursor as the cursor query param on the next request and keep the same handle and year. Pages move backward one month at a time. The cursor is an opaque string; do not invent or parse it.

What does each GitHub activity group include?

Each group has a summary heading and a details array. Detail rows can include text, an optional repository reference (text and url), structured links, and optional language or date fields when present. Exact field lists and nullability live in the OpenAPI schema for this route.

What does noActivity mean on the activity route?

noActivity true with lookupStatus found means GitHub reports no public activity for that month. The activity array may be empty. That is different from not_found, which means no public profile matched the handle.

How is this different from the GitHub contributions endpoint?

This route returns grouped contribution activity for one month (summaries, repo links, detail rows). GET /v1/github/profiles/{handle}/contributions returns the contribution heatmap / day cells for a year. Use activity for narrative monthly timeline rows; use contributions for calendar intensity.

Do I need a GitHub personal access token or OAuth app?

No. Social Fetch authenticates with your Social Fetch API key only. You do not create a GitHub OAuth app or pass a personal access token for this public activity route.

Can I use this to score recent GitHub contributor activity?

Yes. Teams page months for a seed login, store group summaries and repository URLs, then fan out to the single-repository or profile routes when a repo or person needs a deeper card. Keep meta.requestId if you need support on a failed page.