Datasets API endpoint
Searches enriched GitHub users near a coordinate, sorted by distance, in dataset id enum value `github-users`. influence_tier enum: `nano`, `micro`, `mid`, `macro`, `mega`. Billing: this endpoint costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/github-users/nearbyDataset id enum:
github-usersQuery parameters:
lat: required center latitude, from -90 through 90.lon: required center longitude, from -180 through 180.radius_m: required search radius in meters, from 1 through 50000.influence_tier: optional follower-based tier filter. Allowed values: nano, micro, mid, macro, mega.reachable: optional filter for any public contact channel.min_followers: optional minimum follower count.page: optional page number, defaults to 1.page_size: optional page size, defaults to 20 and maxes at 100.Response behavior:
distance_m (meters from the query point).lat, lon and radius_m are all required.10000; page * page_size must not exceed 10000.items array (not an error) when no users fall within the radius.1 credit per record returned, minimum 2. A call that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| login | 20 | |
| id | 20 | |
| type | 20 | |
| name | 20 | |
| company | 14 | |
| company_normalized | 14 | |
| bio | 17 | |
| blog | 15 | |
| hireable | 20 | true in 2 of 20 |
| avatar_url | 20 | avatars.githubusercontent.com |
| html_url | 20 | github.com |
| location_raw | 20 | |
| has_email | 20 | true in 2 of 20 |
| has_twitter | 20 | true in 7 of 20 |
| has_blog | 20 | true in 15 of 20 |
| social_count | 20 | 0 to 2, median 0 |
| reachable | 20 | true in 15 of 20 |
| geo | 20 | |
| followers | 20 | 1 to 784, median 22 |
| following | 20 | 0 to 110, median 12 |
| follower_following_ratio | 20 | 0.42 to 41, median 2 |
| public_repos | 20 | 2 to 318, median 38 |
| public_gists | 20 | 0 to 92, median 2 |
| created_at | 20 | 2009-02-16 to 2024-09-01 |
| account_age_years | 20 | 1.8 to 17.4, median 14.5 |
| last_active_at | 16 | 2026-06-07 to 2026-06-22 |
| active_90d | 20 | true in 16 of 20 |
| pushes_30d | 20 | 0 to 104, median 26 |
| prs_30d | 20 | 0 to 6, median 0 |
| reviews_30d | 20 | 0 to 7, median 0 |
| influence_tier | 20 | |
| rank_score | 20 | 301 to 3,605, median 1,936 |
| is_org | 20 | true in 0 of 20 |
| is_bot | 20 | true in 0 of 20 |
| is_suspected_automation | 20 | true in 0 of 20 |
| crawled_at | 20 | 2026-06-27 to 2026-08-01 |
| schema_version | 20 | |
| distance_m | 20 | 292.02 to 1,786.42, median 1,752.94 |
| domains | 3 | median 2 entries |
| twitter_username | 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| lat | number | Yes | Latitude | 40.7484257 | |
| lon | number | Yes | Longitude | -73.98567 | |
| radius_m | integer | Yes | Radius in meters, max 50000 | 5000 | |
| influence_tier | string | No | Follower-tier enum: nano, micro, mid, macro, mega Allowed values: nano, micro, mid, macro, mega. | ||
| reachable | boolean | No | Filter by any public contact channel | ||
| min_followers | integer | No | Minimum follower count | ||
| page | integer | No | 1 | Page number, defaults to 1 | |
| page_size | integer | No | 20 and maxes at 100 | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/github-users/nearby?lat=40.7484257&lon=-73.98567&radius_m=5000&influence_tier=nano&reachable=true&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "github-users",
"items": [
{
"login": "octodev",
"name": "Octo Dev",
"influence_tier": "mid",
"geo": {
"country": "United States",
"city": "San Francisco"
},
"followers": 1200,
"reachable": true,
"distance_m": 1840.5
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "distance_asc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.githubUsersSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.GithubUserSearchResponse | No | ||||
| data.dataset | string | No | Identifier of the dataset queried (`github-users`). | |||
| data.items | array | No | Matching GitHub user records on this page. | |||
| data.items[].account_age_years | number | No | Age of the account in years, to one decimal, at the time of `crawled_at`. | |||
| data.items[].active_90d | boolean | No | Whether the user's latest activity was within 90 days of `crawled_at`. | |||
| data.items[].avatar_url | string | No | URL of the profile picture. | |||
| data.items[].bio | string | No | Profile biography text. | |||
| data.items[].blog | string | No | Website or blog address on the profile. | |||
| data.items[].company | string | No | Employer name as written on the profile. | |||
| data.items[].company_normalized | string | No | Company name cleaned for matching: lowercased, with any leading `@` removed. | |||
| data.items[].crawled_at | string | No | Time the profile was fetched, in UTC (RFC 3339). | |||
| data.items[].created_at | string | No | Time the GitHub account was created, in UTC (RFC 3339). | |||
| data.items[].distance_m | number | No | Distance from the query point in metres. Set when results are sorted by distance. | |||
| data.items[].domains | array | No | Interest areas inferred from the profile text, for example `ml-ai`, `frontend` or `devops`. | |||
| data.items[].email | string | No | Public email address on the profile. | |||
| data.items[].follower_following_ratio | number | No | Followers divided by accounts followed, to two decimals. Equals `followers` when the user follows nobody. | |||
| data.items[].followers | integer | No | Number of followers. | |||
| data.items[].following | integer | No | Number of accounts the user follows. | |||
| data.items[].geo | object | No | Place resolved from the profile location. | |||
| data.items[].geo.city | string | No | Name of the city resolved from the profile location. | |||
| data.items[].geo.country | string | No | Name of the country resolved from the profile location. | |||
| data.items[].geo.country_code | string | No | Country code resolved from the profile location, for example `DE`. | |||
| data.items[].geo.location | object | No | Coordinates of the resolved place. | |||
| data.items[].geo.location.lat | number | No | Latitude in decimal degrees. | |||
| data.items[].geo.location.lon | number | No | Longitude in decimal degrees. | |||
| data.items[].geo.state | string | No | Name of the state or region resolved from the profile location. | |||
| data.items[].has_blog | boolean | No | Whether the profile shows a website or blog. | |||
| data.items[].has_email | boolean | No | Whether the profile shows a public email address. | |||
| data.items[].has_twitter | boolean | No | Whether the profile shows a Twitter or X username. | |||
| data.items[].hireable | boolean | No | Whether the user has marked themselves as available for hire. | |||
| data.items[].html_url | string | No | Link to the user's GitHub profile page. | |||
| data.items[].id | integer | No | Numeric GitHub user id. | |||
| data.items[].influence_tier | string | No | Follower-based tier: `nano` (under 50), `micro` (50 to 499), `mid` (500 to 4,999), `macro` (5,000 to 49,999) or `mega` (50,000 or more). | |||
| data.items[].is_bot | boolean | No | Whether the account is a bot. | |||
| data.items[].is_org | boolean | No | Whether the account is an organization. | |||
| data.items[].is_suspected_automation | boolean | No | Whether the account looks like a commit farm or mass repository generator. | |||
| data.items[].last_active_at | string | No | Time of the user's latest recorded activity, in UTC (RFC 3339). | |||
| data.items[].location_raw | string | No | Free-text location as written on the profile. | |||
| data.items[].login | string | No | GitHub username of the account. | |||
| data.items[].name | string | No | Display name on the profile. | |||
| data.items[].prs_30d | integer | No | Number of pull request events the user had in the last 30 days. | |||
| data.items[].public_gists | integer | No | Number of public gists. | |||
| data.items[].public_repos | integer | No | Number of public repositories. | |||
| data.items[].pushes_30d | integer | No | Number of pushes the user made in the last 30 days. | |||
| data.items[].rank_score | integer | No | Overall notability score. Followers count most and recent activity adds a smaller amount. It is 0 for suspected automation. | |||
| data.items[].reachable | boolean | No | Whether the profile shows any public way to make contact: email, Twitter or X, a website or a linked social account. | |||
| data.items[].reviews_30d | integer | No | Number of pull request review events, including review comments, the user made in the last 30 days. | |||
| data.items[].schema_version | integer | No | Version of the record layout. | |||
| data.items[].social_accounts | array | No | Social accounts linked on the profile. | |||
| data.items[].social_accounts[].provider | string | No | Social network the link points to. | |||
| data.items[].social_accounts[].url | string | No | Link to the account on that network. | |||
| data.items[].social_count | integer | No | Number of social accounts linked on the profile. | |||
| data.items[].twitter_username | string | No | Twitter or X username on the profile. | |||
| data.items[].type | string | No | Account type on GitHub, for example `User` or `Organization`. | |||
| data.page | integer | No | Page number returned. | |||
| data.page_size | integer | No | Number of items per page. | |||
| data.sort | string | No | Sort order applied. | |||
| data.total | integer | No | Total number of records matching the filters. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/github-users/nearby?lat=40.7484257&lon=-73.98567&radius_m=5000&influence_tier=nano&reachable=true&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"