GitHub Profile Scraper (Cheap) avatar

GitHub Profile Scraper (Cheap)

Pricing

from $3.99 / 1,000 results

Go to Apify Store
GitHub Profile Scraper (Cheap)

GitHub Profile Scraper (Cheap)

GitHub Profile Scraper that pulls followers, repos, bio, location, and contact info from any public GitHub account, so recruiters and researchers can build prospect lists without clicking through profiles one by one.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Data API

Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

GitHub Profile Scraper

GitHub Profile Scraper

Every developer on GitHub has a public profile, but reading them one by one in a browser does not scale. When you are sourcing engineers, mapping an open-source community, or building a contributor database, you want that data as rows, not browser tabs. Give this scraper a GitHub handle (or a whole list of them) and it returns each profile as one clean record: display name, bio, location, company, follower and following counts, public repo and gist totals, the combined stars and forks across every public repo, linked social accounts, and the public email when the user chose to show one. Run a single handle or thousands in one go.

What you get

Each handle becomes exactly one record with a consistent shape. Fields the user left blank come back as null rather than disappearing, so your columns stay predictable when you load the data into a sheet or database. The fields fall into a few natural groups:

  • Identityhandle, displayName, profileBio, basedIn, affiliation, avatarLink, profileLink
  • ReachfollowerCount, followingCount, repoCount, gistCount, starCount, forkCount
  • Contact and linkscontactEmail, siteUrl, twitterHandle, linkedAccounts
  • Account metaopenToWork, accountKind, joinedAt, lastActiveAt, collectedAt, errorMessage

starCount and forkCount are summed across all of the user's public repositories, so you get a single reputation signal without paging through repo lists yourself.

Quick start

  1. Click Try for free and open the input form.
  2. Type one handle into GitHub handle, or paste a list into GitHub handles (batch) for a bulk run.
  3. Set a Results limit if you want to cap the run, and adjust Timeout (seconds) for slower connections.
  4. Press Start, then export your results as JSON, CSV, Excel, or XML when the run finishes.

How it works

Use cases

  • Technical recruiting — turn a shortlist of GitHub handles into a sourcing sheet with location, company, follower count, and contact links
  • Developer relations — measure reach and activity across the contributors in your ecosystem
  • Open-source research — profile the maintainers behind a set of repositories and track how their following grows
  • Community building — enrich a list of members with bios, websites, and linked social accounts
  • Sales and lead research — qualify developer accounts by company, location, and public footprint
  • Talent market analysis — aggregate stars, forks, and repo counts to gauge skill density in a region or stack

Input

FieldTypeRequiredDescription
profileHandlestringOne of profileHandle or profileHandlesA single GitHub username to look up. A leading @ is removed automatically. Example sindresorhus.
profileHandlesarray of stringsOne of profileHandle or profileHandlesSeveral handles for a batch run, one per line. Duplicates are skipped.
resultsLimitintegerNoHow many profiles to process per run, capped at 1000. Default 50.
timeoutSecondsintegerNoSeconds to wait on each request before giving up. Default 45; raise it on slow connections.

Example input

{
"profileHandle": "sindresorhus",
"profileHandles": ["sindresorhus", "yyx990803"],
"resultsLimit": 50,
"timeoutSeconds": 45
}

Output

Every handle produces one record, and every field is always present — values the profile does not expose come back as null so your dataset stays rectangular.

Example output

{
"handle": "sindresorhus",
"displayName": "Sindre Sorhus",
"profileBio": "Full-Time Open-Sourcerer",
"basedIn": "Thailand",
"affiliation": "@sindresorhus",
"siteUrl": "https://sindresorhus.com",
"twitterHandle": "sindresorhus",
"linkedAccounts": [
{"provider": "mastodon", "url": "https://mastodon.social/@sindresorhus"}
],
"contactEmail": null,
"followerCount": 71240,
"followingCount": 12,
"repoCount": 1180,
"gistCount": 42,
"starCount": 528430,
"forkCount": 21870,
"openToWork": null,
"accountKind": "User",
"avatarLink": "https://avatars.githubusercontent.com/u/170270?v=4",
"profileLink": "https://github.com/sindresorhus",
"joinedAt": "2009-12-20T01:54:50Z",
"lastActiveAt": "2026-06-28T09:14:33Z",
"collectedAt": "2026-06-29T12:00:00.000000+00:00",
"errorMessage": null
}

Output fields

FieldTypeDescription
handlestringThe GitHub username that was looked up
displayNamestringThe name shown on the profile
profileBiostringThe user's bio text
basedInstringSelf-reported location
affiliationstringCompany or organization listed on the profile
siteUrlstringPersonal or project website linked from the profile
twitterHandlestringLinked Twitter / X username
linkedAccountsarraySocial accounts the user connected, each with a provider and URL
contactEmailstringPublic email, when the user chose to show one
followerCountintegerNumber of followers
followingCountintegerNumber of accounts the user follows
repoCountintegerCount of public repositories
gistCountintegerCount of public gists
starCountintegerStars summed across all public repositories
forkCountintegerForks summed across all public repositories
openToWorkbooleanWhether the user flagged themselves as hireable
accountKindstringAccount type, such as User or Organization
avatarLinkstringURL of the profile avatar image
profileLinkstringLink to the GitHub profile page
joinedAtstringISO 8601 date the account was created
lastActiveAtstringISO 8601 date the profile was last updated
collectedAtstringISO 8601 timestamp of when the record was captured
errorMessagestringReason a handle failed; null on success

Tips for best results

  • Test with a few handles first. Run three or four before a large batch so you can confirm the output fits your pipeline.
  • Use the batch field for volume. Drop your full list into profileHandles and set resultsLimit to match — the run dedupes handles for you.
  • Star and fork totals scan up to 1000 repos. For accounts with more public repositories, the totals reflect the most recently updated 1000.
  • Raise timeoutSeconds on slow links. If you see timeout errors, lift it toward 90 and retry.
  • Failed handles are not lost. A handle that cannot be resolved still returns a row with errorMessage filled in, so nothing silently drops out of your dataset.

How can I use GitHub profile data?

How can I use the GitHub Profile Scraper to source developer talent? Paste a list of handles into profileHandles and the scraper returns each developer's display name, location, company, follower count, and contact links as one row. Sort by followerCount or starCount to prioritize, and use siteUrl and linkedAccounts for outreach — a ready-made sourcing sheet built from a list of usernames.

How can I look up a GitHub user's followers, repos, and bio in bulk? Feed one handle or thousands. For each, you get followerCount, followingCount, repoCount, gistCount, and the aggregate starCount and forkCount across all public repos, plus the bio and location. Everything that normally means paging through the GitHub UI by hand comes back as a single flat record per user.

How can I export GitHub profile data to CSV or Excel for research? Run the scraper on your handles and download the dataset as JSON, CSV, Excel, or XML straight from the run. Because every field is always present, the file opens as a clean rectangular table you can pivot, filter, or join against other developer data without cleanup.

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Support

Questions, feature requests, or a field you'd like added? Reach out at data.apify@proton.me and we'll get back to you.