{"snapshot":"2026-08-02","source":"bootstrap","name":"Commitgraph REST API","version":"v1","description":"Read-only mirror of the Commitgraph snapshot: the most active developers on GitHub, ranked worldwide and by country and city. Every endpoint is GET, returns JSON and is open to any origin.","baseUrl":"https://top-github-users-amber.vercel.app/api/v1","conventions":{"pagination":"List endpoints return { total, limit, offset, hasMore, items }. `limit` and `offset` are echoed back as applied, so a clamped page size is visible to the caller.","errors":"Failures return { snapshot, error: { code, message } } with a 4xx or 5xx status.","freshness":"Every response carries `snapshot` (the crawl date) and `source`.","cors":"access-control-allow-origin: * on every response."},"endpoints":[{"path":"/api/v1/manifest","summary":"Snapshot metadata: generation date, source, counts, totals, and every country and city with its aggregates.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/manifest"},{"path":"/api/v1/leaderboard/{scope}","summary":"Ranked developers for a scope. Scope is \"worldwide\", \"country:{id}\" or \"city:{id}\" — the colon must be percent-encoded as %3A in the path.","params":[{"name":"limit","type":"integer","description":"Page size, 1..500. Default 50. Out-of-range values are clamped."},{"name":"offset","type":"integer","description":"Rows to skip. Default 0."}],"url":"https://top-github-users-amber.vercel.app/api/v1/leaderboard/{scope}"},{"path":"/api/v1/developers","summary":"Search every ranked developer in the snapshot.","params":[{"name":"q","type":"string","description":"Substring match over login, name, company and location."},{"name":"country","type":"string","description":"Country id, e.g. japan. See /api/v1/places?kind=country."},{"name":"city","type":"string","description":"City id, e.g. jp-tokyo. See /api/v1/places?kind=city."},{"name":"company","type":"string","description":"Substring match over the free-text company field."},{"name":"minContributions","type":"integer","description":"Lower bound on twelve-month contributions."},{"name":"maxContributions","type":"integer","description":"Upper bound on twelve-month contributions."},{"name":"minFollowers","type":"integer","description":"Lower bound on followers."},{"name":"hasProfile","type":"boolean","description":"Restrict to logins that do (or do not) have a stored profile record."},{"name":"sort","type":"string","description":"contributions (default), followers, rank or login."},{"name":"limit","type":"integer","description":"Page size, 1..500. Default 50. Out-of-range values are clamped."},{"name":"offset","type":"integer","description":"Rows to skip. Default 0."}],"url":"https://top-github-users-amber.vercel.app/api/v1/developers"},{"path":"/api/v1/developers/{login}","summary":"One developer: profile, ranks, resolved calendar and index row. Returns 200 with found:false and reason \"no-profile\" when the login is ranked but has no stored profile record.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/developers/{login}"},{"path":"/api/v1/places","summary":"Countries and cities with user counts and contribution totals, most contributions first.","params":[{"name":"kind","type":"string","description":"country, city or all (default)."},{"name":"region","type":"string","description":"Continent-level region, countries only, e.g. Asia."},{"name":"countryId","type":"string","description":"Restrict cities to one country, e.g. japan."},{"name":"q","type":"string","description":"Substring match over place name and id."},{"name":"limit","type":"integer","description":"Page size, 1..500. Default 50. Out-of-range values are clamped."},{"name":"offset","type":"integer","description":"Rows to skip. Default 0."}],"url":"https://top-github-users-amber.vercel.app/api/v1/places"},{"path":"/api/v1/places/{id}","summary":"One country or city, with its leaderboard page.","params":[{"name":"limit","type":"integer","description":"Page size, 1..500. Default 50. Out-of-range values are clamped."},{"name":"offset","type":"integer","description":"Rows to skip. Default 0."}],"url":"https://top-github-users-amber.vercel.app/api/v1/places/{id}"},{"path":"/api/v1/organizations","summary":"Employers ranked by the combined contributions of tracked developers who name them. Complete list, no paging.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/organizations"},{"path":"/api/v1/repositories","summary":"Top repositories. Not collected by the current snapshot — returns an empty list with a note saying so.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/repositories"},{"path":"/api/v1/history/{scope}","summary":"Rank movement over successive snapshots for a scope. Reports plottable:false rather than inventing a trend when fewer than two snapshots exist.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/history/{scope}"},{"path":"/api/v1/statistics","summary":"Dataset-wide aggregates: public/private split, follower-versus-contribution correlation, contribution percentiles, per-region totals.","params":[],"url":"https://top-github-users-amber.vercel.app/api/v1/statistics"}],"caveats":["Contribution totals and follower counts are measured. Daily calendars are measured only where the enrichment pass has run; elsewhere they are a deterministic estimate derived from the measured total, flagged with calendarSource/estimated, and the total always matches exactly. Never present an estimated calendar as observed activity.","Country and city come from GitHub's free-text location field, which has no structured form. A city is kept only where at least eight tracked developers agree on the name. This is the largest source of error in the dataset.","Accounts exceeding 300,000 contributions in twelve months — over 820 a day without a break — are treated as automation and excluded from every ranking. They are listed openly rather than dropped silently; see /api/v1/statistics and /methodology.","The snapshot ranks far more logins than it stores full profile records for. A developer lookup that returns found:false with reason \"no-profile\" is a coverage gap, not a missing account: the leaderboard row is still returned.","This is a periodic crawl, not a live view of GitHub. Every response carries the snapshot date it was built from."],"alsoAvailable":{"mcp":"https://top-github-users-amber.vercel.app/api/mcp","mcpDiscovery":"https://top-github-users-amber.vercel.app/.well-known/mcp.json","openapi":"https://top-github-users-amber.vercel.app/api/openapi.json","llmsTxt":"https://top-github-users-amber.vercel.app/llms.txt","methodology":"https://top-github-users-amber.vercel.app/methodology"}}