# GitHub Issues & PR Tracker (`gochujang/github-issues-tracker`) Actor

Track GitHub issues and pull requests: filter by label, state, assignee, milestone, or date range. Returns issue title, body, labels, author, assignees, reactions, comments count, linked PRs, and close date. Supports multiple repos. No API key required.

- **URL**: https://apify.com/gochujang/github-issues-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

### What does GitHub Issues Tracker do?

**GitHub Issues Tracker** is an **Apify Actor** that monitors open and closed issues and pull requests across any public GitHub repository using the official GitHub REST API. It works as a **repo bug tracker API**, returning structured data on issue state, labels, assignees, reaction counts, and comment activity. Run it once to export a snapshot or schedule it to power a live **GitHub open issues monitor** for your team or portfolio.

No GitHub account is required for public repositories — an optional personal access token raises the rate limit from 60 to 5,000 requests per hour.

***

### Why use GitHub Issues Tracker?

- **Developer tooling dashboards** — aggregate open bugs, feature requests, and PR queues across an entire organization's repositories in one structured dataset.
- **Open-source contribution tracking** — find all `good first issue` or `help wanted` labels across multiple repos to route contributors automatically.
- **Engineering KPI reporting** — measure bug backlog size, average time-to-close, and comment engagement without manually querying GitHub's UI.
- **Competitive and ecosystem intelligence** — monitor issues in popular open-source libraries (React, VS Code, Kubernetes) to detect pain points and emerging patterns before they become trends.
- **SLA and stale issue alerts** — extract issues older than a threshold date and feed them into Slack alerts or project management tools.

***

### How to use GitHub Issues Tracker

1. Open the Actor on Apify and click **Try for free**.
2. Set `repositories` to a list of `owner/repo` strings (e.g. `["microsoft/vscode", "facebook/react"]`).
3. Choose `state`: `open`, `closed`, or `all`.
4. Optionally add `labels` (comma-separated) and `issueType` (`issues_only`, `prs_only`, or `all`).
5. Set `since` to an ISO 8601 date to limit results to recently updated items.
6. Add a `githubToken` for high-volume runs (avoids the 60 req/hour anonymous limit).
7. Click **Start** — the dataset populates as each repository is queried.
8. Export as JSON or CSV, or connect to the **GitHub issues tracker** API endpoint.

***

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `repositories` | array | **yes** | — | List of `owner/repo` strings to query |
| `state` | string | | `open` | Filter by issue state: `open`, `closed`, or `all` |
| `labels` | string | | — | Comma-separated label names (e.g. `bug,good first issue`) |
| `issueType` | string | | `all` | `all`, `issues_only`, or `prs_only` |
| `since` | string | | — | ISO 8601 cutoff — only items **updated after** this date |
| `maxResults` | integer | | `100` | Max items per repository (1–1,000) |
| `githubToken` | string | | — | Personal access token for 5,000 req/hour rate limit |

***

### Output

Sample records from a **GitHub open issues monitor** run:

```json
[
  {
    "repo": "microsoft/vscode",
    "issue_number": 218345,
    "type": "issue",
    "title": "Extension panel freezes on large workspaces",
    "state": "open",
    "body": "When opening a workspace with more than 50,000 files the Extensions panel becomes unresponsive...",
    "labels": ["bug", "performance"],
    "author": "dev_user_123",
    "assignees": ["teammate_a"],
    "reactions_total": 47,
    "comment_count": 12,
    "created_at": "2026-08-20T14:00:00Z",
    "updated_at": "2026-09-01T09:22:00Z",
    "closed_at": null,
    "url": "https://github.com/microsoft/vscode/issues/218345",
    "is_locked": false,
    "milestone": "September 2026",
    "fetched_at": "2026-09-02T08:00:00Z"
  },
  {
    "repo": "facebook/react",
    "issue_number": 31102,
    "type": "pr",
    "title": "Fix concurrent rendering edge case in StrictMode",
    "state": "open",
    "body": "This PR addresses a race condition found in concurrent mode when...",
    "labels": ["CLA Signed"],
    "author": "contrib_xyz",
    "assignees": [],
    "reactions_total": 5,
    "comment_count": 3,
    "created_at": "2026-08-28T10:00:00Z",
    "updated_at": "2026-08-30T16:45:00Z",
    "closed_at": null,
    "url": "https://github.com/facebook/react/pull/31102",
    "is_locked": false,
    "milestone": null,
    "fetched_at": "2026-09-02T08:00:00Z"
  }
]
```

