Github Profile Scraper
Pricing
from $3.00 / 1,000 results
Github Profile Scraper
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.00 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
GitHub Profile Scraper: Extract Public Data from Any GitHub Account
GitHub Profile Scraper pulls public profile data from any GitHub user account and returns it as structured JSON. Paste in a username and get back name, bio, location, company, website, follower count, repo count, Twitter handle, email, and more. Or paste in a list of usernames and process them all in one run.
No browser automation, no manual copy-paste, no setup on your end. Just usernames in, data out.
What data does this actor extract?
Each scraped profile returns the following fields:
| Field | Description |
|---|---|
username | GitHub handle (login name) |
name | Full display name |
bio | Profile bio text |
location | City or country |
company | Employer or organization |
websiteUrl | Personal website or portfolio URL |
twitterUsername | Twitter/X handle (from main profile) |
socialAccounts | All linked social media accounts as [{provider, url}] (LinkedIn, YouTube, Instagram, etc.) |
avatarUrl | Profile picture URL |
profileUrl | Full GitHub profile URL |
email | Public contact email (null if not set) |
followers | Number of followers |
following | Number of accounts followed |
publicRepos | Count of public repositories |
publicGists | Count of public gists |
totalStars | Total stars received across all public repositories |
totalForks | Total forks across all public repositories |
hireable | Open-to-work flag (true, false, or null) |
accountType | "User" or "Organization" |
createdAt | Account creation date (ISO 8601) |
updatedAt | Last profile update date (ISO 8601) |
scrapedAt | Timestamp of when this record was collected |
error | Error message if the profile could not be fetched, otherwise null |
How to use it
Input
| Field | Type | Default | Description |
|---|---|---|---|
username | string | kawsarlog | Single GitHub username to scrape |
usernames | string list | β | Multiple usernames for batch scraping |
maxItems | integer | 100 | Cap on profiles processed per run |
requestTimeoutSecs | integer | 30 | Per-request timeout in seconds |
You can provide a single username, a list of usernames, or both. Duplicates are ignored. Usernames with a leading @ are accepted and cleaned automatically.
Example input
{"username": "torvalds","usernames": ["gvanrossum", "kawsarlog"],"maxItems": 100,"requestTimeoutSecs": 30}
Example output
{"username": "torvalds","name": "Linus Torvalds","bio": "Just a geek","location": "Portland, OR","company": "Linux Foundation","websiteUrl": null,"twitterUsername": null,"socialAccounts": [{"provider": "linkedin", "url": "https://www.linkedin.com/in/torvalds"}],"avatarUrl": "https://avatars.githubusercontent.com/u/1024025?v=4","profileUrl": "https://github.com/torvalds","email": null,"followers": 239000,"following": 0,"publicRepos": 7,"publicGists": 0,"totalStars": 218400,"totalForks": 43200,"hireable": null,"accountType": "User","createdAt": "2011-09-03T15:26:22Z","updatedAt": "2024-12-15T08:41:12Z","scrapedAt": "2026-04-13T10:00:00.000000+00:00","error": null}
Use cases
- Recruiting: screen developer candidates by checking their public repo count, follower count, and account activity before reaching out
- Sales prospecting: build technical lead lists by collecting company, website, and contact info from GitHub profiles at scale
- Open-source research: track contributor profiles across multiple accounts without visiting each page manually
- HR analytics: compare candidate GitHub presence as part of a structured evaluation process
- Market research: map out the GitHub activity of a competitor's engineering team or open-source community
- Data enrichment: append GitHub profile data to existing contact lists using batch mode
Batch scraping
Supply a list of usernames in the usernames field to scrape many profiles per run. The actor processes them in order, handles errors per profile without stopping the run, and saves each result to the dataset as it goes.
If a username does not exist or returns an error, the output record for that username will have null for all data fields and a message in the error field.
FAQ
How many profiles can I scrape per run?
The default limit is 100 profiles per run, adjustable up to 1,000 via the maxItems field.
Does this work for organization accounts?
Yes. GitHub organizations have public profiles with similar fields. The accountType field will return "Organization" instead of "User".
What happens if a profile is private or does not exist? The actor logs an error for that username and continues with the rest. The failed profile gets an error record in the output dataset so nothing is silently skipped.
Can I scrape private profile data? No. This actor only collects data that GitHub exposes publicly. Private emails, private repos, and private account settings are not accessible.
How do I input usernames with an @ symbol?
You can. The actor strips the leading @ automatically, so @torvalds and torvalds both work.
What format is the output? JSON, saved to the Apify dataset. You can export it as JSON, CSV, or XLSX directly from the Apify console, or use the Apify API to pull it into your pipeline.
Scheduling and monitoring
You can schedule this actor to run on a cron schedule from the Apify console. Useful for monitoring follower growth, tracking profile updates, or refreshing a contact list on a weekly basis.
GitHub profile scraper for recruiters and researchers
Whether you are building a candidate database, enriching a CRM with developer data, or mapping out an open-source community, this GitHub profile scraper gets you structured data without the manual work. Run it on demand or on a schedule and export the results wherever you need them.