GitHub

Search GitHub repositories, users and issues, and look up users and repositories by name, as typed JSON.

Embed
Preview of the card
<a href="https://scrapelyserp.com/docs/github"><img src="https://scrapelyserp.com/docs/_api/public/orgs/affc5b0f-d3c2-423a-8143-9d10db5736ae/spaces/981e6275-da3f-446c-82de-889f59c83b6f/pages/b0871731-4ddd-4509-b595-af59291fa6c9/social-card.svg?v=3e7ae33eec8b" alt="GitHub" width="600" height="315"></a>

Search GitHub repositories, users and issues, and look up users and repositories by name, as typed JSON.

At a glance

Two GET endpoints under /v1/structured/github/. Each answers { endpoint, url, credits, duration_ms, data }. Each call is charged for the data it moves; a request we could not read is 502 TARGET_FAILED and costs nothing. Public data only, under GitHub's terms for its public API.

Endpoint

What

Typical (estimate)

GET /v1/structured/github/search

Repositories, users or issues matching a query

about 2 million results per credit, up to 100 per call

GET /v1/structured/github/lookup

Users and repositories by name

about 1 million per credit, up to 50 per call

curl -G "https://api.scrapelyserp.com/v1/structured/github/search" \
  -H "Authorization: Bearer $SCRAPELY_API_KEY" \
  -d type=repositories \
  --data-urlencode "query=web scraper language:go" \
  -d sort=stars

How much you can pull

GitHub limits how much one address may read, so requests are spread across many exits and the limit rarely shows. When an exit is used up, the request moves to another straight away (up to four tries, no waiting), and an exit that has run out is not used again until its allowance returns. Only if every try is throttled does a call fail: it is 502 TARGET_FAILED, uncharged, and can be sent again. In a lookup, a name we could not read is found: null, uncharged, and can be retried; the others are answered and charged as usual. A retry adds a second or two to a call.

A search reaches its first 1,000 results, however large total_results is (page × limit can be at most 1,000): narrow the query with qualifiers such as stars:>500, language:go or created:>2026-01-01. Code search is not offered.

Parameter

Type

Default

Description

type

repositories, users, issues

repositories

What to search for. issues includes pull requests (is_pull_request).

query (required)

string

—

The search terms and qualifiers, e.g. web scraper language:go stars:>500.

sort

string

—

Repositories: stars, forks, help-wanted-issues, updated. Users: followers, repositories, joined. Issues: comments, reactions, created, updated. Leave out for best match.

order

desc, asc

desc

With sort: the direction.

limit

integer

30

Results per page, 1–100.

page

integer

1

Page number; page × limit can be at most 1000.

A repository has name (owner/repo), url, description, language, stars, forks, open_issues, license, topics, archived, fork and dates. A user found by search has only id, login, url and type; look the login up for the profile. An issue has number, title, repository, state, is_pull_request, author, comments, reactions, labels, text (the first 500 characters) and dates. A query that matches nothing returns an empty list; one with invalid qualifiers is 404 NOT_FOUND on query, free.

Full reference → GET /v1/structured/github/search

Lookup

Parameter

Type

Default

Description

names (required)

string

—

Logins and owner/repo names, comma-separated, up to 50. A github.com link is accepted.

One entry per name, in the order sent, each with lookup (the name as sent), kind (user or repository) and found: true with the fields (a user's followers, following, public_repos, bio, location; a repository's as in search), false when it does not exist, or null when we could not read it (try again). A call where nothing could be read fails free.

Full reference → GET /v1/structured/github/lookup

Updated