GitHub Repositories & Users Search (No Login) avatar

GitHub Repositories & Users Search (No Login)

Pricing

from $0.60 / 1,000 repository results

Go to Apify Store
GitHub Repositories & Users Search (No Login)

GitHub Repositories & Users Search (No Login)

Search GitHub repositories or users with GitHub's own search syntax. Get stars, forks, language, topics, licence and last push, or user name, company, location and followers. Works without a token; add your own for higher limits. No emails.

Pricing

from $0.60 / 1,000 repository results

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Security

Limited permissions

Share

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. A typical 10-repository run finishes in a few seconds and costs under $0.01.

Use it for developer relations, open-source research, tool tracking or technical recruiting. The smallest run is one query, such as apify actor, and 10 results.

GitHub Repositories & Users Search: type a GitHub query, get repository or user rows with stars, forks, licence and public profile fields, export to JSON or CSV

Table of contents

What it does

The Actor sends your query to the official GitHub REST API search and saves one row per result in the Dataset.

  • Repositories mode: one row per repository with fullName, url, description, stars, forks, language, topics, license, pushedAt and more.
  • Users mode: one row per user or organisation with login, url, name, company, location, followers, publicRepos and more. Profile details come from the public GitHub profile.

The Actor never collects email addresses. If a bio, blog or company text contains an email address, it is replaced with [email removed].

Every row has query, rank, source and fetchedAt, so you always know where and when the value came from.

Good fit

  • Find the most-starred repositories for a topic or language, for example web scraper language:python sorted by stars.
  • 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 fit / limits

  • 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 by language:, and put the parts in More search queries.
  • 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).

๐Ÿ‘‰ Try it now: open the input form

How it works

  1. You type a search query in GitHub's own search syntax and choose repositories or users.
  2. The Actor sends the query to GitHub's public search and reads the results page by page, up to your maxItems. In users mode it also opens each public profile for the name, company, location and follower counts. When GitHub's anonymous profile quota runs out, it reads the public github.com user search results for the remaining users instead (detailsSource = web_search, detailsStatus = partial).
  3. It saves one row per result in the Dataset, plus a RUN_SUMMARY record with the status, counts and warnings.

๐Ÿ‘‰ Try it now: open the input form

Quick start

Input form with the prefill: box 1 What to search, box 2 Search query, box 3 Max results per query, box 4 Start

  1. On the Input tab, keep What to search (mode) as Repositories (box 1).

  2. Keep the prefilled Search query (query) apify actor, or type your own query (box 2). Leave More search queries (extraQueries) empty for this first run.

  3. Keep Max results (maxItems) at the prefilled 10 (box 3). The limit applies to each query.

  4. Click Start (box 4 on the form). When the run finishes, open the Output tab: the Repositories view shows one row per repository with stars, forks and language (box 4 on the table).

    Output table of the prefill run: box 4 marks the repository, stars, forks and language columns

Expected result: 10 repository rows in a few seconds, with stars, forks, language, licence and topics.

๐Ÿ‘‰ Try it now: open the input form

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Find popular projects for a topicmode=repositories, query, sort=starsRepositoryfullName, stars, language, topicsExport to CSV or Google Sheets
Watch recent activity in a nichequery with pushed:>YYYY-MM-DD, sort=updatedRepositoryfullName, pushedAt, isArchivedSchedule the run and compare Datasets
Build a list of public developer profilesmode=users, query with location: and language:, sort=followersUserlogin, name, location, company, followersYour CRM or spreadsheet

๐Ÿ‘‰ Try it now: open the input form

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffect
modeWhat to searchstringnodefault repositoriesrepositories, usersRepository rows or user rows
querySearch querystringyesprefill apify actor1โ€“256 characters, GitHub search qualifiers allowedThe GitHub search query
extraQueriesMore search querieslist of stringsnoemptyup to 9 queries, 1โ€“256 characters eachMore queries in the same run; each gets up to maxItems rows
sortSort bystringnodefault best-matchrepositories: best-match, stars, forks, updated, help-wanted-issues; users: best-match, followers, repositories, joinedResult order
orderOrderstringnodefault descdesc, ascSort direction. Ignored with best-match
maxItemsMax resultsintegernodefault 100, prefill 101โ€“1000How many rows to save per query
includeUserDetailsAdd profile detailsbooleannodefault truetrue, falseUsers mode only: adds name, company, location, followers and other profile fields
githubTokenGitHub tokensecret stringnononea GitHub personal access tokenUses your own GitHub quota (see below)

