GET/search/issues

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:issue or is:pull-request qualifier will receive an HTTP 422 Unprocessable Entity response. To get results for both issues and pull requests, you must send separate queries for issues and pull requests. For more information about the is qualifier, see "Searching only issues or pull requests."

  • RetriesRetries up to 2×, 500ms backoff, 30s timeout.

7 parameters
qstringrequired
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](https://docs.github.com/rest/search/search#constructing-a-search-query). See "[Searching issues and pull requests](https://docs.github.com/search-github/searching-on-github/searching-issues-and-pull-requests)" for a detailed list of qualifiers.
sortstringoptional
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](https://docs.github.com/rest/search/search#ranking-search-results)
Allowed:commentsreactionsreactions-+1reactions--1reactions-smilereactions-thinking_facereactions-heartreactions-tadainteractionscreatedupdated
orderstringoptional
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`.
Allowed:descascDefault:desc
per_pageintegeroptional
The number of results per page (max 100). For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
Default:30
pageintegeroptional
The page number of the results to fetch. For more information, see "[Using pagination in the REST API](https://docs.github.com/rest/using-the-rest-api/using-pagination-in-the-rest-api)."
Default:1
advanced_searchstringoptional
Set to `true` to use advanced search. Example: `http://api.github.com/search/issues?q={query}&advanced_search=true`
search_typestringoptional
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`).
Allowed:semantichybrid

6 status codes
200Response
total_countintegerrequired
incomplete_resultsbooleanrequired
itemsarray<IssueSearchResultItem>required
search_typestringrequired
The type of search that was performed. Possible values are `lexical`, `semantic`, or `hybrid`.
Allowed:lexicalsemantichybrid
lexical_fallback_reasonarray<string>optional
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.
304Not modified
401Requires authentication
messagestringoptional
documentation_urlstringoptional
urlstringoptional
statusstringoptional
403Forbidden
messagestringoptional
documentation_urlstringoptional
urlstringoptional
statusstringoptional
422Validation failed, or the endpoint has been spammed.
messagestringrequired
documentation_urlstringrequired
errorsarray<object>optional
503Service unavailable
codestringoptional
messagestringoptional
documentation_urlstringoptional

Error handling

A 401 is returned: Requires authentication. A 403 is returned: Forbidden. A 422 is returned: Validation failed, or the endpoint has been spammed. A 503 is returned: Service unavailable.

Was this helpful?