How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
repositoriesin What to search. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Search GitHub repositories or GitHub users with GitHub's own search syntax and get clean rows: stars, forks, language, topics, licence and last push for repositories, or name, company, location, followers and public repos for users. No login and no token needed.
- Repositories mode: one row per repository with
fullName,url,description,stars,forks,language,topics,license,pushedAtand more. - Users mode: one row per user or organisation with
login,url,name,company,location,followers,publicReposand more. Profile details come from the public GitHub profile.
Good for
- Find the most-starred repositories for a topic or language, for example
web scraper language:pythonsorted bystars. - Track tools in your niche: repositories with a topic, licence or recent activity (
pushed:>2026-01-01). - Build a list of public developer profiles by location and language, for example
location:berlin language:rust, sorted by followers.
Not a good fit
- No code search, issues, pull requests, commits or README text. Only repositories and users.
- No emails and no private data. Only public fields that GitHub shows to anyone.
- GitHub returns at most 1,000 results per query. To get more, split the query, for example by
created:date ranges or bylanguage:. - Without a token, GitHub gives about 60 full profile lookups per hour to the shared Apify IP. Bigger users runs still finish, but some profiles are partial or unavailable (see Limits).
Who uses it
Developers
Find popular tools for a topic or language, sorted by stars.
Market analysts
Track repositories in your niche by topic, licence or recent activity.
Recruiters
Build a list of public developer profiles by place and language.
Price
Prices will be shown after release.
Questions
Do I need a GitHub account or token?
No. It works without a login. A token only gives you your own GitHub quota.
Does it return email addresses?
No. It never reads the email field. It also removes emails from bio, blog and company text.
Can I search code, issues or pull requests?
No. It searches repositories and users only.
How many results can I get?
GitHub returns up to 1,000 results for one query. Split the query by date or language to get more.
How fresh is the data?
Each row is read from GitHub at run time; fetchedAt shows when. Star and follower counts change all the time.
Is the result complete?
You get what GitHub search returns for your query, up to 1,000 results. GitHub can report incomplete_results when its search times out; the summary then shows a warning.
Can I use the data for outreach?
Use profile data only within GitHub's Acceptable Use Policies and your local privacy law. Do not use it for spam or resell personal information.
Details
Step by step on Apify
- Open the Input tab.
- Keep What to search (
mode) asrepositories. - Keep the prefilled Search query (
query)apify actor, or type your own query. - Keep Max results (
maxItems) at the prefilled10. - Click Start.
- Open the Repositories view of the Dataset.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Find popular projects for a topic | mode=repositories, query, sort=stars | Repository | fullName, stars, language, topics | Export to CSV or Google Sheets |
| Watch recent activity in a niche | query with pushed:>YYYY-MM-DD, sort=updated | Repository | fullName, pushedAt, isArchived | Schedule the run and compare Datasets |
| Build a list of public developer profiles | mode=users, query with location: and language:, sort=followers | User | login, name, location, company, followers | Your CRM or spreadsheet |
Tips for better results
- Add a date like pushed:>2026-01-01 to find active repositories.
- GitHub gives up to 1,000 results per query. Split big topics by language or date.
- Add your own token if you search many users. It gives you your own quota.
Limits and good to know
- A failed run (for example a broken query) costs only the start
- Every saved user row is charged once, whatever its
detailsStatus - Set Maximum cost per run in the run options to cap the cost. The Actor stops when the next row would go over it and saves what fits
- The default run timeout is 300 seconds. The Actor stops searching and saving at about 240 seconds so that the run ends cleanly
maxItemsis 1–1000. Users mode was tested up to 500 rows in one run without a token- GitHub sometimes asks the shared Apify IP to slow down (a "secondary rate limit"). The Actor then waits about a minute and continues. Your cost does not change: you pay per saved row, not per second
- Without a token, GitHub allows about 10 searches per minute (100 results each) and about 60 full profile lookups per hour for the shared IP. GitHub documents higher limits for requests made with a token
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"type": "repository",
"query": "apify actor",
"rank": 5,
"id": 117851913,
"fullName": "apify/apify-cli",
"name": "apify-cli",
"owner": "apify",
"ownerType": "Organization",
"url": "https://github.com/apify/apify-cli",
"description": "Apify command-line interface helps you create, develop, build and run Apify Actors, and manage the Apify cloud platform.",
"homepage": "https://docs.apify.com/cli",
"stars": 259,
"forks": 69,
"openIssues": 176,
"watchers": 259,
"language": "TypeScript",
"topics": ["apify", "command-line", "hacktoberfest", "headless-chrome", "puppeteer", "serveless"],
"license": "Apache-2.0",
"licenseName": "Apache License 2.0",
"isFork": false,
"isArchived": false,
"isTemplate": false,
"defaultBranch": "master",
"sizeKb": 20339,
"createdAt": "2018-01-17T15:05:58Z",
"updatedAt": "2026-10-14T22:40:34Z",
"pushedAt": "2026-10-16T20:23:39Z",
"source": "GitHub REST API (api.github.com)",
"fetchedAt": "2026-10-17T11:42:29.711Z"
}Data fields (40)
| Field | Type | Meaning |
|---|---|---|
type | string | Row type: repository or user. |
query | string | The search query that returned this row. |
rank | integer | Position in GitHub's result order for this query and sort (1 = first). |
id | integer | GitHub numeric ID of the repository or account. |
fullName | string | Repository owner/name, e.g. apify/crawlee. |
name | string | Repository name (repositories) or display name from the profile (users); null if not set. |
owner | string | Login of the repository owner. |
ownerType | string | Owner account type: User or Organization. |
url | string | Public github.com page of the repository or account. |
description | string | Repository description; null if empty. |
homepage | string | Repository homepage URL set by the owner; null if empty. |
stars | integer | Stargazer count. 0 means none; null means GitHub did not return it. |
forks | integer | Fork count. |
openIssues | integer | Open issues plus open pull requests, as GitHub counts them. |
watchers | integer | Watchers as reported by the search API (equals stars on GitHub). |
language | string | Primary language detected by GitHub; null if none. |
topics | array | Repository topics; empty list if none. |
license | string | SPDX licence ID such as MIT or Apache-2.0; null when no licence or GitHub could not classify it. |
licenseName | string | Licence name as GitHub shows it, including "Other". |
isFork | boolean | true if the repository is a fork. |
isArchived | boolean | true if the repository is archived (read-only). |
isTemplate | boolean | true if the repository is a template. |
defaultBranch | string | Default branch name. |
sizeKb | integer | Repository size in KB as reported by GitHub. |
createdAt | string | When the repository or account was created (ISO 8601). Users: null when details came from web search. |
updatedAt | string | Last metadata update (ISO 8601). |
pushedAt | string | Last push to any branch (ISO 8601) — the best signal of recent activity. |
login | string | Account login (users). |
accountType | string | User or Organization. |
avatarUrl | string | Avatar image URL. |
company | string | Company field from the public profile, free text such as "@github". null when not set or when details came from web search. |
location | string | Location field from the public profile, free text. |
bio | string | Profile bio; email addresses are replaced with [email removed]. |
blog | string | Website link from the profile; null when empty or an email address. |
twitterUsername | string | X/Twitter username from the profile. |
followers | integer | Follower count. |
following | integer | Number of accounts followed (API details only). |
publicRepos | integer | Public repository count. |
publicGists | integer | Public gist count (API details only). |
hireable | boolean | true if the user marked themselves available for hire; null if not set. |
Input settings (7)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| What to search | mode | string | "repositories" |
| Search query required | query | string | "apify actor" |
| Sort by | sort | string | "best-match" |
| Order | order | string | "desc" |
| Max results | maxItems | integer | 10 |
| Add profile details (users mode) | includeUserDetails | boolean | true |
| GitHub token (optional) | githubToken | string |