GitHub APIgithub.com ↗
Access GitHub repository metadata, file trees, README content, releases, issues with comments, and user profiles via a single structured API.
What is the GitHub API?
This API exposes 10 endpoints covering GitHub repositories, source code, and user profiles. Use get_repo_info to pull star counts, fork counts, topics, license, and contributor activity; search_repos to run GitHub's full query syntax across all public repos; or get_issue_detail to retrieve a complete issue thread including per-comment reactions. Responses return structured JSON with no GitHub API token required on your end.
curl -X POST 'https://api.parse.bot/scraper/c62c5062-8f8d-4477-ba78-2b9c68a1788b/get_repo_info' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"repo": "react",
"owner": "facebook"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace github-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
GitHub Repository & User Data API - Parse SDK Example
Discover trending repos, inspect code, and explore developer profiles.
"""
from parse_apis.github_repository_user_data_api import GitHub, RepoSort, Order, IssueState, IssueSort
github = GitHub()
# Get a repository directly and explore its sub-resources
repo = github.repositories.get(owner="facebook", repo="react")
print(repo.full_name, repo.stars, repo.primary_language)
# Read the README
readme = repo.readme.get()
print(readme.name, readme.size)
# Browse issues
for issue in repo.issues.list(state=IssueState.OPEN, sort=IssueSort.COMMENTS, direction=Order.DESC, limit=3):
print(issue.number, issue.title, issue.comments_count)
# Get issue detail with comments
detail = repo.issues.get(issue_number="285")
print(detail.title, detail.state, detail.comments_count)
# Search repositories
for summary in github.repositorysummaries.search(query="language:python topic:machine-learning", sort=RepoSort.STARS, order=Order.DESC, limit=5):
print(summary.full_name, summary.stars, summary.language)
# Navigate from summary to full detail
full_repo = summary.details()
print(full_repo.full_name, full_repo.contributors_count, full_repo.license)
# Browse file tree
tree = repo.files.tree()
print(tree.total_items, tree.branch)
# Get a user profile and their starred repos
user = github.users.get(login="torvalds")
print(user.login, user.name, user.followers, user.total_stars_received)
for starred in user.starred.list(limit=5):
print(starred.full_name, starred.stars)
Fetches detailed repository metadata: name, description, languages, size, dates, star/fork/issue counts, contributors count, recent commit activity, topics, and license. Requires one round-trip per sub-resource (languages, contributors, commits) so is heavier than search_repos for bulk discovery.
| Param | Type | Description |
|---|---|---|
| reporequired | string | Repository name, e.g. 'react' |
| ownerrequired | string | Repository owner (user or organization), e.g. 'facebook' |
{
"type": "object",
"fields": {
"name": "string",
"forks": "integer",
"owner": "object (login, type, avatar_url)",
"stars": "integer",
"topics": "array of strings",
"is_fork": "boolean",
"license": "string or null",
"size_kb": "integer",
"homepage": "string",
"html_url": "string",
"watchers": "integer",
"full_name": "string",
"languages": "object (language: bytes)",
"pushed_at": "string (ISO date)",
"created_at": "string (ISO date)",
"updated_at": "string (ISO date)",
"description": "string",
"is_archived": "boolean",
"open_issues": "integer",
"subscribers": "integer",
"network_count": "integer",
"default_branch": "string",
"recent_commits": "array of objects (sha, message, author, author_login, date)",
"primary_language": "string",
"contributors_count": "integer or null"
},
"sample": {
"data": {
"name": "react",
"forks": 51039,
"owner": {
"type": "Organization",
"login": "react",
"avatar_url": "https://avatars.githubusercontent.com/u/102812?v=4"
},
"stars": 245711,
"topics": [
"declarative",
"frontend",
"javascript"
],
"is_fork": false,
"license": "MIT License",
"size_kb": 993559,
"homepage": "https://react.dev",
"html_url": "https://github.com/react/react",
"watchers": 245711,
"full_name": "react/react",
"languages": {
"Rust": 3540092,
"JavaScript": 5591707
},
"pushed_at": "2026-06-10T05:49:57Z",
"created_at": "2013-05-24T16:15:54Z",
"updated_at": "2026-06-10T06:22:04Z",
"description": "The library for web and native user interfaces.",
"is_archived": false,
"open_issues": 1278,
"subscribers": 6720,
"network_count": 51039,
"default_branch": "main",
"recent_commits": [
{
"sha": "34b78a28",
"date": "2026-06-09T22:38:32Z",
"author": "lauren",
"message": "Drop the regex dependency",
"author_login": "poteto"
}
],
"primary_language": "JavaScript",
"contributors_count": 1
},
"status": "success"
}
}About the GitHub API
Repository Data
get_repo_info returns a detailed snapshot of any public repository: stars, forks, size_kb, topics, license, is_fork, and an owner object with login, type, and avatar_url. It performs separate sub-requests for languages, contributors, and recent commits, making it heavier than search_repos but more complete. get_repo_readme returns the decoded plain-text content of the README file along with download_url and html_url; it returns a 404 input_not_found error when no README exists.
Code and File Access
get_file_content retrieves either a decoded UTF-8 file body or a directory listing depending on the path input. For directories, items contains each child entry with name, path, type, size, html_url, and download_url. An empty path returns the root of the repository. get_file_tree returns the full Git tree as an array of objects with path, type, and size, plus a file_type_summary object that maps file extensions to counts — useful for quickly profiling a codebase. The truncated boolean indicates when the upstream tree is too large to return completely.
Issues and Releases
get_repo_issues lists repository issues filtered by state (open/closed/all) and labels, with pull requests automatically excluded. Each issue object includes labels, assignees, comments_count, and closed_at. get_issue_detail goes deeper: pass include_comments: true to fetch the full conversation thread, where each comment carries user, body, created_at, updated_at, and a reactions object. get_repo_releases returns paginated release objects in newest-first order, including tag_name, prerelease, draft, body (release notes), and an assets array with download links.
Search and User Profiles
search_repos supports the full GitHub search qualifier syntax — language:python, stars:>1000, topic:machine-learning — and accepts sort (stars, forks, updated) and order parameters with pagination up to 100 results per page. get_user_profile returns bio, location, email, follower/following counts, and total stars received, but only for individual user accounts, not organizations. get_user_starred paginates through a user's starred repositories, returning name, full_name, description, language, and topics for each.
The GitHub API is a managed, monitored endpoint for github.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when github.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official github.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate star and fork counts across competing open-source libraries using search_repos with language and topic qualifiers.
- Build a changelog feed by polling get_repo_releases for new version tags, prerelease flags, and release note bodies.
- Index project documentation for AI retrieval by fetching README content via get_repo_readme and file contents via get_file_content.
- Audit repository structure and language distribution using get_file_tree's file_type_summary field.
- Track open bug reports and their discussion threads by combining get_repo_issues with get_issue_detail including comments.
- Profile a developer's interests and activity by reading get_user_profile and paginating through get_user_starred.
- Discover repositories matching niche criteria such as 'topic:homelab stars:>500 language:go' using search_repos query syntax.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.