Skip to main content

Overview

The RaidHub API provides comprehensive player data endpoints that allow you to search for Destiny 2 players and retrieve detailed information about their raid activities, statistics, and history.

Understanding Player Identifiers

Membership ID

Every player in RaidHub is identified by a unique membership ID (a 64-bit integer). This is the Bungie.net membership ID that uniquely identifies a player’s Destiny 2 account.

Membership Type

The membership type indicates the platform where the player’s account was originally created:
  • 1 - Xbox
  • 2 - PlayStation (PSN)
  • 3 - Steam
  • 4 - Blizzard (deprecated)
  • 5 - Stadia (deprecated)
  • 6 - Epic Games
  • -1 - All platforms (search only)
The membership type is determined by the platform where the account was first created, not the current platform.

Searching for Players

Use the /player/search endpoint to find players by their Bungie name or platform display name.
curl "https://api.raid.report/v2/player/search?query=TestPlayer"

Search Parameters

query
string
required
The search term (1-40 characters). Can be a Bungie name or platform display name.
count
integer
default:"20"
Number of results to return (1-50).
membershipType
integer
default:"-1"
Filter by platform membership type. Use -1 for all platforms.
global
boolean
default:"true"
Search by Bungie name (true) or platform display name (false).

Example Response

{
  "params": {
    "count": 20,
    "query": "TestPlayer"
  },
  "results": [
    {
      "membershipId": "4611686018484930134",
      "membershipType": 3,
      "iconPath": "/img/profile/avatars/default_avatar.gif",
      "displayName": "TestPlayer",
      "bungieGlobalDisplayName": "TestPlayer",
      "bungieGlobalDisplayNameCode": 1234,
      "lastSeen": "2026-03-01T10:30:00.000Z",
      "isPrivate": false,
      "cheatLevel": 0
    }
  ]
}
Players who have never completed a raid may not appear in search results. Results are ordered by raid completions and recent activity.

Getting Player Information

Basic Player Info

Retrieve basic player information using the /player/{membershipId}/basic endpoint. This is an extremely low-cost API call.
curl "https://api.raid.report/v2/player/4611686018484930134/basic"

Full Player Profile

Get comprehensive player statistics using the /player/{membershipId}/profile endpoint. This includes:
  • Global statistics (total clears, sherpas, time played)
  • Per-activity statistics and fastest completions
  • World first rankings and contest completions
curl "https://api.raid.report/v2/player/4611686018484930134/profile"

Profile Data Structure

The profile response includes:
playerInfo
object
Basic player information (same as /basic endpoint)
stats.global
object
Global statistics across all raids:
  • clears - Total completions with rank and percentile
  • freshClears - Fresh completions with rank and percentile
  • sherpas - Sherpa count with rank and percentile
  • totalTimePlayed - Total time in raids (seconds)
  • sumOfBest - Sum of fastest times across all raids
  • contest - World first race score
stats.activity
object
Per-activity statistics indexed by activity ID, including fastest instance details
worldFirstEntries
object
World first rankings by activity ID (top 500 only)
The profile endpoint is protected. If a player has set their profile to private, you’ll receive a 403 error unless you provide proper authentication.

Player Activity History

Fetching Activity History

Retrieve a player’s complete raid history using the /player/{membershipId}/history endpoint with cursor-based pagination.
# First request (no cursor)
curl "https://api.raid.report/v2/player/4611686018484930134/history?count=100"

# Subsequent request (with cursor)
curl "https://api.raid.report/v2/player/4611686018484930134/history?count=100&cursor=2026-02-15T18:30:00.000Z"

History Parameters

count
integer
default:"2000"
Number of activities to return (10-5000)
cursor
string
ISO 8601 date cursor from the previous response’s nextCursor field. Omit for the first request.

Understanding the History Response

Each activity in the history includes:
  • instanceId - Unique identifier for the activity
  • hash - Activity version hash
  • activityId / versionId - Activity and version identifiers
  • completed - Whether the activity was completed
  • fresh - Whether it was a fresh clear
  • flawless - Whether it was flawless
  • dateStarted / dateCompleted - Timestamps
  • duration - Time taken in seconds
  • playerCount - Number of players
  • score - Activity score (for scored activities)
The first request may return fewer activities than requested for performance optimization. Subsequent requests will return the full count.

Common Use Cases

Finding a Player’s Stats

1

Search for the player

Use /player/search with their name to get their membership ID
2

Fetch their profile

Use /player/{membershipId}/profile to get comprehensive stats
3

Display relevant information

Show global rankings, per-raid stats, and world first entries

Building a Raid History Timeline

1

Get the player's history

Use /player/{membershipId}/history with cursor pagination
2

Process each activity

Extract relevant details like completion status, flawless, duration
3

Visualize the data

Create charts or timelines showing activity over time

Checking Recent Activity

// Get the most recent 10 activities
const response = await fetch(
  `https://api.raid.report/v2/player/${membershipId}/history?count=10`
);
const data = await response.json();

const recentActivities = data.activities.map(activity => ({
  name: activity.metadata?.activityName,
  completed: activity.completed,
  date: new Date(activity.dateCompleted),
  duration: `${Math.floor(activity.duration / 60)} minutes`
}));

console.log(recentActivities);

Error Handling

Common Errors

404 - PlayerNotFoundError
error
The specified membership ID does not exist in the RaidHub database
403 - PlayerPrivateProfileError
error
The player’s profile is private and requires authentication to access

Example Error Response

{
  "error": true,
  "code": "PlayerNotFoundError",
  "message": "Player not found",
  "membershipId": "4611686018484930134"
}

Best Practices

Use Basic Endpoint

Use /basic instead of /profile when you only need player information, not stats

Implement Caching

Cache player data appropriately - basic info changes infrequently

Handle Pagination

Always implement cursor pagination properly for activity history

Check Privacy

Handle private profile errors gracefully in your application

Instance Data

Get detailed information about specific raid instances

Leaderboards

Access global and raid-specific leaderboards

Build docs developers (and LLMs) love