GITHUB API

GitHub Issue Search API

Search GitHub issues by keyword and filter by repository, state, author, assignee, labels, comment count or date. Each result includes the title, state, author, labels, comment count and dates.

Endpoint
POST /github/search-issues
Price
1 credit per request
SDK
client.github.searchIssues()
MCP tool
github_search_issues
Terminal
curl -X POST "https://api.bridgly.app/github/search-issues" \
-H "Authorization: Bearer $BRIDGLY_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "good first issue",
"state": "open",
"language": "Rust",
"count": 10
}'
[ REQUEST AND RESPONSE ]

What does the GitHub Issue Search API return?

GitHub issues API: search issues by keyword, repo, state, labels, author, assignee, comment count and dates, with title, state, labels and timestamps. Every response has the same envelope: the result in data, plus timeMs and the creditsCost of the call.

Request body

querystring
Free-text search terms, matched against the default fields for this search type, e.g. "web framework".
ownersstring[]
Limit to these owners (users or orgs). Maps to `user:`.
reposstring[]
Limit to these "owner/name" repositories. Maps to `repo:`.
languagestring
Language of the containing repo. Maps to `language:`.
stateenum
Issue/PR state. Maps to `state:`.
open | closed
authorstring
Opened by this user. Maps to `author:`.
assigneestring
Assigned to this user. Maps to `assignee:`.
mentionsstring
Mentioning this user. Maps to `mentions:`.
labelsstring[]
Require each of these labels. Maps to `label:`.
commentsobject
Filter by comment count. Provide any of gt / gte / lt / lte; combine a lower and upper bound for a range.
comments.gtnumber · nullable
Strictly greater than this value.
comments.gtenumber · nullable
Greater than or equal to this value.
comments.ltnumber · nullable
Strictly less than this value.
comments.ltenumber · nullable
Less than or equal to this value.
createdobject
Filter by creation date. Provide any of gt / gte / lt / lte as YYYY-MM-DD dates; combine a lower and upper bound for a range.
created.gtstring · nullable
Strictly after this date (YYYY-MM-DD).
created.gtestring · nullable
On or after this date (YYYY-MM-DD).
created.ltstring · nullable
Strictly before this date (YYYY-MM-DD).
created.ltestring · nullable
On or before this date (YYYY-MM-DD).
updatedobject
Filter by last update date. Provide any of gt / gte / lt / lte as YYYY-MM-DD dates; combine a lower and upper bound for a range.
updated.gtstring · nullable
Strictly after this date (YYYY-MM-DD).
updated.gtestring · nullable
On or after this date (YYYY-MM-DD).
updated.ltstring · nullable
Strictly before this date (YYYY-MM-DD).
updated.ltestring · nullable
On or before this date (YYYY-MM-DD).
closedobject
Filter by closed date. Provide any of gt / gte / lt / lte as YYYY-MM-DD dates; combine a lower and upper bound for a range.
closed.gtstring · nullable
Strictly after this date (YYYY-MM-DD).
closed.gtestring · nullable
On or after this date (YYYY-MM-DD).
closed.ltstring · nullable
Strictly before this date (YYYY-MM-DD).
closed.ltestring · nullable
On or before this date (YYYY-MM-DD).
orderenum · default desc
Sort direction. Defaults to "desc".
desc | asc
countinteger · 1–10 · default 10
Number of results to return (1–10). Defaults to 10.
cursorstring
The previous response's `nextCursor`, to fetch the next page. Omit it for the first page.
reasonenum
State reason for closed issues. Maps to `reason:`.
completed | not-planned | reopened
sortenum · default best-match
Sort field. Defaults to relevance ("best-match").
best-match | created | updated | comments

Example response

200 OK · application/json
{
"timeMs": 1840,
"creditsCost": 1,
"data": {
"nextCursor": "string",
"query": "string",
"totalCount": 0,
"issues": [
{
"id": "string",
"number": 0,
"title": "string",
"state": "string",
"url": "string",
"isPullRequest": true,
"isDraft": true,
"merged": true,
"authorLogin": "string",
"repository": "string",
"repositoryUrl": "string",
"commentsCount": 0,
"labels": [
"string"
],
"createdAt": "string",
"updatedAt": "string",
"closedAt": "string"
}
]
}
}
[ USE CASES ]

What can you build with the GitHub Issue Search API?

Find good first issues

List open issues with a beginner label in a language you know.

Monitor bug reports

Catch new issues that mention your product across repositories.

Measure maintainers

Compare how many issues projects close and how fast.

[ FAQ ]

GitHub Issue Search API questions

How do I find good first issues on GitHub?

Set labels to good first issue, state to open and language to the one you want. Each issue comes back with title, state, author, labels, comment count and dates.

Can I track the bugs reported against a repository?

Yes. Set repos to it, state to open and labels to bug, sort by created, and run it on a schedule to catch new reports.

Can I find what users ask for in a competitor’s product?

Search their repositories for words like feature request, sorted by comments. The most discussed issues show what users want most.

How do I get more than 10 results from a GitHub issue search?

Each call returns up to 10 issues and a nextCursor. Send it back as cursor to get the next page; it is null when there are no more.

How do I separate bug triage from pull-request review?

Issue search finds problem reports and requests for work. Filter by repos, labels and state to build a triage queue; reason distinguishes completed and not-planned closures. Use the Pull Request Search API when you need proposed code changes, draft status, review requirements or merge dates.

Does a closed issue prove that a fix shipped?

No. Closing an issue is a workflow decision, and the reason can be completed or not-planned. Use the reason filter to narrow closed reports to a particular outcome, and retain the returned state and URL. To research implementation work, search the repository’s pull requests separately and inspect their merge status rather than treating every closed issue as a released fix.

How do I use the GitHub Issue Search API?

Send a POST request to https://api.bridgly.app/github/search-issues with the filters you want in the JSON body and your API key in the Authorization header. In the TypeScript SDK, call client.github.searchIssues(). AI agents connected to Bridgly over MCP can call the github_search_issues tool.

How much does the GitHub Issue Search API cost?

Costs 1 credit per request. Credits cost $2.00 per 1,000 on pay-as-you-go and as low as $1.00 per 1,000 at volume. New accounts on a business email start with 100 free credits, and failed requests are never charged.

Try the GitHub Issue Search API

100 free credits on business email, no card. Your first call takes a minute.

APIMCPSDKCLI
free credits

On business email signup. No credit card required.

Start free with 100 credits