Developer sourcing from GitHub

Read public GitHub profiles, repositories and trending developers.

The job

Recruiters and tool makers look for people by what they ship. List a language's trending developers, then read each one's public repositories.

Endpoints

EndpointReturnsCost
GET /v1/github/trending/developersGitHub trending developers1 credit
GET /v1/github/userGitHub user1 credit
GET /v1/github/user/repositoriesGitHub user repositories1 credit
GET /v1/github/user/contributionsGitHub contribution calendar1 credit
GET /v1/github/trending/repositoriesGitHub trending repositories1 credit

Failed requests and cached repeats cost 0 credits. Send max_age_days to accept a recent cached copy. See credits and caching.

Recipe

  1. List trending developers for a language.
  2. Read each profile.
  3. List their repositories by last push.
Preview
The API is in early access. Calls use api.socialscrape.io and return the shapes in the reference.
Python
import os
import requests

API = "https://api.socialscrape.io"
HEADERS = {"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]}


def get(path, **params):
    res = requests.get(API + path, headers=HEADERS, params=params, timeout=60)
    res.raise_for_status()
    return res.json()["data"]

# GitHub trending developers
devs = get("/v1/github/trending/developers", language="rust", since="weekly")
# GitHub user repositories
repos = get("/v1/github/user/repositories", handle=devs["items"][0]["handle"], sort="pushed", direction="desc")

for r in repos["items"][:10]:
    print(r["url"])
TypeScript
const API = "https://api.socialscrape.io";
const headers = { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! };

async function get(path: string, params: Record<string, string | number | boolean>) {
  const query = new URLSearchParams(Object.entries(params).map(([k, v]) => [k, String(v)]));
  const res = await fetch(`${API}${path}?${query}`, { headers });
  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
  return (await res.json()).data;
}

// GitHub trending developers
const devs = await get("/v1/github/trending/developers", { language: "rust", since: "weekly" });
// GitHub user repositories
const repos = await get("/v1/github/user/repositories", { handle: devs.items[0].handle, sort: "pushed", direction: "desc" });

for (const r of repos.items.slice(0, 10)) console.log(r.url);

Good to know

Public data only. Contacting people is a separate step, with its own rules.

Build on social data early.

Developers and agent builders get the first keys.

Get early access