Skip to content

Search code

GET
/search/code

Searches for query terms inside of a file. This method returns up to 100 results per page.

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.

For example, if you want to find the definition of the addClass function inside 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 is not valid, while amazing language:go is.

[!NOTE] repository.description, repository.owner.type, and repository.owner.node_id are closing down on this endpoint and will return null in a future API version. Use the Get a repository endpoint (GET /repos/{owner}/{repo}) to retrieve full repository metadata.

This endpoint requires you to authenticate and limits you to 10 requests per minute.

API method documentation

q
required
string

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 code” for a detailed list of qualifiers.

sort
deprecated
string
Allowed values: indexed

This field is closing down. Sorts the results of your query. Can only be indexed, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: best match

order
deprecated
string
default: desc
Allowed values: desc asc

This field is closing down. 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.

per_page
integer
default: 30

The number of results per page (max 100). For more information, see “Using pagination in the REST API.”

page
integer
default: 1

The page number of the results to fetch. For more information, see “Using pagination in the REST API.”

Response

Media type application/json
object
total_count
required
integer
incomplete_results
required
boolean
items
required
Array<object>
Code Search Result Item

Code Search Result Item

object
name
required
string
path
required
string
sha
required
string
url
required
string format: uri
git_url
required
string format: uri
html_url
required
string format: uri
repository
required
Minimal Repository

Minimal Repository

object
id
required
integer format: int64
node_id
required
string
name
required
string
full_name
required
string
owner
required
Simple User

A GitHub user.

object
name
string
nullable
email
string
nullable
login
required
string
id
required
integer format: int64
node_id
required
string
avatar_url
required
string format: uri
gravatar_id
required
string
nullable
url
required
string format: uri
html_url
required
string format: uri
followers_url
required
string format: uri
following_url
required
string
gists_url
required
string
starred_url
required
string
subscriptions_url
required
string format: uri
organizations_url
required
string format: uri
repos_url
required
string format: uri
events_url
required
string
received_events_url
required
string format: uri
type
required
string
site_admin
required
boolean
starred_at
string
user_view_type
string
private
required
boolean
html_url
required
string format: uri
description
required
string
nullable
fork
required
boolean
url
required
string format: uri
archive_url
required
string
assignees_url
required
string
blobs_url
required
string
branches_url
required
string
collaborators_url
required
string
comments_url
required
string
commits_url
required
string
compare_url
required
string
contents_url
required
string
contributors_url
required
string format: uri
deployments_url
required
string format: uri
downloads_url
required
string format: uri
events_url
required
string format: uri
forks_url
required
string format: uri
git_commits_url
required
string
git_refs_url
required
string
git_tags_url
required
string
git_url
string
issue_comment_url
required
string
issue_events_url
required
string
issues_url
required
string
keys_url
required
string
labels_url
required
string
languages_url
required
string format: uri
merges_url
required
string format: uri
milestones_url
required
string
notifications_url
required
string
pulls_url
required
string
releases_url
required
string
ssh_url
string
stargazers_url
required
string format: uri
statuses_url
required
string
subscribers_url
required
string format: uri
subscription_url
required
string format: uri
tags_url
required
string format: uri
teams_url
required
string format: uri
trees_url
required
string
clone_url
string
mirror_url
string
nullable
hooks_url
required
string format: uri
svn_url
string
homepage
string
nullable
language
string
nullable
forks_count
integer
stargazers_count
integer
watchers_count
integer
size

The size of the repository, in kilobytes. Size is calculated hourly. When a repository is initially created, the size is 0.

integer
default_branch
string
open_issues_count
integer
is_template
boolean
topics
Array<string>
has_issues
boolean
has_projects
boolean
has_wiki
boolean
has_pages
boolean
has_downloads
boolean
has_discussions
boolean
has_pull_requests
boolean
pull_request_creation_policy

The policy controlling who can create pull requests: all or collaborators_only.

