GitHub repository search API
A GitHub repository search API turns a repo query into rows: owner/name, description, primary language, star count, topics, the archived flag and the last-update time. Send a query — GitHub's own search syntax works, language:go stars:>500 and all — pick best-match, stars or recently-updated order, and get the ranked list back without holding a token.
$0.0005 per delivered repository · $2 free every month · Failed runs never billed
$ curl $QD/github_repos/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"query": "web scraper", "sort": "stars", "max_results": 20}'
{ "status": "done", "count": 20,
"results": [
{
"repo": "…",
"owner": "…",
"name": "…",
"description": "…" } ],
"cost": 0.01 }
# 20 repositorys × $0.0005 · nothing delivered, nothing charged
What a GitHub repository search API does
The GitHub REST search endpoint throttles unauthenticated callers to ten requests a minute, and even with a token the search window is small enough that a sweep over a popular term exhausts it before you have paged through the matches. This collector reads the same ranking from the server-rendered search page instead, so there is no token to provision, no per-minute search window to back off from, and the only thing you size is how many repositories you want back.
Every row is already typed: stars as an integer, topics as an array, archived as a boolean, updated_at as an ISO timestamp. That is the shape you want for filtering a technology landscape — sort by stars to find the incumbents, sort by updated to drop the abandoned forks — without parsing star counts out of a rendered "1.2k" or guessing whether a repo is still alive.
What one repository looks like
Every delivered repository carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position. |
repo | string | owner/name. |
owner | string · nullable | Owner login. |
name | string · nullable | Repository name. |
description | string · nullable | Repo description. |
language | string · nullable | Primary language. |
stars | integer · nullable | Star count. |
topics | string[] | Repo topics. |
archived | boolean | Archived flag. |
updated_at | string · nullable | Last update (ISO 8601). |
url | string | Repository URL. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
query | string | yes | Search query — GitHub syntax works ("web scraper language:python stars:>100"). |
sort | string | no | best_match (default), stars, or updated. One of: best_match, stars, updated. |
country | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
max_results | integer | no | How many repositories to deliver at most (1–50). You pay only for delivered repositories. |
Pricing
GitHub repository search API pricing
$0.0005 per delivered repository. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 4,000 repositorys before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/github_repos/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"web scraper","sort":"stars","max_results":20}'
What people build with the GitHub repository search API
Three shapes of work this endpoint was designed around.
Dependency and tooling scouting
Search a problem space, sort by stars, and get the field of libraries that solve it with their language and topics attached — the shortlist an engineer would otherwise assemble tab by tab.
Ecosystem trend tracking
Re-run the same query on a schedule and watch star counts and last-update times move, so a technology that is gaining or going stale shows up as a number rather than a hunch.
Populating a software catalog
Feed queries per language or topic and store owner, description and topics as structured rows, ready to join against your own inventory of what your teams already use.
GitHub repository search API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| Auth | A personal access token per client | None — nothing to provision or rotate |
| Rate ceiling | The API's per-minute search window | The search page, paginated on our side |
| Query language | Whatever your client re-implements | GitHub's own syntax, passed straight through |
Does this use my GitHub token or count against the API?
Neither. It reads the public server-rendered search results page, ten repositories to a page, and paginates for you. There is no token to supply and nothing is drawn from the REST API's search quota, so a broad crawl does not trip the unauthenticated ten-requests-a-minute limit.
Can I use qualifiers like <code>language:</code> and <code>stars:>1000</code>?
Yes. The query is handed to GitHub verbatim, so the full search syntax works — language:python, stars:>1000, topic:, org: and the rest — and you can order the result by best match, stars or last update.
What fields come back per repository?
owner/name, description, primary language, star count, topics, the archived flag, the last-update timestamp and the repo URL. It is repository-level metadata for search and ranking; it does not open each repo to pull forks, issues, contributors or file contents.
Is there a free GitHub repository search API?
Every account gets $2 of credit every month with no card, which is about 4,000 delivered repositorys on this endpoint at $0.0005 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.0005. A run capped at 50 repositorys — the maximum for this collector — costs $0.025 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the GitHub repository search API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.