# GitHub Repo Monitor (`foxk1996/github-repo-monitor`) Actor

Create compact GitHub repository intelligence digests from api.github.com: stars, forks, issues, latest release, and deltas for a repo watchlist. Optional token supported.

- **URL**: https://apify.com/foxk1996/github-repo-monitor.md
- **Developed by:** [Kronos Fox](https://apify.com/foxk1996) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 repo digests

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/platform/actors/running/actors-in-store#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

## GitHub Repo Monitor

Create compact repository intelligence digests from the public GitHub REST API. This Apify actor is designed for devtools marketers, venture analysts, product researchers, developer-relations teams, and founders who track a watchlist of GitHub projects and need clean, agent-friendly JSON instead of manually opening repository pages.

### GitHub repository monitoring for stars, forks, issues, and releases

The actor accepts repositories as `owner/name` strings or full GitHub repository URLs, then calls `api.github.com` to collect current repository signals. Each output row includes stars, forks, watchers, open issues, subscribers, language, topics, license, default branch, archive/fork status, created/updated/pushed timestamps, homepage, and repository URLs. When enabled, it also fetches the latest GitHub release and records the tag, name, URL, published date, prerelease flag, and draft flag.

### What you get

Every dataset row is a compact `repo-digest` object suitable for spreadsheets, dashboards, alerts, and LLM agents. The output includes a `summary` block with the highest-signal metrics and optional delta fields: star delta, fork delta, issue delta, whether the latest release changed, and the previous release tag. Provide a `previousSnapshot` keyed by `owner/repo` from an earlier run to populate deltas; omit it to get current snapshots only. Error rows are pushed for inaccessible repositories or transient API problems so one bad watchlist item never crashes the whole run.

### Use cases for devtools marketers and VCs

Use this actor to monitor competitor momentum, track open-source category leaders, build weekly devtools market reports, spot release activity after funding announcements, compare fast-growing infrastructure projects, qualify integration partners, or create lightweight alerts when a watched repository starts gaining stars quickly. Venture analysts can feed the compact JSON into notebooks or CRM enrichment. Developer marketing teams can use it to watch ecosystem projects and time campaigns around releases.

### How to use

Start with the default input (`psf/requests` and `octocat/Hello-World`) to produce a small digest in under five minutes. Add up to `maxRepos` repositories to the `repos` list. The actor truncates client-side exactly at `maxRepos`, uses timeouts on every request, and includes polite delays because unauthenticated GitHub API usage is limited to roughly 60 requests per hour. For larger watchlists, add an optional GitHub token in `githubToken`; the token is treated as a secret input and only used as an Authorization header.

### Pricing

This actor uses Apify pay-per-event pricing. The single paid event is `repo-digest` at $0.01 per successfully exported repository digest. There are no extra paid events for release lookups or error rows. Local, free, or non-PPE runs are capped by the built-in free-run guard.

### FAQ

#### Does this scrape GitHub web pages?

No. It only calls HTTP public endpoints under `api.github.com` and does not use proxies, browser automation, or logins.

#### Do I need a GitHub token?

No for small watchlists. Without a token, GitHub allows limited unauthenticated API use. Add a token only when you need higher rate limits or more reliable batch monitoring.

#### How are deltas calculated?

Pass `previousSnapshot` as an object keyed by repository name, such as `{"psf/requests": {"stargazersCount": 52000, "forksCount": 9500, "openIssuesCount": 300, "latestReleaseTag": "v2.31.0"}}`. The actor subtracts those baseline values from the current API response.

#### What happens if a repository has no releases?

The actor still exports the repository digest and leaves latest-release fields empty. Missing releases do not count as errors.

# Actor input Schema

## `repos` (type: `array`):

GitHub repositories to monitor, formatted as owner/name or full GitHub repository URLs. One compact digest row is created per repository.

## `githubToken` (type: `string`):

Optional GitHub personal access token or fine-grained token for higher API rate limits. Leave empty for unauthenticated public API access (about 60 requests/hour).

## `maxRepos` (type: `integer`):

Maximum number of repositories to process from the watchlist. The actor truncates client-side exactly at this cap.

## `includeLatestRelease` (type: `boolean`):

Fetch each repository's latest release from the public GitHub releases endpoint and include release-tag/name/date fields when available.

## `previousSnapshot` (type: `object`):

Optional baseline keyed by owner/repo for delta fields. Each value may include stargazersCount, forksCount, openIssuesCount, and latestReleaseTag from a prior run.

## Actor input object example

```json
{
  "repos": [
    "psf/requests",
    "octocat/Hello-World"
  ],
  "maxRepos": 10,
  "includeLatestRelease": true
}
```

# 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 = {
    "repos": [
        "psf/requests",
        "octocat/Hello-World"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxk1996/github-repo-monitor").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 = { "repos": [
        "psf/requests",
        "octocat/Hello-World",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "repos": [
    "psf/requests",
    "octocat/Hello-World"
  ]
}' |
apify call foxk1996/github-repo-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=foxk1996/github-repo-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/oYQoy14XbBzFgY2oK/builds/850ZuKQ6ZM7as6FJ6/openapi.json
