---
title: "Search issues and pull requests"
method: GET
path: "/search/issues"
tags: ["search"]
---

# Search issues and pull requests

`GET /search/issues`

Find issues by state and keyword. This method returns up to 100 results [per page](https://docs.github.com/enterprise-server@3.8/rest/guides/using-pagination-in-the-rest-api).

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](https://docs.github.com/enterprise-server@3.8/rest/search/search#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](https://docs.github.com/enterprise-server@3.8/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)."

## Query parameters

- `q` string, required
- `sort` 'comments' | 'reactions' | 'reactions-+1' | 'reactions--1' | 'reactions-smile' | 'reactions-thinking_face' | 'reactions-heart' | 'reactions-tada' | 'interactions' | 'created' | 'updated'
- `order` 'desc' | 'asc'
- `per_page` integer
- `page` integer

## Response `200`

Response

- object
  - `total_count` integer, required
  - `incomplete_results` boolean, required
  - `items` IssueSearchResultItem[], required
    - `url` string, uri, required
    - `repository_url` string, uri, required
    - `labels_url` string, required
    - `comments_url` string, uri, required
    - `events_url` string, uri, required
    - `html_url` string, uri, required
    - `id` integer, required
    - `node_id` string, required
    - `number` integer, required
    - `title` string, required
    - `locked` boolean, required
    - `active_lock_reason` string, nullable
    - `assignees` SimpleUser[], nullable
      - `name` string, nullable
      - `email` string, nullable
      - `login` string, required
      - `id` integer, required
      - `node_id` string, required
      - `avatar_url` string, uri, required
      - `gravatar_id` string, nullable, required
      - `url` string, uri, required
      - `html_url` string, uri, required
      - `followers_url` string, uri, required
      - `following_url` string, required
      - `gists_url` string, required
      - `starred_url` string, required
      - `subscriptions_url` string, uri, required
      - `organizations_url` string, uri, required
      - `repos_url` string, uri, required
      - `events_url` string, required
      - `received_events_url` string, uri, required
      - `type` string, required
      - `site_admin` boolean, required
      - `starred_at` string
    - `user` NullableSimpleUser, nullable, required — A GitHub user.
      - `name` string, nullable
      - `email` string, nullable
      - `login` string, required
      - `id` integer, required
      - `node_id` string, required
      - `avatar_url` string, uri, required
      - `gravatar_id` string, nullable, required
      - `url` string, uri, required
      - `html_url` string, uri, required
      - `followers_url` string, uri, required
      - `following_url` string, required
      - `gists_url` string, required
      - `starred_url` string, required
      - `subscriptions_url` string, uri, required
      - `organizations_url` string, uri, required
      - `repos_url` string, uri, required
      - `events_url` string, required
      - `received_events_url` string, uri, required
      - `type` string, required
      - `site_admin` boolean, required
      - `starred_at` string
    - `labels` object[], required
      - `id` integer
      - `node_id` string
      - `url` string
      - `name` string
      - `color` string
      - `default` boolean
      - `description` string, nullable
    - `state` string, required
    - `state_reason` string, nullable
    - `assignee` NullableSimpleUser, nullable, required — A GitHub user.
      - `name` string, nullable
      - `email` string, nullable
      - `login` string, required
      - `id` integer, required
      - `node_id` string, required
      - `avatar_url` string, uri, required
      - `gravatar_id` string, nullable, required
      - `url` string, uri, required
      - `html_url` string, uri, required
      - `followers_url` string, uri, required
      - `following_url` string, required
      - `gists_url` string, required
      - `starred_url` string, required
      - `subscriptions_url` string, uri, required
      - `organizations_url` string, uri, required
      - `repos_url` string, uri, required
      - `events_url` string, required
      - `received_events_url` string, uri, required
      - `type` string, required
      - `site_admin` boolean, required
      - `starred_at` string
    - `milestone` NullableMilestone, nullable, required — A collection of related issues and pull requests.
      - `url` string, uri, required
      - `html_url` string, uri, required
      - `labels_url` string, uri, required
      - `id` integer, required
      - `node_id` string, required
      - `number` integer, required — The number of the milestone.
      - `state` 'open' | 'closed', required — The state of the milestone.
      - `title` string, required — The title of the milestone.
      - `description` string, nullable, required
      - `creator` NullableSimpleUser, nullable, required — A GitHub user.
        - `name` string, nullable
        - `email` string, nullable
        - `login` string, required
        - `id` integer, required
        - `node_id` string, required
        - `avatar_url` string, uri, required
        - `gravatar_id` string, nullable, required
        - `url` string, uri, required
        - `html_url` string, uri, required
        - `followers_url` string, uri, required
        - `following_url` string, required
        - `gists_url` string, required
        - `starred_url` string, required
        - `subscriptions_url` string, uri, required
        - `organizations_url` string, uri, required
        - `repos_url` string, uri, required
        - `events_url` string, required
        - `received_events_url` string, uri, required
        - `type` string, required
        - `site_admin` boolean, required
        - `starred_at` string
      - `open_issues` integer, required
      - `closed_issues` integer, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `closed_at` string, date-time, nullable, required
      - `due_on` string, date-time, nullable, required
    - `comments` integer, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `closed_at` string, date-time, nullable, required
    - `text_matches` object[]
      - `object_url` string
      - `object_type` string, nullable
      - `property` string
      - `fragment` string
      - `matches` object[]
        - `text` string
        - `indices` integer[]
    - `pull_request` object
      - `merged_at` string, date-time, nullable
      - `diff_url` string, uri, nullable, required
      - `html_url` string, uri, nullable, required
      - `patch_url` string, uri, nullable, required
      - `url` string, uri, nullable, required
    - `body` string
    - `score` number, required
    - `author_association` 'COLLABORATOR' | 'CONTRIBUTOR' | 'FIRST_TIMER' | 'FIRST_TIME_CONTRIBUTOR' | 'MANNEQUIN' | 'MEMBER' | 'NONE' | 'OWNER', required — How the author is associated with the repository.
    - `draft` boolean
    - `repository` Repository — A repository on GitHub.
      - `id` integer, required — Unique identifier of the repository
      - `node_id` string, required
      - `name` string, required — The name of the repository.
      - `full_name` string, required
      - `license` NullableLicenseSimple, nullable, required — License Simple
        - `key` string, required
        - `name` string, required
        - `url` string, uri, nullable, required
        - `spdx_id` string, nullable, required
        - `node_id` string, required
        - `html_url` string, uri
      - `forks` integer, required
      - `permissions` object
        - `admin` boolean, required
        - `pull` boolean, required
        - `triage` boolean
        - `push` boolean, required
        - `maintain` boolean
      - `owner` SimpleUser, required — A GitHub user.
        - `name` string, nullable
        - `email` string, nullable
        - `login` string, required
        - `id` integer, required
        - `node_id` string, required
        - `avatar_url` string, uri, required
        - `gravatar_id` string, nullable, required
        - `url` string, uri, required
        - `html_url` string, uri, required
        - `followers_url` string, uri, required
        - `following_url` string, required
        - `gists_url` string, required
        - `starred_url` string, required
        - `subscriptions_url` string, uri, required
        - `organizations_url` string, uri, required
        - `repos_url` string, uri, required
        - `events_url` string, required
        - `received_events_url` string, uri, required
        - `type` string, required
        - `site_admin` boolean, required
        - `starred_at` string
      - `private` boolean, required — Whether the repository is private or public.
      - `html_url` string, uri, required
      - `description` string, nullable, required
      - `fork` boolean, required
      - `url` string, uri, required
      - `archive_url` string, required
      - `assignees_url` string, required
      - `blobs_url` string, required
      - `branches_url` string, required
      - `collaborators_url` string, required
      - `comments_url` string, required
      - `commits_url` string, required
      - `compare_url` string, required
      - `contents_url` string, required
      - `contributors_url` string, uri, required
      - `deployments_url` string, uri, required
      - `downloads_url` string, uri, required
      - `events_url` string, uri, required
      - `forks_url` string, uri, required
      - `git_commits_url` string, required
      - `git_refs_url` string, required
      - `git_tags_url` string, required
      - `git_url` string, required
      - `issue_comment_url` string, required
      - `issue_events_url` string, required
      - `issues_url` string, required
      - `keys_url` string, required
      - `labels_url` string, required
      - `languages_url` string, uri, required
      - `merges_url` string, uri, required
      - `milestones_url` string, required
      - `notifications_url` string, required
      - `pulls_url` string, required
      - `releases_url` string, required
      - `ssh_url` string, required
      - `stargazers_url` string, uri, required
      - `statuses_url` string, required
      - `subscribers_url` string, uri, required
      - `subscription_url` string, uri, required
      - `tags_url` string, uri, required
      - `teams_url` string, uri, required
      - `trees_url` string, required
      - `clone_url` string, required
      - `mirror_url` string, uri, nullable, required
      - `hooks_url` string, uri, required
      - `svn_url` string, uri, required
      - `homepage` string, uri, nullable, required
      - `language` string, nullable, required
      - `forks_count` integer, required
      - `stargazers_count` integer, required
      - `watchers_count` integer, required
      - `size` integer, required — The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.
      - `default_branch` string, required — The default branch of the repository.
      - `open_issues_count` integer, required
      - `is_template` boolean — Whether this repository acts as a template that can be used to generate new repositories.
      - `topics` string[]
      - `has_issues` boolean, required — Whether issues are enabled.
      - `has_projects` boolean, required — Whether projects are enabled.
      - `has_wiki` boolean, required — Whether the wiki is enabled.
      - `has_pages` boolean, required
      - `has_downloads` boolean, required — Whether downloads are enabled.
      - `has_discussions` boolean — Whether discussions are enabled.
      - `archived` boolean, required — Whether the repository is archived.
      - `disabled` boolean, required — Returns whether or not this repository disabled.
      - `visibility` string — The repository visibility: public, private, or internal.
      - `pushed_at` string, date-time, nullable, required
      - `created_at` string, date-time, nullable, required
      - `updated_at` string, date-time, nullable, required
      - `allow_rebase_merge` boolean — Whether to allow rebase merges for pull requests.
      - `temp_clone_token` string
      - `allow_squash_merge` boolean — Whether to allow squash merges for pull requests.
      - `allow_auto_merge` boolean — Whether to allow Auto-merge to be used on pull requests.
      - `delete_branch_on_merge` boolean — Whether to delete head branches when pull requests are merged
      - `allow_update_branch` boolean — 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.
      - `use_squash_pr_title_as_default` boolean — Whether a squash merge commit can use the pull request title as default. **This property has been deprecated. Please use `squash_merge_commit_title` instead.
      - `squash_merge_commit_title` 'PR_TITLE' | 'COMMIT_OR_PR_TITLE' — 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).
      - `squash_merge_commit_message` 'PR_BODY' | 'COMMIT_MESSAGES' | 'BLANK' — 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.
      - `merge_commit_title` 'PR_TITLE' | 'MERGE_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).
      - `merge_commit_message` 'PR_BODY' | 'PR_TITLE' | 'BLANK' — 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.
      - `allow_merge_commit` boolean — Whether to allow merge commits for pull requests.
      - `allow_forking` boolean — Whether to allow forking this repo
      - `web_commit_signoff_required` boolean — Whether to require contributors to sign off on web-based commits
      - `open_issues` integer, required
      - `watchers` integer, required
      - `master_branch` string
      - `starred_at` string
      - `anonymous_access_enabled` boolean — Whether anonymous git access is enabled for this repository
    - `body_html` string
    - `body_text` string
    - `timeline_url` string, uri
    - `performed_via_github_app` NullableIntegration, nullable — 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.
      - `id` integer, required — Unique identifier of the GitHub app
      - `slug` string — The slug name of the GitHub app
      - `node_id` string, required
      - `owner` NullableSimpleUser, nullable, required — A GitHub user.
        - `name` string, nullable
        - `email` string, nullable
        - `login` string, required
        - `id` integer, required
        - `node_id` string, required
        - `avatar_url` string, uri, required
        - `gravatar_id` string, nullable, required
        - `url` string, uri, required
        - `html_url` string, uri, required
        - `followers_url` string, uri, required
        - `following_url` string, required
        - `gists_url` string, required
        - `starred_url` string, required
        - `subscriptions_url` string, uri, required
        - `organizations_url` string, uri, required
        - `repos_url` string, uri, required
        - `events_url` string, required
        - `received_events_url` string, uri, required
        - `type` string, required
        - `site_admin` boolean, required
        - `starred_at` string
      - `name` string, required — The name of the GitHub app
      - `description` string, nullable, required
      - `external_url` string, uri, required
      - `html_url` string, uri, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `permissions` object, required — The set of permissions for the GitHub app
        - `issues` string
        - `checks` string
        - `metadata` string
        - `contents` string
        - `deployments` string
      - `events` string[], required — The list of events for the GitHub app
      - `installations_count` integer — The number of installations associated with the GitHub app
      - `client_id` string
      - `client_secret` string
      - `webhook_secret` string, nullable
      - `pem` string
    - `reactions` ReactionRollup
      - `url` string, uri, required
      - `total_count` integer, required
      - `+1` integer, required
      - `-1` integer, required
      - `laugh` integer, required
      - `confused` integer, required
      - `heart` integer, required
      - `hooray` integer, required
      - `eyes` integer, required
      - `rocket` integer, required

## Other responses

- `304` — Not modified
- `403` — Forbidden
- `422` — Validation failed, or the endpoint has been spammed.
- `503` — Service unavailable

---

[API](https://skmtc.net/github/apis/github-v3-rest-api-7.md) · [All operations](https://skmtc.net/github/apis/github-v3-rest-api-7/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/github/github-v3-rest-api-7/versions/5438365412fe/schema)
