GitHub Issues Monitor: New Issues by Label or Keyword
Pricing
from $0.75 / 1,000 issue returneds
GitHub Issues Monitor: New Issues by Label or Keyword
GitHub issues scraper and alerts: new or updated issues and pull requests in the repos you watch, filtered by label or keyword. One row per issue, only-new-since-last-run. Works without a token. $1.50 per 1,000 issues; a miss is free.
Pricing
from $0.75 / 1,000 issue returneds
Rating
0.0
(0)
Developer
Adriana Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
GitHub issues scraper and alerts for the repositories you already watch. List owner/repo, optionally narrow by label or keyword, and get one row per issue or pull request that was opened or updated in your window: title, state, labels, who opened it, comment count, dates, the first 500 characters of the text and the link. Tick "only new or updated since the last run" and a scheduled run returns, and bills, only what changed. No GitHub token is needed to start. You pay per issue returned; a quiet day costs only the start fee.
It reads GitHub's public REST API (GET /repos/{owner}/{repo}/issues), one request per repository. Your own token is optional and never stored.
Who it's for
- Maintainers and community managers who want every new
good first issueorhelp wantedin the repos they care about. - Open-source contributors and recruiters watching a project for beginner-friendly or high-signal issues.
- Dev-tool and support teams who want an alert when a keyword (a feature, an error message, a competitor) shows up in an upstream repo's issues.
- Agents and n8n/Make/Clay flows that need GitHub issue alerts as structured rows.
What you get
One dataset row per issue or pull request ("One row per issue" is on by default):
| Field | Meaning |
|---|---|
repo | Canonical owner/repo |
number | Issue or pull request number |
itemKind | issue or pull_request |
title, state, labels | As GitHub shows them |
author | Public GitHub username that opened it |
authorAssociation | Owner, member, contributor, first-timer, ... |
commentCount | Comments so far |
createdAt, updatedAt, closedAt | ISO timestamps; closedAt is null while open |
isDraft | Pull requests only; null on issues |
bodyExcerpt | First 500 characters of the text, or null |
issueUrl | The GitHub page |
query and scrapedAt are on every row. With monitoring on, isNew and firstSeenAt say whether this issue (in its current updated state) is new to the watchlist. Missing values are null, never 0 or an empty string.
A repository that does not exist, is private, or has no issue matching your filters comes back as a "found": false row and is never charged. A monitoring run that finds nothing new is not charged either.
Limits worth knowing
- Rate limit. Without a token GitHub allows about 60 requests per hour per IP, and Apify IPs are shared. A few repositories per run is fine; for a long watchlist or many runs, paste your own free token (5,000 requests/hour).
- One page per repository. The newest 100 updated issues are scanned, then your labels and keywords are applied. A busy repo with a short window is fine; a very busy repo with a long window sets
truncatedso you know to narrow it. - Labels are AND. Listing two labels keeps only issues that carry both.
How to use
- In the Apify Console. Open the actor page and click Start — the
reposfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~github-issues-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"repos":["octocat/Hello-World"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"repos": ["octocat/Hello-World"]}
One per line: owner/repo or a github.com URL. Public repositories only. Works without a token; paste your own free GitHub token below for 5,000 requests/hour instead of 60. Accepted formats: cli/cli, https://github.com/cli/cli.
Everything below repos is optional: labels, includeKeywords, excludeKeywords, itemType (issues, pull requests or both), state, sinceDays (default 7), maxItems per repository (default 30), onlyNewSinceLastRun, deltaName and your own githubToken.
Output
One row per issue or pull request, for example:
| query | found | status | issueCount | truncated | issues | repo | number | itemKind | title | state | labels | author | authorAssociation | commentCount | createdAt | updatedAt | closedAt | isDraft | bodyExcerpt | issueUrl | isNew | firstSeenAt | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| octocat/Hello-World | true | OK | <all issues (full list)> | <state> | <author's role in the repo> | <description (first 500 characters)> | <new or updated since the last run?> | 1970-01-01T00:00:00.000Z |
A miss comes back as a row with "found": false, a status and a plain-English message, and is never charged.
Example runs
Three inputs that need no credentials of any kind and return rows as they stand. Paste one into the Input tab and press Start.
1. Everything updated this week in one repo
{"repos": ["octocat/Hello-World"],"state": "all","maxItems": 10}
2. Open good first issue tickets across two repos
{"repos": ["cli/cli", "sindresorhus/got"],"labels": ["good first issue"],"state": "open","sinceDays": 30}
3. GitHub issue alerts on a schedule: only new or updated bugs
{"repos": ["cli/cli"],"labels": ["bug"],"itemType": "issues","onlyNewSinceLastRun": true,"sinceDays": 7}
Pricing
Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed
per item only when data is actually found and returned — see
.actor/pay_per_event.json for exact prices. A miss is never charged.
Charged once per issue or pull request row returned. A repository with nothing matching, a missing repository, or a monitoring run with nothing new is never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~github-issues-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"repos":["octocat/Hello-World"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~github-issues-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"repos":["octocat/Hello-World"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~github-issues-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"repos":["{{repository}}"]}, mapping the row's repository into the repos array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "github issues scraper" — the agent will find and run this actor.
FAQ
Do I need a GitHub token? No. The default is GitHub's anonymous API (about 60 requests/hour per IP). Add your own free token only for long watchlists or frequent schedules.
Does an updated issue come back again? Yes, once per update. A new comment, label or state change moves updatedAt, and with monitoring on that counts as new. A run with no changes returns nothing and bills nothing.
Can I get only issues, or only pull requests? Yes: set "Issues, pull requests or both".
Will a missing repository fail the run? No. It is a NOT_FOUND row and is free.