The query uses GitHub search syntax. Useful qualifiers:

  • repositories: language:, topic:, stars:>100, license:mit, pushed:>2026-01-01, user: or org:, archived:false
  • users: location:, language:, followers:>100, repos:>10, type:user or type:org

Filters such as language, minimum stars, topic, forks or archived repositories go into the query itself, for example topic:scraper language:go stars:>50 fork:false archived:false.

The token is stored as a secret input. It is not saved in the Dataset, the summary or the logs. A token without any scopes is enough for public data.

Interacting settings

WhenInput AInput BEffective behavior
Sort does not match the modemode=repositoriessort=followersThe run fails at once with a clear message. Use a sort from the list for your mode
Users without detailsmode=usersincludeUserDetails=falseRows have only login, url, accountType, avatarUrl and rank. Faster; the price per row is the same
More results than GitHub servesmaxItems=1000a query with 6,000 matchesThe Actor saves 1,000 rows and the summary says that GitHub stops at 1,000
Several queriesqueryextraQueriesQueries run one after another. A result found by an earlier query is saved once, under that query. If GitHub rejects one query, the others still run and the run ends as PARTIAL with partialReason = QUERY_FAILED
Tokenmode=usersgithubToken setProfiles use your token's quota instead of the shared anonymous one

Input examples

{
"mode": "repositories",
"query": "web scraper language:python",
"sort": "stars",
"maxItems": 100
}

Expected output: 100 repository rows, most stars first.

Rust developers in Berlin

{
"mode": "users",
"query": "location:berlin language:rust",
"sort": "followers",
"maxItems": 25
}

Expected output: 25 user rows with profile details, most followers first.

Three topics in one run

{
"mode": "repositories",
"query": "topic:web-scraping",
"extraQueries": ["topic:crawler", "topic:headless-browser"],
"sort": "stars",
"maxItems": 50
}

Expected output: up to 150 repository rows, up to 50 per topic; a repository with two of these topics appears once.

๐Ÿ‘‰ Try it now: open the input form

Output

Output example (repository)

From the prefill run (apify actor, 10 results):

{
"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"
}

Output example (user)

An organisation account from the query apify type:org:

{
"type": "user",
"query": "apify type:org",
"rank": 1,
"id": 24586296,
"login": "apify",
"url": "https://github.com/apify",
"accountType": "Organization",
"avatarUrl": "https://avatars.githubusercontent.com/u/24586296?v=4",
"name": "Apify",
"company": null,
"location": null,
"bio": "Put the web to work.",
"blog": "https://apify.com/",
"twitterUsername": "apify",
"followers": 2468,
"following": 0,
"publicRepos": 270,
"publicGists": 0,
"hireable": null,
"createdAt": "2016-12-15T10:36:52Z",
"updatedAt": "2026-10-01T22:13:36Z",
"detailsStatus": "full",
"detailsSource": "api",
"source": "GitHub REST API (api.github.com)",
"fetchedAt": "2026-10-17T12:16:05.220Z"
}

Here company and location are null because the profile does not fill them, while following is a real 0.

null means GitHub does not have or does not show the value. 0 is a real zero. For example, license is null when a repository has no licence file or GitHub cannot detect it (NOASSERTION).

Repository fields