string
Allowed values: all collaborators_only
archived
boolean
disabled
boolean
visibility
string
pushed_at
string format: date-time
nullable
created_at
string format: date-time
nullable
updated_at
string format: date-time
nullable
permissions
object
admin
boolean
maintain
boolean
push
boolean
triage
boolean
pull
boolean
role_name
string
temp_clone_token
string
delete_branch_on_merge
boolean
subscribers_count
integer
network_count
integer
code_of_conduct
Code Of Conduct

Code Of Conduct

object
key
required
string
name
required
string
url
required
string format: uri
body
string
html_url
required
string format: uri
nullable
license
object
key
string
name
string
spdx_id
string
url
string
nullable
node_id
string
forks
integer
open_issues
integer
watchers
integer
allow_forking
boolean
web_commit_signoff_required
boolean
security_and_analysis
object
advanced_security

Enable or disable GitHub Advanced Security for the repository.

For standalone Code Scanning or Secret Protection products, this parameter cannot be used.

object
status
string
Allowed values: enabled disabled
code_security
object
status
string
Allowed values: enabled disabled
dependabot_security_updates

Enable or disable Dependabot security updates for the repository.

object
status

The enablement status of Dependabot security updates for the repository.

string
Allowed values: enabled disabled
secret_scanning
object
status
string
Allowed values: enabled disabled
secret_scanning_push_protection
object
status
string
Allowed values: enabled disabled
secret_scanning_non_provider_patterns
object
status
string
Allowed values: enabled disabled
secret_scanning_ai_detection
object
status
string
Allowed values: enabled disabled
secret_scanning_delegated_alert_dismissal
object
status
string
Allowed values: enabled disabled
secret_scanning_delegated_bypass
object
status
string
Allowed values: enabled disabled
secret_scanning_delegated_bypass_options
object
reviewers

The bypass reviewers for secret scanning delegated bypass

Array<object>
object
reviewer_id
required

The ID of the team or role selected as a bypass reviewer

integer
reviewer_type
required

The type of the bypass reviewer

string
Allowed values: TEAM ROLE
mode

The bypass mode for the reviewer

string
default: ALWAYS
Allowed values: ALWAYS EXEMPT
custom_properties

The custom properties that were defined for the repository. The keys are the custom property names, and the values are the corresponding custom property values.

