openapi: 3.0.3
info:
version: 1.1.4
title: GitHub Search API
description: Use the REST API to search for specific items on GitHub.
license:
name: MIT
url: https://spdx.org/licenses/MIT
termsOfService: https://docs.github.com/articles/github-terms-of-service
contact:
name: Support
url: https://support.github.com/contact?tags=dotcom-rest-api
x-github-plan: ghes
x-github-release: 3.9
tags:
- name: Code
- name: Commits
- name: Issues
- name: Labels
- name: Pull
- name: Repositories
- name: Requests
- name: Search
- name: Topics
- name: Users
servers:
- url: '{protocol}://{hostname}'
variables:
hostname:
description: Self-hosted Enterprise Server hostname
default: api.github.com
protocol:
description: Self-hosted Enterprise Server protocol
default: https
externalDocs:
description: GitHub Enterprise Developer Docs
url: https://docs.github.com/[email protected]/rest/
paths:
/search/code:
get:
summary: GitHub Search Code
description: >-
Searches for query terms inside of a file. This method returns up to 100
results [per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
When searching for code, you can get text match metadata for the file
**content** and file **path** 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/[email protected]/rest/search/search#text-match-metadata).
For example, if you want to find the definition of the `addClass`
function inside [jQuery](https://github.com/jquery/jquery) repository,
your query would look something like this:
`q=addClass+in:file+language:js+repo:jquery/jquery`
This query searches for the keyword `addClass` within a file's contents.
The query limits the search to files where the language is JavaScript in
the `jquery/jquery` repository.
Considerations for code search:
Due to the complexity of searching code, there are a few restrictions on
how searches are performed:
* Only the _default branch_ is considered. In most cases, this will be
the `master` branch.
* Only files smaller than 384 KB are searchable.
* You must always include at least one search term when searching
source code. For example, searching for
[`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code)
is not valid, while [`amazing
language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code)
is.
tags:
- Code
- Search
operationId: searchCode
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-code
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
See "[Searching
code](https://docs.github.com/[email protected]/search-github/searching-on-github/searching-code)"
for a detailed list of qualifiers.
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
Sorts the results of your query. Can only be `indexed`, which
indicates how recently a file has been indexed by the GitHub
Enterprise Server search infrastructure. Default: [best
match](https://docs.github.com/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
type: string
enum:
- indexed
example: indexed
- name: order
description: >-
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`.
in: query
required: false
schema:
type: string
enum:
- desc
- asc
default: desc
example: desc
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/code-search-result-item'
examples:
default:
$ref: '#/components/examples/code-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/validation_failed'
'503':
$ref: '#/components/responses/service_unavailable'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
x-api-evangelist-certified: '2025-07-18'
x-api-naftiko-published: '2025-07-18'
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/commits:
get:
summary: GitHub Search Commits
description: >-
Find commits via various criteria on the default branch (usually
`main`). This method returns up to 100 results [per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
When searching for commits, you can get text match metadata for the
**message** field when you provide the `text-match` media type. For more
details about how to receive highlighted search results, see [Text match
metadata](https://docs.github.com/[email protected]/rest/search/search#text-match-metadata).
For example, if you want to find commits related to CSS in the
[octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife)
repository. Your query would look something like this:
`q=repo:octocat/Spoon-Knife+css`
tags:
- Commits
- Search
operationId: searchCommits
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-commits
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
See "[Searching
commits](https://docs.github.com/[email protected]/search-github/searching-on-github/searching-commits)"
for a detailed list of qualifiers.
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
Sorts the results of your query by `author-date` or
`committer-date`. Default: [best
match](https://docs.github.com/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
type: string
enum:
- author-date
- committer-date
example: author-date
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/commit-search-result-item'
examples:
default:
$ref: '#/components/examples/commit-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
x-api-evangelist-certified: '2025-07-18'
x-api-naftiko-published: '2025-07-18'
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/issues:
get:
summary: GitHub Search Issues and Pull Requests
description: >-
Find issues by state and keyword. This method returns up to 100 results
[per
page](https://docs.github.com/[email protected]/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/[email protected]/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/[email protected]/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-only-issues-or-pull-requests)."
tags:
- Issues
- Pull
- Requests
- Search
operationId: searchIssuesAndPullRequests
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-issues-and-pull-requests
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
See "[Searching issues and pull
requests](https://docs.github.com/[email protected]/search-github/searching-on-github/searching-issues-and-pull-requests)"
for a detailed list of qualifiers.
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
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/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
type: string
enum:
- comments
- reactions
- reactions-+1
- reactions--1
- reactions-smile
- reactions-thinking_face
- reactions-heart
- reactions-tada
- interactions
- created
- updated
example: comments
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/issue-search-result-item'
examples:
default:
$ref: '#/components/examples/issue-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
'403':
$ref: '#/components/responses/forbidden'
'422':
$ref: '#/components/responses/validation_failed'
'503':
$ref: '#/components/responses/service_unavailable'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
x-api-evangelist-certified: '2025-07-18'
x-api-naftiko-published: '2025-07-18'
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/labels:
get:
summary: GitHub Search Labels
description: >-
Find labels in a repository with names or descriptions that match search
keywords. Returns up to 100 results [per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
When searching for labels, you can get text match metadata for the label
**name** and **description** 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/[email protected]/rest/search/search#text-match-metadata).
For example, if you want to find labels in the `linguist` repository
that match `bug`, `defect`, or `enhancement`. Your query might look like
this:
`q=bug+defect+enhancement&repository_id=64778136`
The labels that best match the query appear first in the search results.
tags:
- Labels
- Search
operationId: searchLabels
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-labels
parameters:
- name: repository_id
description: The id of the repository.
in: query
required: true
schema:
type: integer
example: 42
- name: q
description: >-
The search keywords. This endpoint does not accept qualifiers in the
query. To learn more about the format of the query, see
[Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
Sorts the results of your query by when the label was `created` or
`updated`. Default: [best
match](https://docs.github.com/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
type: string
enum:
- created
- updated
example: created
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/label-search-result-item'
examples:
default:
$ref: '#/components/examples/label-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
'422':
$ref: '#/components/responses/validation_failed'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/repositories:
get:
summary: GitHub Search Repositories
description: >-
Find repositories via various criteria. This method returns up to 100
results [per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
When searching for repositories, you can get text match metadata for the
**name** and **description** 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/[email protected]/rest/search/search#text-match-metadata).
For example, if you want to search for popular Tetris repositories
written in assembly code, your query might look like this:
`q=tetris+language:assembly&sort=stars&order=desc`
This query searches for repositories with the word `tetris` in the name,
the description, or the README. The results are limited to repositories
where the primary language is assembly. The results are sorted by stars
in descending order, so that the most popular repositories appear first
in the search results.
tags:
- Repositories
- Search
operationId: searchRepositories
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-repositories
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
See "[Searching for
repositories](https://docs.github.com/[email protected]/articles/searching-for-repositories/)"
for a detailed list of qualifiers.
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
Sorts the results of your query by number of `stars`, `forks`, or
`help-wanted-issues` or how recently the items were `updated`.
Default: [best
match](https://docs.github.com/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
type: string
enum:
- stars
- forks
- help-wanted-issues
- updated
example: stars
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/repo-search-result-item'
examples:
default:
$ref: '#/components/examples/repo-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
'422':
$ref: '#/components/responses/validation_failed'
'503':
$ref: '#/components/responses/service_unavailable'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
x-api-evangelist-certified: '2025-07-18'
x-api-naftiko-published: '2025-07-18'
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/topics:
get:
summary: GitHub Search Topics
description: >-
Find topics via various criteria. Results are sorted by best match. This
method returns up to 100 results [per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
See "[Searching
topics](https://docs.github.com/[email protected]/articles/searching-topics/)"
for a detailed list of qualifiers.
When searching for topics, you can get text match metadata for the
topic's **short\_description**, **description**, **name**, or
**display\_name** field 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/[email protected]/rest/search/search#text-match-metadata).
For example, if you want to search for topics related to Ruby that are
featured on https://github.com/topics. Your query might look like this:
`q=ruby+is:featured`
This query searches for topics with the keyword `ruby` and limits the
results to find only topics that are featured. The topics that are the
best match for the query appear first in the search results.
tags:
- Search
- Topics
operationId: searchTopics
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-topics
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
in: query
required: true
schema:
type: string
example: example_value
- $ref: '#/components/parameters/per-page'
- $ref: '#/components/parameters/page'
- in: header
name: Authorization
schema:
type: string
example: example_value
- in: header
name: X-GitHub-Api-Version
schema:
type: string
default: '2022-11-28'
example: example_value
- in: header
name: Accept
schema:
type: string
default: application/vnd.github+json
example: example_value
responses:
'200':
description: Response
content:
application/json:
schema:
type: object
required:
- total_count
- incomplete_results
- items
properties:
total_count:
type: integer
incomplete_results:
type: boolean
items:
type: array
items:
$ref: '#/components/schemas/topic-search-result-item'
examples:
default:
$ref: '#/components/examples/topic-search-result-item-paginated'
'304':
$ref: '#/components/responses/not_modified'
x-github:
githubCloudOnly: false
enabledForGitHubApps: true
category: search
subcategory: search
x-api-evangelist-certified: '2025-07-18'
x-api-naftiko-published: '2025-07-18'
security:
- bearerHttpAuthentication: []
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/search/users:
get:
summary: GitHub Search Users
description: >-
Find users via various criteria. This method returns up to 100 results
[per
page](https://docs.github.com/[email protected]/rest/guides/using-pagination-in-the-rest-api).
When searching for users, you can get text match metadata for the issue
**login**, public **email**, and **name** fields when you pass the
`text-match` media type. For more details about highlighting search
results, see [Text match
metadata](https://docs.github.com/[email protected]/rest/search/search#text-match-metadata).
For more details about how to receive highlighted search results, see
[Text match
metadata](https://docs.github.com/[email protected]/rest/search/search#text-match-metadata).
For example, if you're looking for a list of popular users, you might
try this query:
`q=tom+repos:%3E42+followers:%3E1000`
This query searches for users with the name `tom`. The results are
restricted to users with more than 42 repositories and over 1,000
followers.
This endpoint does not accept authentication and will only include
publicly visible users. As an alternative, you can use the GraphQL API.
The GraphQL API requires authentication and will return private users,
including Enterprise Managed Users (EMUs), that you are authorized to
view. For more information, see "[GraphQL
Queries](https://docs.github.com/[email protected]/graphql/reference/queries#search)."
tags:
- Search
- Users
operationId: searchUsers
externalDocs:
description: API method documentation
url: >-
https://docs.github.com/[email protected]/rest/search/search#search-users
parameters:
- name: q
description: >-
The query contains one or more search keywords and qualifiers.
Qualifiers allow you to limit your search to specific areas of
GitHub Enterprise Server. The REST API supports the same qualifiers
as the web interface for GitHub Enterprise Server. To learn more
about the format of the query, see [Constructing a search
query](https://docs.github.com/[email protected]/rest/search/search#constructing-a-search-query).
See "[Searching
users](https://docs.github.com/[email protected]/search-github/searching-on-github/searching-users)"
for a detailed list of qualifiers.
in: query
required: true
schema:
type: string
example: example_value
- name: sort
description: >-
Sorts the results of your query by number of `followers` or
`repositories`, or when the person `joined` GitHub Enterprise
Server. Default: [best
match](https://docs.github.com/[email protected]/rest/search/search#ranking-search-results)
in: query
required: false
schema:
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/github/refs/heads/main/openapi/github-search-api-openapi.yml