Search issues and pull requests
Find issues by state and keyword. This method returns up to 100 results per page.
When searching for issues, you can get text match metadata for the issue title, issue body, and issue comment body fields when you pass the text-match media type. For more details about how to receive highlighted
search results, see Text match metadata.
For example, if you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
q=windows+label:bug+language:python+state:open&sort=created&order=asc
This query searches for the keyword windows, within any open issue that is labeled as bug. The search runs across repositories whose primary language is Python. The results are sorted by creation date in ascending order, which means the oldest issues appear first in the search results.
[!NOTE] For requests made by GitHub Apps with a user access token, you can’t retrieve a combination of issues and pull requests in a single query. Requests that don’t include the
is:issueoris:pull-requestqualifier will receive an HTTP422 Unprocessable Entityresponse. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about theisqualifier, see “Searching only issues or pull requests.”
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “ Query Parameters ”The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as the web interface for GitHub. To learn more about the format of the query, see Constructing a search query. See “Searching issues and pull requests” for a detailed list of qualifiers.
Sorts the results of your query by the number of comments, reactions, reactions-+1, reactions--1, reactions-smile, reactions-thinking_face, reactions-heart, reactions-tada, or interactions. You can also sort results by how recently the items were created or updated, Default: best match
Determines whether the first search result returned is the highest number of matches (desc) or lowest number of matches (asc). This parameter is ignored unless you provide sort.
The number of results per page (max 100). For more information, see “Using pagination in the REST API.”
The page number of the results to fetch. For more information, see “Using pagination in the REST API.”
Set to true to use advanced search.
Example: http://api.github.com/search/issues?q={query}&advanced_search=true
The type of search to perform on issues. When not specified, the default is lexical search.
semantic— performs a pure semantic (vector) search using embedding-based understanding.hybrid— combines semantic search with lexical search for best results.
Semantic and hybrid search require authentication and are rate limited to 10 requests per minute.
Only applies to issue searches (/search/issues).
Responses
Section titled “ Responses ”Response
object
Issue Search Result Item
object
A GitHub user.
object
A GitHub user.
object
object
object
object
A value assigned to an issue field
object
Unique identifier for the issue field.
The human-readable name of the issue field.
The data type of the issue field
Details about the selected option (only present for single_select fields)
object
Unique identifier for the option.
The name of the option
The color of the option
Details about the selected options
object
Unique identifier for the option.
The name of the option
The color of the option
A GitHub user.
object
A collection of related issues and pull requests.
object
The number of the milestone.
The state of the milestone.
The title of the milestone.
A GitHub user.
object
object
object
object
How the author is associated with the repository.
A repository on GitHub.
object
Unique identifier of the repository
The name of the repository.
License Simple
object
object
A GitHub user.
object
Whether the repository is private or public.
The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.
The default branch of the repository.
Whether this repository acts as a template that can be used to generate new repositories.
Whether issues are enabled.
Whether projects are enabled.
Whether the wiki is enabled.
Whether downloads are enabled.
Whether discussions are enabled.
Whether pull requests are enabled.
The policy controlling who can create pull requests: all or collaborators_only.
Whether the repository is archived.
Returns whether or not this repository disabled.
The repository visibility: public, private, or internal.
Whether to allow rebase merges for pull requests.
Whether to allow squash merges for pull requests.
Whether to allow Auto-merge to be used on pull requests.
Whether to delete head branches when pull requests are merged
Whether or not a pull request head branch that is behind its base branch can always be updated even if it is not required to be up to date before merging.
Whether a squash merge commit can use the pull request title as default. **This property is closing down. Please use squash_merge_commit_title instead.
The default value for a squash merge commit title:
PR_TITLE- default to the pull request’s title.COMMIT_OR_PR_TITLE- default to the commit’s title (if only one commit) or the pull request’s title (when more than one commit).
The default value for a squash merge commit message:
PR_BODY- default to the pull request’s body.COMMIT_MESSAGES- default to the branch’s commit messages.BLANK- default to a blank commit message.
The default value for a merge commit title.
PR_TITLE- default to the pull request’s title.MERGE_MESSAGE- default to the classic title for a merge message (e.g., Merge pull request #123 from branch-name).
The default value for a merge commit message.
PR_TITLE- default to the pull request’s title.PR_BODY- default to the pull request’s body.BLANK- default to a blank commit message.
Whether to allow merge commits for pull requests.
Whether to allow forking this repo
Whether to require contributors to sign off on web-based commits
Whether anonymous git access is enabled for this repository
The status of the code search index for this repository
object
The type assigned to the issue. This is only present for issues in repositories where issue types are supported.
object
The unique identifier of the issue type.
The node identifier of the issue type.
The name of the issue type.
The description of the issue type.
The color of the issue type.
The time the issue type created.
The time the issue type last updated.
The enabled state of the issue type.
GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
object
Unique identifier of the GitHub app
The slug name of the GitHub app
A GitHub user.
object
An enterprise on GitHub.
object
A short description of the enterprise.
The enterprise’s website URL.
Unique identifier of the enterprise
The name of the enterprise.
The slug url identifier for the enterprise.
The name of the GitHub app
The set of permissions for the GitHub app
object
The list of events for the GitHub app. Note that the installation_target, security_advisory, and meta events are not included because they are global events and not specific to an installation.
The number of installations associated with the GitHub app. Only returned when the integration is requesting details about itself.
Comments provide a way for people to collaborate on an issue.
object
Unique identifier of the issue comment
URL for the issue comment
Contents of the issue comment
A GitHub user.
object
How the author is associated with the repository.
GitHub apps are a new way to extend GitHub. They can be installed directly on organizations and user accounts and granted access to specific repositories. They come with granular permissions and built-in webhooks. GitHub apps are first class actors within GitHub.
object
Unique identifier of the GitHub app
The slug name of the GitHub app
A GitHub user.
object
An enterprise on GitHub.
object
A short description of the enterprise.
The enterprise’s website URL.
Unique identifier of the enterprise
The name of the enterprise.
The slug url identifier for the enterprise.
The name of the GitHub app
The set of permissions for the GitHub app
object
The list of events for the GitHub app. Note that the installation_target, security_advisory, and meta events are not included because they are global events and not specific to an installation.
The number of installations associated with the GitHub app. Only returned when the integration is requesting details about itself.
object
Context around who pinned an issue comment and when it was pinned.
object
A GitHub user.
object
Details about why an issue comment was minimized.
object
The reason the comment was minimized.
object
The type of search that was performed. Possible values are lexical, semantic, or hybrid.
When a semantic or hybrid search falls back to lexical search, this field contains the reasons for the fallback. Only present when a fallback occurred.
Examples
Hybrid search response
{ "total_count": 280, "incomplete_results": false, "search_type": "hybrid", "items": [ { "url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132", "repository_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit", "labels_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/labels{/name}", "comments_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/comments", "events_url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/issues/132/events", "html_url": "https://github.com/batterseapower/pinyin-toolkit/issues/132", "id": 35802, "node_id": "MDU6SXNzdWUzNTgwMg==", "number": 132, "title": "Line Number Indexes Beyond 20 Not Displayed", "type": { "id": 1, "node_id": "IT_kwDNJr9H", "name": "Bug", "description": "An unexpected problem or behavior", "color": "red", "created_at": "2023-10-09T13:30:49Z", "updated_at": "2024-05-30T18:20:53Z", "is_enabled": true }, "user": { "login": "Nick3C", "id": 90254, "node_id": "MDQ6VXNlcjkwMjU0", "avatar_url": "https://secure.gravatar.com/avatar/934442aadfe3b2f4630510de416c5718?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", "gravatar_id": "", "url": "https://api.github.com/users/Nick3C", "html_url": "https://github.com/Nick3C", "followers_url": "https://api.github.com/users/Nick3C/followers", "following_url": "https://api.github.com/users/Nick3C/following{/other_user}", "gists_url": "https://api.github.com/users/Nick3C/gists{/gist_id}", "starred_url": "https://api.github.com/users/Nick3C/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/Nick3C/subscriptions", "organizations_url": "https://api.github.com/users/Nick3C/orgs", "repos_url": "https://api.github.com/users/Nick3C/repos", "events_url": "https://api.github.com/users/Nick3C/events{/privacy}", "received_events_url": "https://api.github.com/users/Nick3C/received_events", "type": "User", "site_admin": true }, "labels": [ { "id": 4, "node_id": "MDU6TGFiZWw0", "url": "https://api.github.com/repos/batterseapower/pinyin-toolkit/labels/bug", "name": "bug", "color": "ff0000" } ], "state": "open", "assignee": null, "milestone": { "url": "https://api.github.com/repos/octocat/Hello-World/milestones/1", "html_url": "https://github.com/octocat/Hello-World/milestones/v1.0", "labels_url": "https://api.github.com/repos/octocat/Hello-World/milestones/1/labels", "id": 1002604, "node_id": "MDk6TWlsZXN0b25lMTAwMjYwNA==", "number": 1, "state": "open", "title": "v1.0", "description": "Tracking milestone for version 1.0", "creator": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false }, "open_issues": 4, "closed_issues": 8, "created_at": "2011-04-10T20:09:31Z", "updated_at": "2014-03-03T18:58:10Z", "closed_at": "2013-02-12T13:22:01Z", "due_on": "2012-10-09T23:39:01Z" }, "comments": 15, "created_at": "2009-07-12T20:10:41Z", "updated_at": "2009-07-19T09:23:43Z", "closed_at": null, "pull_request": { "url": "https://api/github.com/repos/octocat/Hello-World/pull/1347", "html_url": "https://github.com/octocat/Hello-World/pull/1347", "diff_url": "https://github.com/octocat/Hello-World/pull/1347.diff", "patch_url": "https://api.github.com/repos/octocat/Hello-World/pulls/1347" }, "body": "...", "score": 1, "locked": true, "author_association": "COLLABORATOR", "state_reason": "completed" } ]}Hybrid search with lexical fallback
When a hybrid or semantic search falls back to lexical, the response includes search_type set to “lexical” and lexical_fallback_reason listing the reasons. Items are the same shape as the default example.
{ "total_count": 280, "incomplete_results": false, "search_type": "lexical", "lexical_fallback_reason": [ "quoted_text" ], "items": [ "..." ]}Not modified
Requires authentication
Basic Error
object
Example generated
{ "message": "example", "documentation_url": "example", "url": "example", "status": "example"}Forbidden
Basic Error
object
Example generated
{ "message": "example", "documentation_url": "example", "url": "example", "status": "example"}Validation failed, or the endpoint has been spammed.
Validation Error
object
object
Example generated
{ "message": "example", "documentation_url": "example", "errors": [ { "resource": "example", "field": "example", "message": "example", "code": "example", "index": 1, "value": [ "example" ] } ]}Service unavailable
object
Example generated
{ "code": "example", "message": "example", "documentation_url": "example"}