FieldMeaningTypeCan be null?
typeRow kind, always repositorystringno
query, rankThe query that found the row and its position in that query's results (1 = first)string, integerno
idGitHub repository IDintegerno
fullName, name, ownerowner/name, name, owner loginstringno
ownerTypeUser or Organizationstringyes
url, homepageGitHub page and project websitestringhomepage: yes
descriptionRepository descriptionstringyes
stars, forks, openIssues, watchersCounts from GitHub search (openIssues includes pull requests)integeryes
languageMain languagestringyes
topicsTopicsarray of stringsempty array when none
license, licenseNameSPDX ID (for example MIT) and licence namestringyes
isFork, isArchived, isTemplateRepository flagsbooleanyes
defaultBranch, sizeKbDefault branch and size in KBstring, integeryes
createdAt, updatedAt, pushedAtISO dates. pushedAt is the last code pushstringyes
source, fetchedAtWhere and when the row was collectedstringno

User fields

FieldMeaningTypeCan be null?
typeRow kind, always userstringno
query, rankThe query that found the row and its position in that query's resultsstring, integerno
id, login, url, avatarUrlGitHub ID, login, profile page, avatarinteger, stringno
accountTypeUser or Organizationstringyes
name, company, location, bio, blog, twitterUsernamePublic profile text. Emails are removedstringyes
followers, following, publicRepos, publicGistsPublic countsintegeryes
hireableThe "available for hire" flagbooleanyes
createdAt, updatedAtAccount datesstringyes
detailsStatusfull, partial, not_requested, not_found or unavailablestringno
detailsSourceapi (GitHub API profile) or web_search (github.com user search)stringyes
source, fetchedAtWhere and when the row was collectedstringno

detailsStatus tells you how complete a profile row is:

  • full: all profile fields from the GitHub API.
  • partial: name, location, bio, followers and public repos from github.com user search; company, blog, twitterUsername, following, publicGists, hireable and dates are null.
  • not_requested: you set includeUserDetails=false.
  • not_found: the account was deleted between search and lookup.
  • unavailable: no time or quota was left for this profile; only the search fields are filled.

Output surfaces and run statuses

SituationWhereWhat you see
Normal runDataset views Repositories or UsersOne row per result
Query with 0 matchesDataset is empty, run SucceededStatus message: "GitHub search returned no repositories for this query."
Some profiles without detailsRun Succeeded, RUN_SUMMARY.partialReason = DETAILS_UNAVAILABLERows with detailsStatus partial or unavailable
GitHub search timed out on its sideRun Succeeded, partialReason = INCOMPLETE_RESULTSRows GitHub returned (can be 0); try again or narrow the query
One of several queries rejected or unavailableRun Succeeded, partialReason = QUERY_FAILEDRows from the other queries; RUN_SUMMARY.search.queries says which query failed and why
Your spending limit reachedRun Succeeded, partialReason = CHARGE_LIMITRows saved up to the limit
GitHub error or time limit after some rowsRun Failed, partialReason = SOURCE_ERROR or DEADLINERows saved so far stay in the Dataset
Broken query or bad tokenRun Failed, no rowsA message that says what to fix

The RUN_SUMMARY record in the key-value store has the status, counts, the GitHub total and the number of results GitHub can serve (reachableResults, at most 1,000 per query), one entry per query in search.queries, and warnings.

๐Ÿ‘‰ Try it now: open the input form

Pricing

This Actor uses pay-per-event pricing. You pay only for the events below; platform usage is included.

EventFree planBronzeSilverGold
Actor start (once per run)$0.0009$0.0009$0.0009$0.0009
Repository row saved$0.00085$0.000765$0.00068$0.000595
User row saved$0.00085$0.000765$0.00068$0.000595
  • The start fee scales with run memory (per GB of memory). This Actor runs with at most 512 MB, so it is charged once per run.
  • A run with 0 results costs only the start: $0.0009.
  • 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.

Cost examples (Free plan)

ScenarioRowsCost
Prefill: apify actor, 10 repositories10$0.0094
100 repositories100$0.0859
Three queries, 50 repositories each150$0.1284
1,000 repositories (GitHub maximum for one query)1,000$0.8509
25 users25$0.02215
Query with no results0$0.0009

๐Ÿ‘‰ Try it now: open the input form

