Skip to main content
GET
/
player
/
{membershipId}
/
teammates
Get Player Teammates
curl --request GET \
  --url https://api.example.com/player/{membershipId}/teammates
{
  "teammates": [
    {
      "estimatedTimePlayedSeconds": 123,
      "clears": 123,
      "instanceCount": 123,
      "playerInfo": {
        "membershipId": "<string>",
        "membershipType": 123,
        "iconPath": "<string>",
        "displayName": "<string>",
        "bungieGlobalDisplayName": "<string>",
        "bungieGlobalDisplayNameCode": "<string>",
        "lastSeen": "<string>",
        "isPrivate": true,
        "cheatLevel": 123
      }
    }
  ]
}
Get a list of a player’s top 100 teammates ranked by estimated time played together in raids.
This endpoint requires authentication if the player has a private profile.

Path Parameters

membershipId
string
required
The Destiny membership ID of the player (int64 format).

Response

Returns an array of teammate objects, sorted by estimated time played together (descending).
teammates
array
Array of up to 100 teammates.

Example Request

curl -X GET "https://api.raidhub.io/player/4611686018488107374/teammates" \
  -H "X-API-Key: your_api_key_here"

Example Response

{
  "minted": "2026-03-03T12:34:56.789Z",
  "success": true,
  "response": [
    {
      "estimatedTimePlayedSeconds": 125000,
      "clears": 85,
      "instanceCount": 92,
      "playerInfo": {
        "membershipId": "4611686018467890123",
        "membershipType": 3,
        "iconPath": "/common/destiny2_content/icons/abc123.jpg",
        "displayName": "teammate_username",
        "bungieGlobalDisplayName": "Teammate",
        "bungieGlobalDisplayNameCode": "1234",
        "lastSeen": "2026-03-01T20:00:00.000Z",
        "isPrivate": false,
        "cheatLevel": 0
      }
    },
    {
      "estimatedTimePlayedSeconds": 98000,
      "clears": 62,
      "instanceCount": 70,
      "playerInfo": {
        "membershipId": "4611686018467890456",
        "membershipType": 2,
        "iconPath": "/common/destiny2_content/icons/def456.jpg",
        "displayName": "another_player",
        "bungieGlobalDisplayName": "AnotherPlayer",
        "bungieGlobalDisplayNameCode": "5678",
        "lastSeen": "2026-02-28T15:30:00.000Z",
        "isPrivate": false,
        "cheatLevel": 0
      }
    }
  ]
}

Error Responses

PlayerNotFoundError (404)

{
  "minted": "2026-03-03T12:34:56.789Z",
  "success": false,
  "code": "PlayerNotFoundError",
  "error": {
    "membershipId": "4611686018488107374"
  }
}

PlayerPrivateProfileError (403)

{
  "minted": "2026-03-03T12:34:56.789Z",
  "success": false,
  "code": "PlayerPrivateProfileError",
  "error": {
    "membershipId": "4611686018488107374"
  }
}

Understanding the Data

Estimated Time Played

The estimatedTimePlayedSeconds is calculated based on the duration of instances where both players were present. This is an estimate because:
  • Players may join at different times
  • Players may leave before completion
  • The calculation uses instance duration as a proxy

Clears vs Instance Count

  • clears: Raids that were completed with both players present
  • instanceCount: Total number of raid attempts together (includes incomplete runs)
The difference between these values can indicate:
  • Failed attempts
  • Checkpoint completions
  • Partial participation

Use Cases

  • Fireteam analysis: Identify frequent raid partners
  • Clan insights: Understand player relationships and groups
  • Social graphs: Build social network visualizations
  • Sherpa tracking: Find players who regularly help others
  • Team formation: Suggest compatible teammates

Performance Notes

  • Cached for 10 minutes (600 seconds)
  • Always returns top 100 teammates (no pagination)
  • Sorted by estimated time played together (descending)
  • Requires authentication for private profiles

Build docs developers (and LLMs) love