diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
index d940b9a5f..58ca8fd75 100644
--- src/bp-members/bp-members-functions.php
+++ src/bp-members/bp-members-functions.php
@@ -233,6 +233,90 @@ function bp_core_get_core_userdata( $user_id = 0 ) {
 	return apply_filters( 'bp_core_get_core_userdata', $userdata );
 }
 
+/**
+ * Fetch BuddyPress extra data for a user.
+ *
+ * @since 7.0.0
+ *
+ * @param int    $user_id         The BP Member ID.
+ * @param bool   $populate_extras True to fetch BP extra data. False otherwise.
+ *                                Default `true`.
+ * @param string $context         How to sanitize user fields. Looks for 'raw', 'edit', 'db', 'display',
+ *                                'attribute' and 'js'. Default 'raw'.
+ * @return WP_User                The user object extended with BuddyPress extra data.
+ */
+function bp_members_get_userdata( $user_id = 0, $populate_extras = true, $context = 'raw' ) {
+	if ( ! $user_id ) {
+		return false;
+	}
+
+	if ( ! $populate_extras ) {
+		return bp_core_get_core_userdata( $user_id );
+	}
+
+	$userdata = get_user_by( 'ID', (int) $user_id );
+
+	if ( ! isset( $userdata->ID ) || ! $userdata->ID ) {
+		return false;
+	}
+
+	// The BP_Core_User is using the deprecated `id` property of the WP_User object.
+	$bp_member = new stdClass();
+	foreach ( get_object_vars( $userdata ) as $key => $data ) {
+		$bp_member->{$key} = $data;
+	}
+
+	$bp_member->id = $bp_member->ID;
+
+	$paged_users = array( $bp_member );
+	$user_ids    = array( $bp_member->ID );
+	BP_Core_User::get_user_extras( $paged_users, $user_ids, $type = 'alphabetical' );
+
+	// We only need the first index of the array.
+	$bp_member = reset( $paged_users );
+
+	// Remove the password.
+	unset( $bp_member->data->user_pass );
+
+	// Set the BP User domain.
+	$bp_member->data->user_url = bp_core_get_user_domain( $bp_member->ID, $bp_member->data->user_nicename, $bp_member->data->user_login );
+
+	$user = new WP_User( $bp_member->data );
+	$user->filter = $context;
+
+	foreach ( array_keys( get_object_vars( $user->data ) ) as $wp_prop ) {
+		$bp_member->data->{$wp_prop} = $user->{$wp_prop};
+	}
+
+	// Remove unnecessary data.
+	$bp_data = array_diff_key(
+		get_object_vars( $bp_member ),
+		array(
+			'ID'      => false,
+			'data'    => false,
+			'filter'  => false,
+			'roles'   => false,
+			'caps'    => false,
+			'cap_key' => false,
+		)
+	);
+
+	// Include data specific to BuddyPress.
+	foreach ( array_keys( $bp_data ) as $bp_prop ) {
+		$bp_member->data->{$bp_prop} = $bp_member->{$bp_prop};
+	}
+
+	/**
+	 * Filter here to add other extra data for the member.
+	 *
+	 * @since 7.0.0
+	 *
+	 * @param object  $data The user data including the data specific to BuddyPress.
+	 * @param WP_User $user The WordPress user object.
+	 */
+	return apply_filters( 'bp_members_get_userdata', $bp_member->data, $user );
+}
+
 /**
  * Return the ID of a user, based on user_login.
  *
diff --git tests/phpunit/testcases/members/functions.php tests/phpunit/testcases/members/functions.php
index b19936744..21ef0f685 100644
--- tests/phpunit/testcases/members/functions.php
+++ tests/phpunit/testcases/members/functions.php
@@ -743,4 +743,34 @@ class BP_Tests_Members_Functions extends BP_UnitTestCase {
 		$user = get_userdata( $user_id );
 		$this->assertNotEmpty( $user->roles );
 	}
+
+	/**
+	 * @group bp_members_get_userdata
+	 */
+	public function test_bp_members_get_userdata() {
+		$current_user = get_current_user_id();
+
+		$u1 = self::factory()->user->create();
+		$u2 = self::factory()->user->create();
+
+		$this->set_current_user( $u1 );
+
+		$a1 = bp_activity_post_update( array(
+			'type'          => 'activity_update',
+			'user_id'       => $u1,
+			'content'       => 'foo bar',
+		) );
+
+		friends_add_friend( $u1, $u2, true );
+
+		$member = bp_members_get_userdata( $u1 );
+
+		$this->assertEquals( 1, $member->total_friend_count );
+		$this->assertEquals( bp_get_user_last_activity( $u1 ), $member->last_activity );
+
+		$activity = maybe_unserialize( $member->latest_update );
+		$this->assertEquals( $activity['id'], $a1 );
+
+		$this->set_current_user( $current_user );
+	}
 }
