This is a documentation & usage guide. The scraper itself runs on the Apify platform — open it here and click Try for free.
Stream public GitHub activity — commits, pull requests, issues, releases and user events — for any repo, org or user, normalized into one flat schema. Every event becomes a structured row with type, repo, actor, title, state, additions/deletions, labels, tag name and URL, time-windowed and paginated so a single run returns thousands of events. Built for AI coding agents, dependency monitors and release trackers that need fresh developer activity — not stale training-set snapshots. No login, no browser, no API key required (an optional token simply raises throughput).
The GitHub Activity Stream actor merges the separate GitHub activity endpoints — commits, PRs, issues, releases and public events — into a single clean stream you can export to JSON, CSV or Excel. Instead of stitching endpoints together, juggling pagination and rate limits, you pick a mode (repo, org, user, bulk), set a since date for delta runs, and get one normalized dataset ready for dashboards, alerts, RAG pipelines or an AI agent's context window.
One row per activity event, normalized across all types:
| Field | Type | Description |
|---|---|---|
repo |
string | owner/repo slug the event belongs to |
type |
string | commit, pull, issue, release, or a GitHub event name (PushEvent…) in user mode |
number |
integer | PR / issue number (null for commits & releases) |
title |
string | PR / issue title, release name, or first-line commit message |
action |
string | Event action for user-mode events (opened, closed…); null otherwise |
state |
string | open / closed for PRs & issues; null for commits |
actor |
string | Author / actor username |
createdAt |
string | Creation timestamp (ISO 8601) |
updatedAt |
string | Last-updated timestamp (ISO 8601) |
additions |
integer | Lines added (pull requests only) |
deletions |
integer | Lines removed (pull requests only) |
commits |
integer | Commit count in the PR (pull requests only) |
labels |
array | Label names (PRs & issues) |
merged |
boolean | Whether the PR was merged (pull requests only) |
isPrerelease |
boolean | Whether the release is a pre-release (releases only) |
tagName |
string | Release tag, e.g. 1.21.0 (releases only) |
url |
string | Canonical GitHub URL for the event |
scrapedAt |
string | Scrape timestamp (ISO 8601) |
- Weekly dev-summary agent — run
repomode withsince: <7 days ago>; let an LLM turn commits/PRs/releases into a "shipped this week" digest. - Release tracking — watch
releasesfor a dependency org (kubernetes,vercel), alert on new versions and draft upgrade notes. - Security-commit detection — filter commit/PR titles for
security|cve|vuln|fix|patchto surface security work before it hits an advisory feed. - Dependency-health scoring — pull issue counts, label distribution and PR merge velocity to score a repo's maintenance health before adopting it.
- Contributor monitoring — track a key maintainer's public events (
usermode) to spot activity shifts or bus-factor risk. - Org-wide radar — scan an entire org's repos (
orgmode) to map where work is actually happening. - RAG over dev activity — embed commit messages and PR titles into a vector store and answer "when did X get fixed?" with citations to the exact commit.
- Open the actor: apify.com/logiover/github-activity-stream.
- Click Try for free. An empty input returns recent activity for a popular default repo.
- Pick a
modeand its target (amicrosoft/vscodeslug, anorglikekubernetes, or auserliketorvalds), optionally set asincedate, then Start. - Open the Output tab and Export to JSON, CSV, Excel, XML or JSONL. Use the By type view to pivot on commit/PR/issue/release.
npm install -g apify-cli
apify login
apify call logiover/github-activity-stream \
--input='{"mode":"repo","repos":["microsoft/vscode"],"since":"2026-06-29","maxPerType":200}'See examples/cli.md.
curl -X POST "https://api.apify.com/v2/acts/logiover~github-activity-stream/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"repo","repos":["facebook/react"],"eventTypes":["releases"],"since":"2026-06-01"}'Runs the actor and returns dataset items in one call. See examples/api-curl.md.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/github-activity-stream').call({
mode: 'repo', repos: ['microsoft/vscode'], since: '2026-06-29', maxPerType: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/github-activity-stream").call(run_input={
"mode": "repo", "repos": ["microsoft/vscode"], "since": "2026-06-29", "maxPerType": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["type"], item["repo"], item["title"])Full snippets in examples/javascript.md and examples/python.md.
Pick a mode and give it a target. Everything else is optional — leave since empty for full history (capped by maxPerType), or set it for a delta window.
| Field | Type | Default | Description |
|---|---|---|---|
mode |
select | repo |
repo (one repo, highest volume), org (all of an org's public repos), user (a user's public events), bulk (many repos in one run). |
repos |
array | [] |
owner/repo slugs for repo and bulk mode, e.g. microsoft/vscode, facebook/react. |
org |
string | — | GitHub organization slug for org mode, e.g. kubernetes, vercel. |
user |
string | — | GitHub username for user mode, e.g. torvalds. |
eventTypes |
array (select) | all | Which types to collect: commits, pulls, issues, releases. Fewer = faster. |
since |
string | — | ISO date (YYYY-MM-DD or full ISO). Only events after this date. Empty = full history. |
maxPerType |
integer | 200 |
Cap per event type per repo (1–1000). |
maxOrgRepos |
integer | 20 |
Cap on repos to scan in org mode (1–200). |
ghToken |
string | — | Optional GitHub Personal Access Token — raises the rate limit for heavy use. Public scope is enough. |
useApifyProxy |
boolean | true |
Route through the Apify datacenter proxy (IP rotation). |
Tip — always set
sincefor monitoring. For a recurring digest, setsinceto your last run time so each run is a clean delta. Commits are the highest-volume (and slowest) type — trimeventTypesto["releases"]or["pulls","releases"]when you don't need them.
Org-wide scan (monitor an ecosystem):
{ "mode": "org", "org": "kubernetes", "maxOrgRepos": 15, "eventTypes": ["pulls", "releases"], "since": "2026-06-01" }User public activity:
{ "mode": "user", "user": "torvalds", "maxPerType": 100 }Bulk multi-repo release watch:
{ "mode": "bulk", "repos": ["facebook/react", "vercel/next.js", "microsoft/typescript"], "eventTypes": ["releases"], "since": "2026-06-01" }One row per activity event, streamed to the dataset. Example pull-request record:
{
"repo": "microsoft/vscode",
"type": "pull",
"number": 210543,
"title": "Fix terminal rendering on macOS",
"action": null,
"state": "closed",
"actor": "user123",
"createdAt": "2026-06-28T10:00:00Z",
"updatedAt": "2026-07-01T15:00:00Z",
"additions": 142,
"deletions": 38,
"commits": 3,
"labels": ["bug", "terminal"],
"merged": true,
"isPrerelease": null,
"tagName": null,
"url": "https://github.com/microsoft/vscode/pull/210543",
"scrapedAt": "2026-07-06T12:00:00.000Z"
}A release row carries type: "release", tagName: "1.21.0" and isPrerelease: false; a commit row carries type: "commit" with the first-line message as title. PR-only stats (additions, deletions, commits, merged) are null on non-PR rows.
- Schedules — run daily or weekly with
sinceset to your interval for clean delta digests. - Webhooks — push new events to your API, database or Slack the moment a run finishes.
- Google Sheets — sync activity rows into a spreadsheet for lightweight dashboards.
- Amazon S3 / storage — archive event streams for historical dev-activity analysis.
- Zapier / Make / n8n / Pipedream — build release-alert and dependency-monitoring pipelines with no code.
- AI agents (MCP) — wrap it as an MCP tool so a coding agent passes a repo + time window and receives normalized activity, with no GitHub API juggling.
Download or stream results as CSV, JSON, JSONL, Excel (XLSX), or XML from the Apify Console or via the API.
Open the GitHub Activity Stream on Apify, click Try for free, pick a repo and run it. No GitHub login or API key is required by default; an optional token only raises throughput for heavy workloads.
Start on Apify's free tier. Pricing is pay-per-result — you pay per saved event, and runs that yield zero events (deleted/empty/private repo) are free. See the Pricing tab on the actor page.
Thousands of events. Big repos yield hundreds of commits/PRs alone; org mode multiplies that across up to maxOrgRepos repos. Commits, issues and PRs go as far back as maxPerType and since allow; releases return all of them.
Run the actor, open Output, click Export, and choose CSV, JSON, JSONL, XLSX or XML — or pull it via the Apify API and dataset endpoints.
Yes. GitHub exposes each object type (commits, PRs, issues, releases, events) as a separate endpoint with its own pagination and schema. This actor is a GitHub activity API alternative that merges them into one normalized schema and handles pagination for you.
repo pulls one repo's full activity (highest volume). org scans an org's public repos. user returns a user's public events. bulk processes many repos in a single run.
Commits, issues and PRs: as far as repo history goes, capped by maxPerType. Releases: all of them. User events are limited by GitHub itself to roughly the last 90 days of public activity.
GitHub's commit-list response doesn't include per-commit line stats. Pull-request rows do carry additions, deletions and commits. For per-commit stats, post-process by fetching the specific commit URLs.
No — it targets public monitoring using unauthenticated public endpoints (or a token's public scope). Private-repo access would require a token with full repo scope, which is outside this actor's design.
Yes — that's the primary design target. Wrap it in an MCP server or Apify tool integration; the agent passes a repo and a time window and receives normalized activity, with no rate-limit handling on its side.
- GitHub Repository Scraper — repo metadata: stars, forks, topics, language, license, activity dates.
- GitLab Scraper — projects, issues and merge requests from GitLab.
Browse the full suite at apify.com/logiover.
📄 Documentation only — this repository contains no scraper source code. The Actor runs on the Apify platform.
Licensed under the MIT License · © 2026 logiover