---
title: "Search code"
method: GET
path: "/search/code"
tags: ["search"]
---

# Search code

`GET /search/code`

Searches for query terms inside of a file. This method returns up to 100 results [per page](https://docs.github.com/enterprise-server@3.5/rest/overview/resources-in-the-rest-api#pagination).

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/enterprise-server@3.5/rest/reference/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.

## Query parameters

- `q` string, required
- `sort` 'indexed'
- `order` 'desc' | 'asc'
- `per_page` integer
- `page` integer

## Response `200`

Response

- object
  - `total_count` integer, required
  - `incomplete_results` boolean, required
  - `items` CodeSearchResultItem[], required
    - `name` string, required
    - `path` string, required
    - `sha` string, required
    - `url` string, uri, required
    - `git_url` string, uri, required
    - `html_url` string, uri, required
    - `repository` MinimalRepository, required — Minimal Repository
      - `id` integer, required
      - `node_id` string, required
      - `name` string, required
      - `full_name` string, required
      - `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
      - `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
      - `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
      - `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
      - `mirror_url` string, nullable
      - `hooks_url` string, uri, required
      - `svn_url` string
      - `homepage` string, nullable
      - `language` string, nullable
      - `forks_count` integer
      - `stargazers_count` integer
      - `watchers_count` integer
      - `size` integer — The size of the repository. Size is calculated hourly. When a repository is initially created, the size is 0.
      - `default_branch` string
      - `open_issues_count` integer
      - `is_template` boolean
      - `topics` string[]
      - `has_issues` boolean
      - `has_projects` boolean
      - `has_wiki` boolean
      - `has_pages` boolean
      - `has_downloads` boolean
      - `archived` boolean
      - `disabled` boolean
      - `visibility` string
      - `pushed_at` string, date-time, nullable
      - `created_at` string, date-time, nullable
      - `updated_at` string, 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` CodeOfConduct — Code Of Conduct
        - `key` string, required
        - `name` string, required
        - `url` string, uri, required
        - `body` string
        - `html_url` string, uri, nullable, required
      - `license` object, nullable
        - `key` string
        - `name` string
        - `spdx_id` string
        - `url` string
        - `node_id` string
      - `forks` integer
      - `open_issues` integer
      - `watchers` integer
      - `allow_forking` boolean
    - `score` number, required
    - `file_size` integer
    - `language` string, nullable
    - `last_modified_at` string, date-time
    - `line_numbers` string[]
    - `text_matches` object[]
      - `object_url` string
      - `object_type` string, nullable
      - `property` string
      - `fragment` string
      - `matches` object[]
        - `text` string
        - `indices` integer[]

## 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-4.md) · [All operations](https://skmtc.net/github/apis/github-v3-rest-api-4/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/github/github-v3-rest-api-4/versions/ee6c7a46328e/schema)