object
key
additional properties
any
score
required
number
file_size
integer
language
string
nullable
last_modified_at
string format: date-time
line_numbers
Array<string>
text_matches
Search Result Text Matches
Array<object>
object
object_url
string
object_type
string
nullable
property
string
fragment
string
matches
Array<object>
object
text
string
indices
Array<integer>
Examples
Example default
{
"total_count": 7,
"incomplete_results": false,
"items": [
{
"name": "classes.js",
"path": "src/attributes/classes.js",
"sha": "d7212f9dee2dcc18f084d7df8f417b80846ded5a",
"url": "https://api.github.com/repositories/167174/contents/src/attributes/classes.js?ref=825ac3773694e0cd23ee74895fd5aeb535b27da4",
"git_url": "https://api.github.com/repositories/167174/git/blobs/d7212f9dee2dcc18f084d7df8f417b80846ded5a",
"html_url": "https://github.com/jquery/jquery/blob/825ac3773694e0cd23ee74895fd5aeb535b27da4/src/attributes/classes.js",
"repository": {
"id": 167174,
"node_id": "MDEwOlJlcG9zaXRvcnkxNjcxNzQ=",
"name": "jquery",
"full_name": "jquery/jquery",
"owner": {
"login": "jquery",
"id": 70142,
"node_id": "MDQ6VXNlcjcwMTQy",
"avatar_url": "https://0.gravatar.com/avatar/6906f317a4733f4379b06c32229ef02f?d=https%3A%2F%2Fidenticons.github.com%2Ff426f04f2f9813718fb806b30e0093de.png",
"gravatar_id": "",
"url": "https://api.github.com/users/jquery",
"html_url": "https://github.com/jquery",
"followers_url": "https://api.github.com/users/jquery/followers",
"following_url": "https://api.github.com/users/jquery/following{/other_user}",
"gists_url": "https://api.github.com/users/jquery/gists{/gist_id}",
"starred_url": "https://api.github.com/users/jquery/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/jquery/subscriptions",
"organizations_url": "https://api.github.com/users/jquery/orgs",
"repos_url": "https://api.github.com/users/jquery/repos",
"events_url": "https://api.github.com/users/jquery/events{/privacy}",
"received_events_url": "https://api.github.com/users/jquery/received_events",
"type": "Organization",
"site_admin": false
},
"private": false,
"html_url": "https://github.com/jquery/jquery",
"description": "jQuery JavaScript Library",
"fork": false,
"url": "https://api.github.com/repos/jquery/jquery",
"forks_url": "https://api.github.com/repos/jquery/jquery/forks",
"keys_url": "https://api.github.com/repos/jquery/jquery/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/jquery/jquery/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/jquery/jquery/teams",
"hooks_url": "https://api.github.com/repos/jquery/jquery/hooks",
"issue_events_url": "https://api.github.com/repos/jquery/jquery/issues/events{/number}",
"events_url": "https://api.github.com/repos/jquery/jquery/events",
"assignees_url": "https://api.github.com/repos/jquery/jquery/assignees{/user}",
"branches_url": "https://api.github.com/repos/jquery/jquery/branches{/branch}",
"tags_url": "https://api.github.com/repos/jquery/jquery/tags",
"blobs_url": "https://api.github.com/repos/jquery/jquery/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/jquery/jquery/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/jquery/jquery/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/jquery/jquery/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/jquery/jquery/statuses/{sha}",
"languages_url": "https://api.github.com/repos/jquery/jquery/languages",
"stargazers_url": "https://api.github.com/repos/jquery/jquery/stargazers",
"contributors_url": "https://api.github.com/repos/jquery/jquery/contributors",
"subscribers_url": "https://api.github.com/repos/jquery/jquery/subscribers",
"subscription_url": "https://api.github.com/repos/jquery/jquery/subscription",
"commits_url": "https://api.github.com/repos/jquery/jquery/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/jquery/jquery/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/jquery/jquery/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/jquery/jquery/issues/comments/{number}",
"contents_url": "https://api.github.com/repos/jquery/jquery/contents/{+path}",
"compare_url": "https://api.github.com/repos/jquery/jquery/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/jquery/jquery/merges",
"archive_url": "https://api.github.com/repos/jquery/jquery/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/jquery/jquery/downloads",
"issues_url": "https://api.github.com/repos/jquery/jquery/issues{/number}",
"pulls_url": "https://api.github.com/repos/jquery/jquery/pulls{/number}",
"milestones_url": "https://api.github.com/repos/jquery/jquery/milestones{/number}",
"notifications_url": "https://api.github.com/repos/jquery/jquery/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/jquery/jquery/labels{/name}",
"deployments_url": "http://api.github.com/repos/octocat/Hello-World/deployments",
"releases_url": "http://api.github.com/repos/octocat/Hello-World/releases{/id}"
},
"score": 1
}
]
}

Not modified

Forbidden

Media type application/json
Basic Error

Basic Error

object
message
string
documentation_url
string
url
string
status
string
Example generated
{
"message": "example",
"documentation_url": "example",
"url": "example",
"status": "example"
}

Validation failed, or the endpoint has been spammed.

Media type application/json
Validation Error

Validation Error

object
message
required
string
documentation_url
required
string
errors
Array<object>
object
resource
string
field
string
message
string
code
required
string
index
integer
value
One of:
string
nullable
Example generated
{
"message": "example",
"documentation_url": "example",
"errors": [
{
"resource": "example",
"field": "example",
"message": "example",
"code": "example",
"index": 1,
"value": [
"example"
]
}
]
}

Service unavailable

Media type application/json
object
code
string
message
string
documentation_url
string
Example generated
{
"code": "example",
"message": "example",
"documentation_url": "example"
}