# GitHub Code Search API (`automly/github-code-search-api`) Actor

Search public GitHub code and export structured code-hit records for developer research, package discovery, code intelligence, and technical lead generation.

- **URL**: https://apify.com/automly/github-code-search-api.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** Developer tools, Lead generation, AI
- **Stats:** 4 total users, 3 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## GitHub Code Search API

GitHub Code Search API helps you find public code snippets, files, and repository context from GitHub code search results. Use it for dependency discovery, implementation research, package intelligence, security review, and technical lead generation.

### Why use this actor?

This actor turns GitHub code search into structured dataset rows you can filter, enrich, and route into AI workflows. It is useful when you need to discover how a library is used, find examples across repos, or identify code patterns in public projects.

### Features

- Search public GitHub code with flexible search queries
- Filter by repository, language, filename, and path
- Return repository context alongside each code hit
- Capture text-match snippets when GitHub provides them
- Optional token input for higher API limits and more reliable repeat runs
- Pay-per-event pricing aligned to successful code-hit records only

### Input

#### Simple code search

```json
{
  "query": "requests language:Python",
  "maxResults": 20
}
````

#### Search inside a specific repository

```json
{
  "query": "api key",
  "repo": "psf/requests",
  "filename": "README.md",
  "maxResults": 10
}
```

#### Input fields

- `query` (string, required): GitHub code search query.
- `maxResults` (integer): maximum code hits to return, capped at 100.
- `language` (string): optional language qualifier appended to the search query.
- `repo` (string): optional repository filter in `owner/name` format.
- `filename` (string): optional filename filter.
- `path` (string): optional path filter.
- `token` (string): optional GitHub token stored as a secret when used.

### Output

Sample record:

```json
{
  "recordType": "code-hit",
  "query": "requests language:Python",
  "repositoryFullName": "psf/requests",
  "repositoryUrl": "https://github.com/psf/requests",
  "repositoryDescription": "Python HTTP for Humans.",
  "repositoryStars": 53500,
  "repositoryForks": 9700,
  "repositoryOwnerLogin": "psf",
  "repositoryOwnerType": "Organization",
  "fileName": "__init__.py",
  "filePath": "requests/__init__.py",
  "htmlUrl": "https://github.com/psf/requests/blob/main/requests/__init__.py",
  "gitUrl": "https://api.github.com/repos/psf/requests/git/blobs/...",
  "apiUrl": "https://api.github.com/repos/psf/requests/contents/requests/__init__.py",
  "score": 1,
  "language": "Python",
  "matchedText": "..."
}
```

### Use cases

- Find real examples of how a library or API is used
- Build developer prospecting lists from public code context
- Research competitors, patterns, and implementation styles
- Enrich AI prompts with source code examples
- Monitor new code mentions of your product or package

### Limits and caveats

- GitHub search has public API limits, and unauthenticated requests are more constrained.
- The actor returns public code search results only.
- Very broad queries can return many matches; narrow the query for the best signal.

### Pricing

This actor uses pay-per-event pricing:

| Event | Price | When it's charged |
|-------|-------|-------------------|
| `code-hit-produced` | $0.001 / item | Per code hit successfully produced |

You pay only for results returned by the actor.

### FAQ

#### Do I need a GitHub token?

No, but using a token improves reliability and rate limits for repeated runs.

#### Can I search a single repository?

Yes. Use `repo:owner/name` or the `repo` input field.

#### What if my run charge limit is reached?

The actor stops gracefully after the last chargeable result and keeps already produced items.

# Actor input Schema

## `query` (type: `string`):

GitHub code search query. Use keywords plus optional qualifiers like language:Python, repo:owner/name, filename:requirements.txt, or path:src/.

## `maxResults` (type: `integer`):

Maximum code hits to return. Values above 100 are clamped for reliable runs.

## `language` (type: `string`):

Optional programming language appended to the search query. Leave empty for all languages.

## `repo` (type: `string`):

Optional repository filter in owner/name format, e.g. psf/requests.

## `filename` (type: `string`):

Optional filename filter, e.g. package.json or README.md.

## `path` (type: `string`):

Optional path filter, e.g. src/ or docs/.

## `token` (type: `string`):

Optional GitHub token for higher API limits. Store it as a secret when used.

## Actor input object example

```json
{
  "query": "requests language:Python",
  "maxResults": 50,
  "language": "",
  "repo": "",
  "filename": "",
  "path": ""
}
```

# Actor output Schema

## `records` (type: `string`):

All records produced by this run.

## `overview` (type: `string`):

Dataset presented using the dataset schema overview view.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/github-code-search-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("automly/github-code-search-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call automly/github-code-search-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automly/github-code-search-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GitHub Code Search API",
        "description": "Search public GitHub code and export structured code-hit records for developer research, package discovery, code intelligence, and technical lead generation.",
        "version": "1.0",
        "x-build-id": "jTeGMzj11UDEtwugC"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automly~github-code-search-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automly-github-code-search-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automly~github-code-search-api/runs": {
            "post": {
                "operationId": "runs-sync-automly-github-code-search-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automly~github-code-search-api/run-sync": {
            "post": {
                "operationId": "run-sync-automly-github-code-search-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "query"
                ],
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "GitHub code search query. Use keywords plus optional qualifiers like language:Python, repo:owner/name, filename:requirements.txt, or path:src/.",
                        "default": "requests language:Python"
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum code hits to return. Values above 100 are clamped for reliable runs.",
                        "default": 50
                    },
                    "language": {
                        "title": "Language filter",
                        "type": "string",
                        "description": "Optional programming language appended to the search query. Leave empty for all languages.",
                        "default": ""
                    },
                    "repo": {
                        "title": "Repository filter",
                        "type": "string",
                        "description": "Optional repository filter in owner/name format, e.g. psf/requests.",
                        "default": ""
                    },
                    "filename": {
                        "title": "Filename filter",
                        "type": "string",
                        "description": "Optional filename filter, e.g. package.json or README.md.",
                        "default": ""
                    },
                    "path": {
                        "title": "Path filter",
                        "type": "string",
                        "description": "Optional path filter, e.g. src/ or docs/.",
                        "default": ""
                    },
                    "token": {
                        "title": "GitHub token",
                        "type": "string",
                        "description": "Optional GitHub token for higher API limits. Store it as a secret when used."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