***

### Data fields

| Field | Type | Description |
|-------|------|-------------|
| `repo` | string | Full repository name (`owner/repo`) |
| `issue_number` | integer | Issue or PR number |
| `type` | string | `issue` or `pr` |
| `title` | string | Issue or PR title |
| `state` | string | `open` or `closed` |
| `body` | string | First 1,000 characters of the description |
| `labels` | array | List of label names |
| `author` | string | GitHub username of the creator |
| `assignees` | array | List of assigned usernames |
| `reactions_total` | integer | Total emoji reaction count |
| `comment_count` | integer | Number of comments |
| `created_at` | string | ISO 8601 creation timestamp |
| `updated_at` | string | ISO 8601 last-updated timestamp |
| `closed_at` | string | ISO 8601 close timestamp (`null` if open) |
| `url` | string | Direct link to the issue or PR |
| `is_locked` | boolean | Whether the thread is locked |
| `milestone` | string | Milestone title (if assigned) |
| `fetched_at` | string | ISO 8601 fetch timestamp |

***

### Cost estimation

Pricing is **Pay-Per-Event** at **$0.001 per issue or PR** returned.

| Run scenario | Items | Estimated cost |
|---|---|---|
| 1 repo, 100 open issues | 100 | $0.10 |
| 5 repos, 100 issues each | 500 | $0.50 |
| 10 repos, all states, 200 each | 2,000 | $2.00 |
| Daily org-wide bug monitor (10 repos) | ~500/day | ~$0.50/day |

***

### FAQ

**Do I need a GitHub account or API key to use this repo bug tracker API?**
No — public repositories are accessible without authentication. Adding a personal access token (free, no special scopes for public repos) raises the rate limit from 60 to 5,000 requests per hour, which is required for large multi-repo runs.

**Can I track pull requests as well as issues?**
Yes. Set `issueType` to `prs_only` for PRs, `issues_only` for issues, or leave it as `all` to get both in one dataset.

**How do I set up a live GitHub open issues monitor?**
Use Apify's scheduler to run this Actor on a cron schedule (e.g. daily at 08:00 UTC) and export results to a webhook, Google Sheets, or your own database via the Apify API.

> **Disclaimer**: This Actor uses the official GitHub REST API and retrieves only publicly available data. Users are responsible for complying with GitHub's Terms of Service and API usage policies. Do not use to access private repositories without authorization or exceed rate limits in ways that violate GitHub's guidelines.

***

**Keywords:** GitHub issues tracker, repo bug tracker API, GitHub open issues monitor, GitHub REST API, pull request tracker, open source contribution tracker, developer tools automation

***

### Related actors

- [GitHub Repo Analytics](https://apify.com/gochujang/github-repo-analytics) — Stars, forks, and contributor activity for repos monitored with this actor
- [GitHub CI Monitor](https://apify.com/gochujang/github-ci-monitor) — CI/CD workflow status alongside open issue and PR counts
- [GitHub Trending Tracker](https://apify.com/gochujang/github-trending-tracker) — Discover trending repos then monitor their issue velocity with this actor

### Feedback

If this actor powers your open source monitoring, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/github-issues-tracker#reviews)

# Actor input Schema

## `repositories` (type: `array`):

List of repos as 'owner/repo' (e.g. 'microsoft/vscode')

## `state` (type: `string`):

Filter issues by state: open, closed, or all.

## `labels` (type: `string`):

Comma-separated labels to filter by (e.g. 'bug,help wanted')

## `issueType` (type: `string`):

Return all items, issues only, or pull requests only.

## `since` (type: `string`):

ISO 8601 date — only returns issues updated after this (e.g. '2024-01-01T00:00:00Z')

## `maxResults` (type: `integer`):

Maximum number of issues or PRs to return per repository (1–1000).

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

Personal access token for higher rate limits (5000 req/h vs 60 req/h without token).

## Actor input object example

```json
{
  "repositories": [
    "microsoft/vscode",
    "facebook/react"
  ],
  "state": "open",
  "issueType": "all",
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "repositories": [
        "microsoft/vscode",
        "facebook/react"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/github-issues-tracker").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 = { "repositories": [
        "microsoft/vscode",
        "facebook/react",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("gochujang/github-issues-tracker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "repositories": [
    "microsoft/vscode",
    "facebook/react"
  ]
}' |
apify call gochujang/github-issues-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/github-issues-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qp5SjoHkkrpQ1aVjW/builds/LZ8wpiaaPbRwBF66b/openapi.json