Limits

Measured without a token on the default 256 MB memory:

RunRowsTimeNotes
10 repositories (prefill)10about 2โ€“4 sup to about 40 s when GitHub asks the shared IP to slow down
1,000 repositories1,000about 30 s, up to about 4 minGitHub serves at most 1,000 per query; slow runs waited for GitHub's rate limit
200 users with details200about 75 s60 full profiles, the rest partial after the anonymous quota ran out
500 users with details500about 205 s80 profiles unavailable because of the run time limit
3 queries ร— 50 repositories150about 9 sone search page per query
  • The default run timeout is 300 seconds. The Actor stops searching and saving at about 240 seconds so that the run ends cleanly.
  • maxItems is 1โ€“1000. Users mode was tested up to 500 rows in one run without a token.
  • Several queries share one run and its 240 seconds. Without a token GitHub allows about 10 search pages per minute, so 10 queries ร— 1,000 results (100 pages) do not fit in one run: the rows reached stay in the Dataset, the run stops with partialReason = DEADLINE, and queries that did not start show NOT_RUN in RUN_SUMMARY.search.queries. For big multi-query jobs, add a githubToken or split the queries across runs.
  • 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 more than about 60 users with full profiles per hour, add a githubToken. For more than about 300 users, split the search into smaller runs (for example by location: or followers: ranges).

๐Ÿ‘‰ Try it now: open the input form

API, export and integrations

  • API: start the Actor with the Apify API and read rows from the default Dataset. Use ?view=repositories or ?view=users for the table columns.
  • Export: download the Dataset as JSON, CSV, Excel, XML or HTML from the run page.
  • Scheduling: run a saved input daily or weekly with Apify schedules, for example to follow new repositories in a topic.

Use with AI agents (MCP)

Add this Actor to an AI agent with the Apify MCP server: https://mcp.apify.com?tools=cliqtomedia/github-search.

Smallest useful input:

{ "mode": "repositories", "query": "apify actor", "maxItems": 10 }

Key output fields: fullName (owner/name), url, stars, language, pushedAt; in users mode login, followers, location. A 10-row call finishes in a few seconds and costs $0.0094 on the Free plan. Results stop at 1,000 per query.

๐Ÿ‘‰ Try it now: open the input form

Troubleshooting

The run failed with "GitHub rejected the query (HTTP 422)"

Symptom: the run fails at once with no rows. Likely reason: a qualifier has a wrong value, for example stars:>abc. Action: fix the qualifier. The message quotes GitHub's own explanation.

"GitHub rejected the githubToken (HTTP 401)"

Likely reason: the token is wrong, expired or revoked. Action: create a new token on GitHub, or leave the field empty to run without one.

Fewer rows than maxItems

Check RUN_SUMMARY.search.totalCount. If GitHub found fewer matches, you get all of them. If it found more than 1,000, GitHub serves only the first 1,000; split the query by date or language.

The run is slow, or the status says GitHub's rate limit was reached

Likely reason: GitHub limits anonymous requests from the shared Apify IP. The Actor waits and continues while time allows; RUN_SUMMARY.http.rateLimitWaitMs shows how long it waited. Action: add a githubToken so that requests use your own GitHub quota, or run again later.

Many users have detailsStatus "partial" or "unavailable"

Likely reason: without a token, the shared anonymous quota for full profiles (about 60 per hour) ran out. Action: add a githubToken, or run smaller users searches.

๐Ÿ‘‰ Try it now: open the input form

FAQ

Do I need a GitHub account or token?

No. The Actor works without a login. A token only gives you your own GitHub quota, which helps for big users searches.

Does it return email addresses?

No. The Actor never reads the email field and removes email addresses from bio, blog and company text.

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.

๐Ÿ‘‰ Try it now: open the input form

๐Ÿ‘‰ Try it now: open the input form

Support

For bugs, questions or feature requests, open an issue on the Issues tab of this Actor. Include the run ID and your input without the token.

๐Ÿ‘‰ Try it now: open the input form