GitHub Scraper: Repos, Owners, Issues & Contributors
Pricing
from $0.75 / 1,000 rows
GitHub Scraper: Repos, Owners, Issues & Contributors
Search GitHub repositories with the full search syntax, or pull specific repos, whole organisations and user profiles. Returns stars, forks, language, topics, license, activity dates, plus optional contributors and issues. Official GitHub API: a token is optional, not required.
Pricing
from $0.75 / 1,000 rows
Rating
0.0
(0)
Developer
Daniel Meshulam
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search GitHub the way GitHub search works, and get structured rows back.
{ "searchQueries": ["topic:web-scraping stars:>500"], "sortBy": "stars" }
No token required. Give it one and it goes faster, see below.
Four ways in
| Input | What you get |
|---|---|
searchQueries | full GitHub search syntax: language:rust stars:>1000, org:apify archived:false, topic:mcp pushed:>2026-01-01 |
repositories | specific repos as owner/name |
owners | every public repo of a user or an organisation, you do not have to know which |
users | profile details: name, company, location, followers, public email if published |
Turn on includeContributors or includeIssues and every repo in
repositories also returns its contributors ranked by commits, or its issues
and pull requests newest-activity-first.
The rate limit, stated plainly
Unauthenticated GitHub allows 60 requests per hour per IP. Every Actor in this niche hits it; most just fail and blame the network.
Two things are done about it here:
- Proxy rotation on exhaustion. GitHub answers with
403andx-ratelimit-remaining: 0. That triggers a new IP, and a new IP has a fresh 60. A run keeps going instead of dying at request 61. - Pages of 100. Every list request asks for GitHub's maximum page size, so one request returns 100 rows instead of the default 30. Three times fewer requests against the same limit.
When it genuinely runs out, you get one error row that says so and names the
fix, not a silent empty dataset.
With a token (githubToken) the limit becomes 5,000 requests per hour.
Create one at Settings → Developer settings → Personal access tokens; no
scopes are needed for public data. It is sent to api.github.com and nowhere
else, is marked secret in the input schema, and never appears in a result row.
Output
Every row carries recordType, so a mixed run stays sortable:
repo, full name, owner, description, language, stars, forks, watchers, open issues, topics, license, size,createdAt/updatedAt/pushedAt, archived and fork flagsuser, login, name, company, location, blog, bio, followers, following, public repo count, hireablecontributor, login, commit count, profile URLissue/pull_request, number, title, state, author, labels, comment count, body
Use cases
- Developer lead generation: find maintainers of repos using your competitor's SDK
- Competitive and OSS research, who is building in your space, and is it still maintained (
pushedAt,isArchived) - Dependency and supply-chain review: license, activity and contributor concentration per repo
- Hiring: search by language and topic, then pull profiles
- AI agents: clean JSON over the API, no HTML parsing
Pricing
Charged per row returned. A repo that does not exist, a query GitHub rejects, or
an exhausted rate limit produces an error row and costs $0.00.
Notes
- Only public data.
emailappears solely when the user has chosen to publish it on their profile; nothing is inferred, guessed or assembled from commits. - GitHub caps any single search at 1,000 results regardless of
maxResultsPerQuery. Narrow the query, by language, by star range, by date, to go past it. ownerstries the organisation endpoint first and falls back to the user one, so it works either way without you knowing which the login is.
FAQ
Do I need a GitHub token?
No. It works unauthenticated. GitHub's unauthenticated limit is 60 requests per
hour per IP, which this handles by rotating proxy IPs on exhaustion and asking for
100-row pages. Supplying githubToken raises the limit to 5,000 requests per
hour and is worth it for large runs.
What scopes does the token need?
None. A classic personal access token with no scopes ticked is enough for public
data. Create one at Settings → Developer settings → Personal access tokens. It
is sent to api.github.com and nowhere else, is marked secret in the input
schema, and never appears in a result row.
Can I use the same search syntax as GitHub's own search box?
Yes, that is the point of searchQueries. language:rust stars:>1000,
topic:mcp pushed:>2026-01-01, org:apify archived:false all work exactly as
they do on github.com.
Why do I get fewer than 1,000 results?
GitHub caps any single search at 1,000 results no matter what you set
maxResultsPerQuery to. Split the query by language, by star range or by push
date to get past it. That is a GitHub limit, not an Actor one.
Do I have to know whether a login is a user or an organisation?
No. owners tries the organisation endpoint first and falls back to the user
endpoint, so it returns every public repo either way.
Can I get contributor email addresses?
email appears only when the user has chosen to publish it on their public
profile. Nothing is inferred, guessed, or assembled out of commit metadata.
How do I tell whether a project is still maintained?
pushedAt and isArchived on every repo row. pushedAt is the last push to any
branch, which is a far better liveness signal than updatedAt, which moves
when someone merely stars the repo.