GitHub API: Search repositories
Finds public GitHub repositories by keywords, with an optional language filter and sort order. Returns up to 100 matches.
Unofficial. Not affiliated with or endorsed by GitHub.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Sort optional
sort Order of results, such as stars.
best_match (default)
One of
best_match,stars,recently_updated.- Query, required
query Keywords to search for, such as invoice pdf generator.
invoice pdf generator
- Language optional
language Repository language, such as Python. Use any for no language filter.
any (default)
- Max Results optional
max_results Maximum repositories to return, such as 20.
20 (default)
Whole number from 1 to 100.
Input as JSON
{ "query": "invoice pdf generator"}Output
{ "repositories": [ { "name": "InvoiceGenerator", "forks": 125, "owner": "by-cx", "stars": 184, "full_name": "by-cx/InvoiceGenerator" , "description": "Library to generate PDF invoices.", "project_link": "https://github.com/by-cx/InvoiceGenerator" , "main_language": "Python", "repository_id": 2173993, "last_updated_date": "2026-08-12" }, { "name": "react-invoice-generator", "forks": 273, "owner": "tuanpham-dev", "stars": 678, "full_name": "tuanpham-dev/react-invoice-generator" , "description": "React Invoice Generator allows you quickly make invoices and export them as PDF", "project_link": "https://github.com/tuanpham-dev/react-invoice-generator" , "main_language": "TypeScript", "repository_id": 276736432, "last_updated_date": "2026-10-13" }, { "name": "invoice-generator", "forks": 228, "owner": "johnuberbacher", "stars": 295, "full_name": "johnuberbacher/invoice-generator" , "description": "An Invoice creator project built with React. Uses jspdf-react to capture the data from the modal and convert it from canvas -> pdf.", "project_link": "https://github.com/johnuberbacher/invoice-generator" , "main_language": "JavaScript", "repository_id": 403724136, "last_updated_date": "2026-10-15" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"github.com/search_repositories","input":{"query":"invoice pdf generator"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "github.com/search_repositories" , "input": { "query": "invoice pdf generator" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "github.com/search_repositories" , "input": { "query": "invoice pdf generator" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run github.com/search_repositories# with {"query":"invoice pdf generator"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "query" ], "properties": { "sort": { "enum": [ "best_match", "stars", "recently_updated" ], "type": "string", "default": "best_match", "description": "Order of results, such as stars." }, "query": { "type": "string", "minLength": 1, "description": "Keywords to search for, such as invoice pdf generator." }, "language": { "type": "string", "default": "any", "description": "Repository language, such as Python. Use any for no language filter." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum repositories to return, such as 20." } }}Output schema
{ "type": "object", "required": [ "repositories" ], "properties": { "repositories": { "type": "array", "items": { "type": "object", "required": [ "name", "owner", "description", "stars", "forks", "main_language", "last_updated_date", "project_link", "full_name", "repository_id" ], "properties": { "name": { "type": "string", "description": "Project name." }, "forks": { "type": "integer", "description": "Fork count." }, "owner": { "type": "string", "description": "Owner account name." }, "stars": { "type": "integer", "description": "Star count." }, "full_name": { "type": "string", "description": "Owner and project name." }, "description": { "type": [ "string", "null" ], "description": "Project description, if provided." }, "project_link": { "type": "string", "format": "uri", "description": "Project page on GitHub." }, "main_language": { "type": [ "string", "null" ], "description": "Main programming language, if known." }, "repository_id": { "type": "integer", "description": "GitHub repository ID." }, "last_updated_date": { "type": [ "string", "null" ], "format": "date", "description": "Date the repository was last updated." } }, "additionalProperties": false }, "description": "Public repositories matching the search." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
github.com/search_repositories- Returns
- name, owner, description, stars, forks, main_language, last_updated_date, project_link, full_name, repository_id
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method github.com/search_repositories with the inputs above.
Ask your agent
- Find the top 15 most starred Rust repositories about async web frameworks
- I need public repos for a markdown to PDF converter sorted by recently updated, max 50
- Show me JavaScript libraries for drag and drop kanban boards, best matches first
- On GitHub, look up Go repositories related to distributed key value stores ordered by stars
- Give me 30 Python projects for parsing invoice PDFs with the most forks listed first
See more
All GitHub methodsLooks up a public GitHub repository by name, owner/name, or link and returns its stars, forks, release, commit and contributor facts.
github.com/get_repositoryLists public issues or pull requests for a GitHub project, with state, label and sort options. A bare project name matches the most-starred repository with that name.
github.com/list_issuesLists up to 25 public repositories trending on GitHub, in page order, optionally filtered by programming language and time period.
github.com/list_trending_repositoriesLists published, non-draft releases of a public GitHub project, newest first. A bare project name matches the most-starred repository.
github.com/list_releasesFinds Rust crates on crates.io by keywords, sorted by relevance, total downloads, recent downloads, or newest creation.
crates.io/search_cratesSearches PyPI by keywords and returns matching packages in relevance order, each with its latest version and that version's release date. Returns up to 100 results.
pypi.org/search_packagesFinds public Hugging Face models by search words, with an optional task and sort order. License is null when the model does not publish one.
huggingface.co/search_modelsFinds public Reddit posts by topic, optionally in one community, for a time window and sort order. Returns up to 100 posts in Reddit search order with score, comment count, text and link.
reddit.com/search_posts