GitHub Issues Monitor: New Issues by Label or Keyword avatar

GitHub Issues Monitor: New Issues by Label or Keyword

Pricing

from $0.75 / 1,000 issue returneds

Go to Apify Store
GitHub Issues Monitor: New Issues by Label or Keyword

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

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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 issue or help wanted in 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):

FieldMeaning
repoCanonical owner/repo
numberIssue or pull request number
itemKindissue or pull_request
title, state, labelsAs GitHub shows them
authorPublic GitHub username that opened it
authorAssociationOwner, member, contributor, first-timer, ...
commentCountComments so far
createdAt, updatedAt, closedAtISO timestamps; closedAt is null while open
isDraftPull requests only; null on issues
bodyExcerptFirst 500 characters of the text, or null
issueUrlThe 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 truncated so you know to narrow it.
  • Labels are AND. Listing two labels keeps only issues that carry both.

How to use

  1. In the Apify Console. Open the actor page and click Start — the repos field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. 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"]}'
  3. 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:

queryfoundstatusissueCounttruncatedissuesreponumberitemKindtitlestatelabelsauthorauthorAssociationcommentCountcreatedAtupdatedAtclosedAtisDraftbodyExcerptissueUrlisNewfirstSeenAtscrapedAt
octocat/Hello-WorldtrueOK<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.