---
title: "Get devrank leaderboard with enriched user data"
method: GET
path: "/api/devrank/leaderboard"
---

# Get devrank leaderboard with enriched user data

`GET /api/devrank/leaderboard`

Fetch paginated developer ranking leaderboard sorted by crackedScore descending. Returns full user profiles enriched with devrank data. Requires DEVRANK service. Credits: 2 per result (1 for user + 1 for devrank).

## Query parameters

- `page` string — Page number for pagination
- `limit` string — Number of results per page (max 1000)

## Response `200`

Leaderboard retrieved successfully

- LeaderboardResponse
  - `users` PublicUserWithDevrank[], required — Array of users with devrank data sorted by crackedScore descending
    - `id` string, required — BountyLab internal ID
    - `githubId` string, required — GitHub node ID
    - `login` string, required — GitHub username
    - `displayName` string, nullable — User display name
    - `bio` string, nullable — User biography
    - `company` string, nullable — Company name
    - `location` string, nullable — User location
    - `websiteUrl` string, nullable — User website URL
    - `socialAccounts` object[], nullable — Social media accounts
      - `provider` string, required
      - `url` string, required
    - `emails` string[], nullable — Obfuscated email addresses showing only the last 2 characters of the local part and full domain (e.g., "***oe@gmail.com"). Use /api/users/best-email endpoint for unobfuscated email access with intelligent selection.
    - `resolvedCountry` string, nullable — Resolved country from location
    - `resolvedState` string, nullable — Resolved state/region from location
    - `resolvedCity` string, nullable — Resolved city from location
    - `createdAt` string, nullable — ISO 8601 timestamp when user account was created
    - `updatedAt` string, nullable — ISO 8601 timestamp when user was last updated
    - `embeddedAt` string, nullable — ISO 8601 timestamp when metadata was extracted
    - `score` number — Relevance score from search (0-1, lower is more relevant for distance metrics)
    - `devrank` object — Developer ranking data (only present when fetched from devrank endpoints)
      - `crackedScore` number, required
      - `tier` string, required
      - `rawScore` number, required
      - `trust` number, required
      - `pc` number, required
      - `followersIn` number, required
      - `followingOut` number, required
      - `community` integer, required
      - `createdAt` string, required
      - `updatedAt` string, required
  - `page` integer, required — Current page number
  - `limit` integer, required — Number of results per page

## Other responses

- `400` — Bad request - invalid pagination parameters
- `401` — Unauthorized - API key missing
- `403` — Forbidden - Invalid API key or DEVRANK service access denied
- `429` — Too Many Requests - Hourly credit limit exceeded

## Changes

- **2025-11-18** `632738b73858` — 1 info
  - added the optional property `users/items/allOf[#/components/schemas/PublicUser]/emails` to the response with the `200` status
- **2025-11-18** `62f4dc841be4` — 1 warning
  - removed the optional property `users/items/allOf[#/components/schemas/PublicUser]/emails` from the response with the `200` status
- **2025-11-17** `cd9fe36cf492` — 13 breaking
  - the response property `users/items/allOf[#/components/schemas/PublicUser]/bio` became nullable for the status `200`
  - the response property `users/items/allOf[#/components/schemas/PublicUser]/company` became nullable for the status `200`
  - the response property `users/items/allOf[#/components/schemas/PublicUser]/createdAt` became nullable for the status `200`
  - the response property `users/items/allOf[#/components/schemas/PublicUser]/displayName` became nullable for the status `200`
  - …9 more
- **2025-11-13** `b2705a930628` — 1 info
  - response property `users/items/allOf[#/components/schemas/PublicUser]/emails` deprecated
- **2025-10-21** `ab0bf41c0395` — 2 breaking
  - removed the required property `total` from the response with the `200` status
  - removed the required property `totalPages` from the response with the `200` status

[Full history](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/changes/api/devrank/leaderboard/get.md)

---

[API](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api.md) · [All operations](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bountylaboratories/apis/bounty-lab-public-api/revisions/4664c27f7e3a?raw)
